Skip to main content
Substrate is operated entirely from the command line. Every command works against the .substrate/ directory in your current working directory — there is no global registry and no --project flag. Run substrate --help to see the version on its first line. Running substrate with no subcommand is an alias for substrate serve.

Usage

Command Groups

Setting Up

init

Create a .substrate/ in the current directory, optionally seeded from a template.

add

Apply a shared template into an existing .substrate/. Dry-run by default.

install-skill

Refresh the packaged agent skill in ~/.claude/skills/.

Running

mcp

Start the stdio MCP server. Spawned by agent runtimes.

serve

Start the localhost read-only web inspector.

The Human Channel

pending-approval

List every task waiting on a human sign-off.

approve

Set a human_only field on a task.

unapprove

Revoke a mistaken approval.

Data and Diagnostics

backup

Timestamped archive into .substrate/backups/.

export / import

Move a whole substrate as a .tar.gz.

validate

Lint boards and policies without a server. CI-friendly.

diagnose

Environment and substrate health.

logs

Recent lines from the persistent log.

explain

Self-contained HTML map of the substrate.

Global Behaviour

Working directory is the addressing scheme. Every command operates on the .substrate/ in the directory it runs from. There is no --project flag and no global registry. That rule is also how you point a process at another checkout — see Worktrees and Clones. Unknown flags are rejected per command, rather than silently ignored. Network: none. No Substrate command fetches anything — including add and init --template. Templates are always local directories.

Exit Codes