Troubleshooting

Start with the doctor

One command inside the agent-server container checks each thing that can be wrong and prints the real reason.

podman compose exec agent-server python -m disco.agent_server.doctor
# docker compose exec agent-server python -m disco.agent_server.doctor
PASS config        build v0.2.0 (3f9c1a2) (image); 14 DISCO_* variables set
PASS agent-server  ok, version v0.2.0 (3f9c1a2)
PASS app-server    ok, version v0.2.0 (3f9c1a2)
FAIL sandbox       podman: podman sandbox host unix:///var/run/docker.sock unreachable: [Errno 2] No such file or directory
PASS data disk     41.2 GB free at /data
PASS database      /data/disco.db: quick_check ok, 18342 events, 61 MB
PASS secret key    DISCO_SECRET_KEY set
PASS driver model  config PASS | completion PASS | tool-calling PASS

1 check(s) FAILED

The process exits non-zero when a check fails. --no-model skips the driver-model check (it calls your model once); --app-url points the app-server check at a split deployment; --bundle PATH also writes the support bundle.

Reading logs

podman compose logs -f agent-server      # the loop, providers, sandbox
podman compose logs -f app-server        # settings, auth, pairing, quotas
podman compose logs --since 10m frontend

DISCO_LOG_LEVEL=DEBUG in .env raises both Python servers; DISCO_LOG_JSON=1 emits one JSON object per line. Logs are bounded at 20 MB per service and are gone after compose down, so copy what you need first.

Common failures, by message

You seeCauseFix
podman sandbox host unix:///var/run/docker.sock unreachableThe rootless Podman socket is not enabled or not mountedsystemctl --user enable --now podman.socket, export DISCO_SANDBOX_SOCKET=$XDG_RUNTIME_DIR/podman/podman.sock, podman compose up -d again
image "disco-sandbox:base" is not present on the hostThe sandbox-image service did not runpodman compose up -d sandbox-image; for a source build add -f compose.build.yaml --build
Error: invalid port formatpodman-compose 1.3.x cannot expand the compose file’s defaultsInstall docker-compose (Compose v2) as the provider
Provider Test fails connecting to host.docker.internalRootless Docker has no route from that name back to the hostUse the host’s LAN IP and bind the model server to 0.0.0.0
The browser asks for a pairing tokenThe UI is opened from another machine, or a proxy sits in frontpodman compose exec app-server python -m disco.app_server.pairing_cli
A Build never uses tools; doctor says tool-calling FAILThe driver model cannot emit tool callsPick a model that does; the doctor quotes the provider’s error
agent-server health degraded with store: errorThe database is unreadable or the volume is fullThe doctor’s disk and database lines say which; free space or restore a backup
A run sits at RUNNING for a long timeThe model is slow, or it is verifying repeatedlyThe run’s Checks section shows what it re-ran; DISCO_INSPECT=1 gives per-turn model timing
Settings say a key is saved but runs fail authThe encrypted-settings key changed between restartsSet DISCO_SECRET_KEY; the doctor warns when none is set

Which build am I running?

curl -s http://127.0.0.1:8000/health | python3 -m json.tool      # agent-server
curl -s http://127.0.0.1:8800/api/health | python3 -m json.tool  # app-server

Both return version (tag and commit) and build. Release images carry both; a local build from a checkout says unknown unless you export DISCO_BUILD_TAG and DISCO_BUILD_COMMIT first.

Reference: docs/troubleshooting.md in the repository is the versioned copy of this page.