Environment setup
Orchard needs Node 22+/pnpm for workflow code. There is no database or external service to provision: orchard run executes workflows in-process with createLocalRuntime().
| Need | Tool | Check |
|---|---|---|
| Package install | pnpm install on Node 22+ | node --version && pnpm --version |
| Repo config | pnpm exec orchard init | .orchard/config.json |
| Readiness | pnpm exec orchard doctor --json | reports tooling + config readiness |
| Harness CLI (optional) | cursor-agent, codex, claude, or devin on PATH | reported by orchard doctor |
orchard init writes repo-local config. orchard doctor is read-only: it checks Node/pnpm, optional harness CLIs, and .orchard/config.json. There is no database, schema, or queue setup step.
The generated .orchard/config.json is intentionally local and ignored. It contains cwd-derived queue names that are part of the generated-artifact contract; each worktree should create its own copy.
Install from a local Orchard checkout
For normal development inside this repository, run pnpm install at the Orchard repo root. To dogfood Orchard from a separate temporary project before it is published, build the checkout and install both local packages by path:
cd /path/to/orchard
pnpm build
cd /tmp/mock-repo
pnpm add -D /path/to/orchard/packages/core /path/to/orchard/packages/cli@snevins/orchard-cli provides the orchard binary. Generated artifacts import @snevins/orchard-core, so the mock repo needs that package too when installing from unpublished local package paths.
This links the local checkout into the mock repo, so command shims may rebuild the source checkout if its dist/ output is missing or stale. If the original checkout must remain untouched during dogfood, clone or copy it to /tmp first and install from that temporary copy.
Initialize this directory
pnpm exec orchard initCheck readiness
pnpm exec orchard doctor --jsondoctor --json emits structured readiness JSON: toolingOk, configOk, and a runtime check line stating that there is no database, schema, or queue to provision. Missing optional harness CLIs are reported as hints, not failures; missing .orchard/config.json is reported as configOk: false with a orchard init hint.
Multiple directories at once
Run orchard init in each repo or worktree. Each directory receives a distinct queueNamespace recorded in its own .orchard/config.json. This only matters for the generated-artifact contract now: every orchard run invocation is an independent in-process runtime, so directories cannot collide with each other's tasks regardless of queue names.