inspect — status, logs, doctor
See what clones exist, what they're doing, and whether the registry is healthy.
Three read verbs for observing your clones. status reads the registry only (no
Docker needed); doctor reconciles it against Docker; logs streams from the
container.
status
hone env status [options]
hone env ls [options]Lists every clone from the registry, one tab-separated line each: id, template,
mode, state, and its environment (derived from
membership, - if none).
hone env statusslack-a1b2 slack api running workspace-1
slack-c3d4 slack full stopped workspace-1Empty registry:
No clones. See what you can spin: hone env ls --templatesFor environments specifically, use hone env status.
Options
| Option | Description |
|---|---|
--json | Output the raw registry (clones + environments) as JSON. |
hone env status --json | jq '.clones[].id'logs
hone env logs <id> [options]Streams a clone's container logs to stdout.
Options
| Option | Description |
|---|---|
-f, --follow | Keep streaming new lines. |
-s, --service <name> | Only this service (e.g. backend). |
-n, --tail <n> | Limit to the last N lines. |
hone env logs slack-a1b2 -f --service backend --tail 100| Error | Cause |
|---|---|
CLONE_NOT_FOUND | No clone with that id. |
doctor
hone env doctor [options]Reconciles the registry against Docker and reports: where state lives, whether
Docker and the shared Postgres are up, counts of clones and environments, and a
per-clone reconciliation (recorded state vs what Docker actually reports). It also
surfaces orphan containers — containers labeled asym.clone=<id> that the
registry has never heard of (a spin killed mid-flight). --fix prunes orphaned
registry entries, corrects drifted states, and reconciles environment states.
hone env doctorhome: /Users/you/.asymmetric (local)
docker: available
shared: postgres up
clones: 2 environments: 1
slack-a1b2 slack recorded=running actual=running ✓
slack-c3d4 slack recorded=running actual=stopped ⚠ drift
1 issue(s). Run `hone env doctor --fix` to repair.A clone whose containers vanished outside the CLI shows ✗ orphaned; an orphan
container with no registry entry is listed separately. doctor exits non-zero
when issues remain, so it's useful in CI.
Plain --fix deliberately leaves orphan containers alone (reaping them is
destructive), so they still count as issues in CI. To also remove those
containers and drop their databases, add --reap-orphans — it requires
--fix and errors (exit 1) if passed without it.
Options
| Option | Description |
|---|---|
--json | Output the report as JSON. |
--fix | Prune orphaned entries, correct drifted states, reconcile environments. |
--reap-orphans | Destructive. With --fix, also remove orphan containers and DROP their databases. |
{
"home": "local",
"registryVersion": 2,
"cloneCount": 2,
"environmentCount": 1,
"dockerAvailable": true,
"sharedInfra": "up",
"clones": [
{ "id": "slack-a1b2", "template": "slack", "recordedState": "running", "actualState": "running", "drift": false, "orphaned": false }
],
"orphanContainers": [],
"fixed": 0,
"dir": "/Users/you/.asymmetric"
}Run doctor first whenever something looks off — it's read-only without --fix
and tells you exactly where the registry and Docker disagree.