Docs menu
Docs The CLI
The CLI
Every capabilities hub command and the milestone that brings it, plus the census and stack commands that exist in the repository today.
One binary, capabilities, holds three surfaces. capabilities hub runs the hub and is planned for M1. The census commands and the capabilities stack preview exist in the repository today, but the CLI is private and unreleased.
capabilities hub
Setup
| Command | What it does | Arrives |
|---|---|---|
init [--import] |
Create the hub; with --import, run the importer too |
M1 |
import [--from <harness>…] |
Read harness configs and propose sources and credentials | M1 |
add <ref> [--namespace <name>] |
Add one source from a URL or a stdio command line | M1 |
list |
List sources | M1 |
remove <namespace> |
Remove a source | M1 |
refresh [namespace] |
Re-read tool lists and detect tools that changed upstream | M1 |
review |
Decide new and changed tools | M1 |
connect [--client …] [--replace] |
Point your harnesses at the hub | M1 |
disconnect |
Undo connect |
M1 |
Credentials and access
| Command | What it does | Arrives |
|---|---|---|
connections <namespace> |
List a source's connections | M1 |
auth <namespace> [--connection <name>] |
Enter a credential at a masked prompt | M1 |
policy … |
Edit policy rules | Later |
profiles … |
Manage profiles beyond default |
Later |
Serving and running
| Command | What it does | Arrives |
|---|---|---|
serve --stdio |
Serve the MCP endpoint to a harness | M1 |
serve --http [--port <n>] |
Serve on loopback for clients that prefer HTTP | M1 |
call <address> '<json>' |
Call one tool from the terminal | M1 |
exec '<code>' |
Run code from the terminal | M1 |
runs [--status <s>], runs show <id> |
List runs, or show one | M1 |
approve <runId> |
Decide a pending call and resume the run | M1 |
cancel <runId> |
Cancel a run | M1 |
doctor |
Diagnose sources, the store and the keychain | M1 |
serve --stdio is what harness configs launch: each harness session gets its own process, and all of them share the store under ~/.capabilities/hub/. serve --http binds only to loopback, on port 4790 by default, and requires the bearer token in ~/.capabilities/hub/http-token (mode 600). In M1, --profile accepts only default.
Hosted
| Command | What it does | Arrives |
|---|---|---|
login |
Sign in to the hosted hub | Later, M3 |
push [--secrets] |
Send your local configuration to the hosted hub | Later, M3 |
status |
Show the hosted hub's state | Later, M3 |
push sends sources, policies, profiles, skill files and connection metadata, never secret values, unless you pass --secrets and consent to each one. The server answers with a plan and its hash, and applying needs that hash.
Where the hub keeps its files
~/.capabilities/hub/ mode 700; every file 600
hub.json settings, schema version, hub id
sources/ manifests/ connections/ policies/ profiles/ skills/
runs/<id>.json one record per run
runs/<id>.journal.jsonl append-only journal of the run's calls
blobs/ locks/
http-token bearer token for serve --httpWrites go to a temporary file, are synced, and are renamed into place. Several serve --stdio processes share the store through per-record lock files, not a daemon.
The CLI today
These commands exist in the repository and run from a checkout build. They manage capabilities across your coding agents, and the hub builds on them.
| Command | What it does |
|---|---|
capabilities list |
Show installed capabilities |
capabilities doctor |
Check for missing secrets and broken client configs |
capabilities rollback |
Restore client configs from the last snapshot |
capabilities login |
Sign in with GitHub (device flow) |
capabilities stack init |
Link the stack repository that syncs your capabilities |
capabilities stack push |
Commit your stack and push it to the stack repository |
capabilities stack pull |
Apply the stack repository's capabilities to this machine |
capabilities stack install <slug> |
Install a capability into your coding agents |
capabilities stack uninstall <ref> |
Remove a capability from your clients and the lock |
Two global options go before the command: --registry <dir|url> and --no-input. Secret values never enter the lockfile. They are read from your shell environment, then the OS keychain, then ~/.capabilities/.env.
pnpm --filter capabilities dev --help
pnpm --filter capabilities dev list
pnpm --filter capabilities dev doctorUpdated 2026-11-06