Arche defaults to Bun for installs and scripts. pnpm is first-class on routes where the verification matrix records pnpm: yes (today: typescript-fullstack). npm is experimental—use only when testing compatibility.
At scaffold time
bun run dev:cli -- my-app --yes --preset=typescript-fullstack --dir=../projects
The CLI writes:
- Bun:
package.json→workspaces.catalog - pnpm:
pnpm-workspace.yaml→catalog:
Shared versions come from toolings/catalog/workspace-catalog.json in the template and are replayed into generated repos.
After scaffold
Use the package manager you selected—do not mix lockfiles without intent.
# Bun generated project
bun install
bun run ci
# pnpm generated project (when enabled)
pnpm install
pnpm run ciGenerated AGENTS.md lists the exact scripts for that tree.
Preset support
Check the verification matrix—if pnpm is — for your preset, assume Bun unless you have verified output yourself.
This source repository
Developing Arche itself always uses Bun at the repo root. Commands on This source repository apply here—not inside every generated app.
Policy summary
| Manager | Role |
|---|---|
| Bun | Default for new scaffolds and this template repo |
| pnpm | Supported on verified presets; catalog parity with Bun |
| npm | Experimental; not the stability target |