> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getasym.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 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

```bash theme={null}
asymmetric status [options]
asymmetric ls [options]
```

Lists every clone from the registry, one tab-separated line each: id, template,
mode, state, and its [environment](/concepts/environments) (derived from
membership, `-` if none).

```bash theme={null}
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`](/cli/environments#env-status).

### Options

| Option   | Description                                              |
| -------- | -------------------------------------------------------- |
| `--json` | Output the raw registry (clones + environments) as JSON. |

```bash theme={null}
asymmetric status --json | jq '.clones[].id'
```

## logs

```bash theme={null}
asymmetric 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.          |

```bash theme={null}
asymmetric logs slack-a1b2 -f --service backend --tail 100
```

| Error             | Cause                  |
| ----------------- | ---------------------- |
| `CLONE_NOT_FOUND` | No clone with that id. |

## doctor

```bash theme={null}
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.

```bash theme={null}
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

| 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. |

```json theme={null}
{
  "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.
