Tensile Docs
CLI reference

CLI overview

Every hone env command, global behavior, and exit codes.

hone env <command> [args] [options]

Environment commands live under the hone env group of the hone CLI (@asymmetric-ai/hone-cli). The retired standalone bin asym is kept as a deprecated alias — it prints a rename notice, then delegates, so old scripts keep working. Every clone-scoped verb takes a clone id (like slack-a1b2); spin and verify take a template name (like slack).

Six templates ship today — slack, stripe, linear, github, notion, and hubspot. List them anytime with hone env ls --templates.

Commands

CommandWhat it doesStatus
quickstartOne command: spin a Slack clone, seed it, print how to use it.✅
spin <template...>Create and start one or more clones.✅
environment compositionsspin also takes an environment.yaml; status, reset, and destroy also take an environment name — operate on a whole composition of clones as a unit.✅
seed <id>Load fixtures and/or generate AI data.✅
query <id> [sql]Run SQL against a clone (read-only by default).✅
db <id>Print the psql command for a clone's database.✅
tokens <id>Print (or --reprovision) a clone's bot + user API tokens.✅
reset <id>Drop, re-migrate, and re-seed to a clean state.✅
start <id>Start a stopped clone.✅
stop <id>Stop a clone, keep its data.✅
destroy <id>Tear down containers, drop db, free ports.✅
statusList clones (alias ls); ls --templates lists what you can spin.✅
logs <id>Stream a clone's container logs.✅
doctorReconcile the registry against Docker (--fix to repair).✅
verify <template>Inspect a template's live API surface + cached fidelity.✅
completionPrint a shell completion script.✅
loginConnect to a control plane (cloud mode). Local needs no login.🚧 Cloud mode planned

All commands above are invoked as hone env <command>. --json is available on spin, seed, status/ls, query, db, tokens, verify, and doctor (including their environment-composition forms) for scripting.

Global behavior

One id, every command. Clone-scoped verbs fail fast with CLONE_NOT_FOUND if the id isn't in your registry, and point you to hone env status.

Errors are sentences, not stacks. Every failure is a named error rendered as one actionable line — e.g. "Docker isn't running. Start it, then retry. (hone env doctor)"

Exit codes:

CodeMeaning
0Success.
1A known, user-actionable error (a named AsymmetricError), or a per-template failure during spin.
2Bad invocation (e.g. query with no SQL, or --json + --write), or an unexpected failure.

State location. All state is under ~/.asymmetric/ (override with ASYM_HOME). See the registry.

A typical session

hone env spin slack --seed acme-corp   # create + seed in one step
hone env status                         # confirm it's running
hone env query slack-a1b2 "select count(*) from messages"
# ... point your agent at the endpoint ...
hone env query slack-a1b2 "select * from messages" --json   # score the run
hone env reset slack-a1b2               # back to clean, for the next trial
hone env destroy slack-a1b2             # done

On this page