Skip to main content
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

asymmetric status [options]
asymmetric 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).
asymmetric status
slack-a1b2	slack	api	running	workspace-1
slack-c3d4	slack	full	stopped	workspace-1
Empty registry:
No clones. See what you can spin:  asymmetric ls --templates
For environments specifically, use asymmetric env status.

Options

OptionDescription
--jsonOutput the raw registry (clones + environments) as JSON.
asymmetric status --json | jq '.clones[].id'

logs

asymmetric logs <id> [options]
Streams a clone’s container logs to stdout.

Options

OptionDescription
-f, --followKeep streaming new lines.
-s, --service <name>Only this service (e.g. backend).
-n, --tail <n>Limit to the last N lines.
asymmetric logs slack-a1b2 -f --service backend --tail 100
ErrorCause
CLONE_NOT_FOUNDNo clone with that id.

doctor

asymmetric 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.
asymmetric doctor
home:    /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 `asymmetric 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

OptionDescription
--jsonOutput the report as JSON.
--fixPrune orphaned entries, correct drifted states, reconcile environments.
--reap-orphansDestructive. 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.