Tooling & Workspace
Tooling is Putnami's control plane inside your repository. It discovers projects, builds the dependency graph, runs jobs, manages templates, and gives humans and automation one command surface.
The promise: if the workspace can explain what changed, Putnami can run only the work that matters.
Start with the problem you have
| You want to... | Read first | What you get |
|---|---|---|
| Understand the repo model | Workspace | Projects, scopes, graph edges, and the --impacted model |
| Use Putnami day to day | CLI | Commands, flags, aliases, JSONL output, shell completion |
| Make feedback loops fast | Jobs & caching | Job orchestration, cache keys, dependencies, watch mode |
| Add language or platform support | Extensions | Discovery, extension manifests, JSONL protocol, custom jobs |
| Start a project correctly | Templates | Scaffolded services, libraries, and reusable project shapes |
| Debug failed automation | Error handling | Diagnostics, retries, exit codes, machine-readable failures |
The mental model
Putnami tooling is three layers working together:
- Workspace graph - the source of truth for projects, dependencies, scopes, and impacted work.
- Job runner - the execution engine for
build,test,lint,serve,publish, and compound commands. - Extension protocol - the pluggable boundary where TypeScript, Go, Python, CI, and custom tools add capabilities.
This is why the same command can work locally, in CI, and inside an agent session:
putnami lint,test,build --impacted
putnami serve my-app
putnami projects create api --template go-serverWhat belongs in this surface
Use Tooling & Workspace when the question is about how the repository operates:
- how projects are discovered and selected
- how impacted work is calculated
- how command output is structured for humans and machines
- how cache keys, inputs, and outputs are defined
- how templates produce consistent project shapes
- how extensions make Putnami polyglot without turning the CLI into a language-specific tool
If the question is about how to write an application, jump to TypeScript, Go, or Python. If the question is about delivery, publishing, or branch environments, start with Platform / CI.