Skip to main content
Version: 0.9.0

The kiln.sh CLI

kiln.sh is one entrypoint for every Kiln command-line task — running and developing Kiln itself, generating a system from a business model, and running the generated system. It wraps the underlying npm / node / docker incantations so you don't have to remember them.

./kiln.sh <command> [args] # run a command
./kiln.sh help # show every command
./kiln.sh doctor # check your environment is ready

Nothing here is magic: every command prints the underlying invocation it runs, so you can always see (and copy) the real npm / node / docker call behind it.

The commands fall into three groups — Designer (run and develop Kiln itself), Model (generate a system from a business model), and App (run a generated system) — plus a few optional extras.

Getting started

CommandWhat it does
installInstall dependencies (links the npm workspaces; offline).
doctorCheck the environment (node, .env + key, docker, git).

Designer — run & develop Kiln

CommandWhat it does
devRun the service (:8787) and the web app (:5188) together. Ctrl-C stops both.
stopStop any running dev processes + free ports :8787 / :5188 (clears stale servers).
webRun only the web app → http://localhost:5188.
serviceRun only the API service → http://localhost:8787 (holds the Anthropic key).
testRun the package test suite (node --test).
buildProduction-build the web app.
typecheckType-check with tsc (via npx; @types are intentionally not vendored).
checkThe pre-commit gate: test + build (what CLAUDE.md requires before a commit).
promptsRebuild the bundled LLM prompts (packages/skills).

Model — generate a system from a business model

CommandWhat it does
export [flags]Project the model → a complete multi-backend repo in ./out/targets.

Flags are passed straight through to the exporter. Common ones:

FlagEffect
--sqliteEmbedded SQLite store (single-container app).
--enrich [depth]Thicken the model first (conservative | standard | exhaustive).
--model <path>A model.json (default: the baked solar example).
--out <dir>Output directory (default: ./out/targets).
--since <old-model>Emit an incremental migration vs a deployed model.
--no-gitSkip the initial git commit in the output.
./kiln.sh export
./kiln.sh export --sqlite --enrich standard
./kiln.sh export --model ./my-business.json --out ./build

App — run a generated system

These operate on ./out/targets, or a directory you pass.

CommandWhat it does
app:up [dir]docker compose up -d + apply the schema (Postgres/SQLite + n8n + Odoo + spine + UI).
app:down [dir]Tear the stack down.
app:ui [dir]Run the generated UI on the host (Vite dev server, live reload).
app:spine [dir]Run the generated command API on the host.
app:logs [dir]Follow the docker compose logs.

Alternative AI engines

Optional — Anthropic is the default; OpenRouter needs only a key.

CommandWhat it does
omniroute:upRun the self-hosted omniroute AI gateway as a sidecar (via npx, MIT). Prints next steps.
omniroute:downStop it.

See Choosing an engine for the full picture.

Connectors — a local Nango

Optional convenience; not required. Connectors broker agent OAuth through Nango. Kiln and every exported app reach whichever Nango you set via NANGO_HOST + NANGO_SECRET_KEY — three equal options: Nango Cloud, an existing company Nango, or the local helper below.

CommandWhat it does
nango:upBoot a local Nango (OAuth broker) via docker compose, generate NANGO_ENCRYPTION_KEY if absent, and print setup steps.
nango:downStop it (volumes kept — it does not delete connections).

nango:up is a developer convenience only; it is never the required posture. See Agent tool connectors for the end-to-end setup.

Verify sandbox

CommandWhat it does
verify:upBuild + start the Docker verifier (lets the app build / run / smoke-test generated apps).

Run ./kiln.sh doctor first if anything misbehaves.