pulumi/pulumi
By the numbers
Data collected on 2026-04-30 from the master branch at commit caf13d6d14.
Size
xychart-beta horizontal
title "Lines of code by language"
x-axis ["Go", "Python", "TypeScript"]
y-axis "Lines" 0 --> 220000
bar [201568, 147029, 144577]| Language | Files | Lines |
|---|---|---|
| Go | 4,282 | 201,568 |
| Python | 3,706 | 147,029 |
| TypeScript | 2,593 | 144,577 |
| Protobuf | 18 | (services + messages) |
Numbers are produced by find -name "*.<ext>" | wc on the working tree (excludes .git/, node_modules/, etc.). The Python and TypeScript counts are inflated by codegen test fixtures under pkg/codegen/{python,nodejs}/testdata/; raw source code in the SDK proper is smaller.
The largest source files
The engine has a handful of files that carry a disproportionate share of the codebase. New contributors regularly hit them:
| File | Approx size | Role |
|---|---|---|
pkg/resource/deploy/step_generator.go |
~137 KB | Diffs old vs new and emits steps |
pkg/resource/deploy/source_eval.go |
~123 KB | Iterator that pulls events from the language host |
pkg/resource/deploy/step.go |
~88 KB | Step state machine: Same, Create, Update, Delete, Replace, ... |
sdk/go/pulumi/types_builtins.go |
~480 KB (generated) | Output types for every primitive — generated from sdk/go/pulumi/generate/ |
sdk/go/pulumi/context.go |
~103 KB | The Go SDK's resource registration core |
sdk/go/pulumi/resource.go |
~41 KB | Resource interfaces, options, parents, dependencies |
pkg/backend/diy/backend.go |
~52 KB | DIY backend implementation |
pkg/backend/httpstate/backend.go |
~93 KB | Pulumi Cloud backend implementation |
sdk/nodejs/output.ts |
~52 KB | The Node SDK's Output<T> |
sdk/nodejs/resource.ts |
~68 KB | Node SDK resources |
pkg/cmd/pulumi/pulumi.go |
~33 KB | Top-level CLI command tree |
Activity
- Total commits: 15,092 (since 2016-10-08)
- Tags / releases: 1,401
- Latest tag: v3.233.0 (followed by a freeze for v2.233.0)
- Commits in the last 90 days: 612
- Unique authors all-time: 438
Top contributors in the last 6 months
(Excludes bot accounts. Pulled from git log --since="6 months ago".)
| Contributor | Commits |
|---|---|
| Ian Wahbe | 190 |
| Thomas Gummerer | 181 |
| Julien (Bisconti) | 169 |
| Fraser Ashyggton | 133 |
| Tom Harding | 46 |
| Justin Van Patten | 31 |
| Fraser Waters | 28 |
| Tom 🐈⬛ | 27 |
Bot-attributed work
In the last 90 days, 134 commits (≈ 22% of merged commits) carry a Co-authored-by: trailer. Counted bots and tooling include pulumi-renovate[bot] (43 commits in 6 months) and Pulumi Bot (30 commits). This is a lower bound on AI- or automation-assisted work — inline AI tools and developer-side scripts leave no trace in the trailer.
Test ratio
- Total Go files: 4,282
*_test.gofiles: ~1,300 (a third of Go source)- Largest test surface:
pkg/engine/lifecycletest/(deployment property/fuzz tests) andpkg/codegen/testdata/(golden code-gen fixtures, hundreds of subdirectories per target language)
The pulumi/pulumi test suite is split into "fast" tests (no I/O, no plugins) and "all" tests (which build and link the CLI). Lifecycle fuzz tests run 10,000 Rapid checks per invocation by default — see LIFECYCLE_TEST_FUZZ_CHECKS in the Makefile.
Modules
The repo is a Go workspace of multiple modules, each with its own go.mod:
| Module | Path | Purpose |
|---|---|---|
github.com/pulumi/pulumi/pkg/v3 |
pkg/ |
Engine, CLI, codegen, backends |
github.com/pulumi/pulumi/sdk/v3 |
sdk/ |
Core Go SDK + shared types |
| (tests) | tests/ |
Integration / acceptance tests |
pulumi-language-go |
sdk/go/pulumi-language-go/ |
Go language host |
pulumi-language-nodejs |
sdk/nodejs/cmd/pulumi-language-nodejs/ |
Node language host |
pulumi-language-python |
sdk/python/cmd/pulumi-language-python/ |
Python language host |
pulumi-pcl |
sdk/pcl/ |
PCL host + library |
Languages of user programs supported
| Language | Status | SDK in this repo? |
|---|---|---|
| TypeScript / JavaScript | Stable | Yes — sdk/nodejs/ |
| Python | Stable | Yes — sdk/python/ |
| Go | Stable | Yes — sdk/go/pulumi/ |
| .NET (C# / F# / VB.NET) | Stable | No — separate repo |
| Java | Stable | No — separate repo |
| YAML | Stable | No — separate repo |
See also
- Lore for the timeline behind these numbers.
- Maintainers for who owns what.
- Cleanup opportunities — not generated for this wiki because the project actively prunes dead code.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.