Claude Transcripts docs GitHub
Work in progressUnder active development — not tested as ready for use. Breaking changes land without notice, stored data may need to be discarded between revisions, and there is no auth or security model.

Dev automation

Repo build and dev scripts live in scripts/, run with bun run scripts/<name>.ts or the package.json alias. They are not shipped to users; anything a user needs belongs in the CLI.

Generators

Generated files are committed. bun run gen:all runs every generator below except gen:clients, and CI fails if either leaves a diff. Regenerate; never hand-edit.

AliasScriptWrites, from the blueprint unless noted
gen:clientsregenerate-api-clients.tsopenapi.json + the orval clients in packages/cli/src/api/ and packages/webui/src/api/
gen:hookssync-hooks.tshooks/hooks/hooks.json (events, timeouts, async) from BINDINGS
gen:hook-eventsgen-hook-events.tsdocs/reference/hook-events.md
gen:diagramgen-diagram.tsdocs/assets/architecture{,-light,-dark}.svg
gen:composegen-compose.tsdeploy/docker-compose.yml
gen:compose-overridegen-compose-override.tsdeploy/docker-compose.upstream.yml (public upstream images)
gen:k8sgen-k8s.tsdeploy/k8s/base/ (ADR 0030)
gen:assetsgen-assets.tspackages/cli/src/lib/assets.generated.ts: compose files, garage.toml and the config template, embedded in the binary for install
gen:cli-docsgen-cli-docs.tsthe command sections of packages/cli/README.md and docs/reference/cli.md, from CLI_SPEC
gen:compatregenerate-compatibility.tscompatibility.json (placeholder output, gitignored; compatibility.md)
gen:mockregenerate-mock-fixtures.tssynthetic content for the hook fixtures under tests/mock/ (not in gen:all)

Output must not depend on your local config.json or .env, or CI fails for a reason it can't reproduce: gen-diagram reads config.template.json with an empty environment, and gen-compose emits ${VAR} placeholders rather than resolved values.

API clients

gen:clients emits the spec offline (packages/webapi/src/write-openapi.ts registers the routes without connecting to any store), runs orval over it (orval.config.ts) and formats the output with Biome. Route operationIds name the generated functions. Three settings make the output usable as is:

Architecture diagram

The nodes and edges are declared in packages/shared/src/blueprint/topology.ts; gen-diagram.ts only does layout. architecture.svg follows prefers-color-scheme and is used by the docs; the README uses the light/dark pair inside <picture>, because GitHub's image proxy needs that to switch themes. Third-party marks are inlined from brand/icons/, since an SVG served this way can't fetch anything.

Other scripts

AliasScriptDoesWhere it runs
build:docsbuild-docs.tsRenders docs/ into a static site (build/docs/, --out <dir>). Dependency-free, small GFM subset. Fails on a broken relative link. The section list lives in the script; pages within a section are picked up automatically.CI, pages.yml, the app image (/docs)
check:contractcheck-contract.tsFails on a breaking OpenAPI change (testing.md)CI
—mirror-images.tsCopies the pinned backing-service images to GHCR (ADR 0024)mirror-images.yml
—build-cli-npm.tsBundles the CLI for npmrelease-cli.yml
—release.tsStamps one version into every manifest (releasing.md)local
stack:*stack.tsup/down/restart/logs/ps for the dev stack; --upstream, --build, --applocal
bootstrap:garagebootstrap-garage.tsGarage layout, bucket and app key; writes the key into .envlocal
seedseed.tsCreates missing CouchDB databases and reports buckets (--dry-run)local