Help
Troubleshooting
Resolve common Docker, build, token, gateway, network, session, and export failures.
On this page+−
Docker is unreachable
If the launcher or image listing reports a Docker connection error, verify the daemon from the same shell and inspect DOCKER_HOST. The provider uses the Docker Engine API and honors that endpoint.
docker info
printf '%s\n' "${DOCKER_HOST:-<default Docker endpoint>}"
sandbox-manager-cli list_docker_imagesStart Docker Desktop or the system daemon, then rerun image listing before attempting sandbox creation.
Gateway will not start
Run the launcher in the foreground long enough to read its explicit error. It builds host binaries, verifies the packaged daemon, checks both Git toolchain archives, and only then starts the background gateway.
start-sandbox-docker-gateway --rebuild-binary
tail -n 100 "${SANDBOX_GATEWAY_LOG:-/tmp/eos-gateway.log}"A missing dist/sandbox-daemon-linux-* artifact can be repaired with cargo run -p xtask -- package. If dist/git/linux-arm64.tar or dist/git/linux-amd64.tar is missing, stop: the repository currently has no documented source-owned generation command for those archives.
Clients cannot authenticate
Repository wrappers read the private token file and export the credential. Confirm the file path and use the wrappers from bin; do not copy the token into YAML or browser code.
export PATH="$PWD/bin:$PATH"
sandbox-gateway-token path
ls -l "$(sandbox-gateway-token path)"
sandbox-manager-cli list_sandboxesIf you intentionally set SANDBOX_GATEWAY_AUTH_TOKEN, it must match the configured token file. Also confirm that SANDBOX_GATEWAY_SOCKET names the same gateway that created that token.
Sandbox creation fails
Verify the image reference and workspace through the same public discovery operations used by the console. A configured manager.workspace_roots allowlist rejects roots outside its absolute entries.
sandbox-manager-cli list_docker_images
sandbox-manager-cli list_workspace_directories
sandbox-manager-cli create_sandbox --image ubuntu:24.04 --workspace-bind-root /absolute/workspaceIf creation leaves a record, inspect it before destroying it. The lifecycle state and error are more useful than retrying blindly.
sandbox-manager-cli list_sandboxes
sandbox-manager-cli inspect_sandbox --sandbox-id eos-abc
sandbox-manager-cli destroy_sandbox --sandbox-id eos-abcCommands or network fail
First separate shell failure from connectivity. Run a local command, then inspect the sandbox snapshot and recent domain events. The checked production config permits RFC1918 egress and injects Docker Desktop HTTP proxy variables; a local override may replace either policy.
sandbox-runtime-cli --sandbox-id eos-abc exec_command "id && pwd"
sandbox-observability-cli snapshot --sandbox-id eos-abc
sandbox-observability-cli events --sandbox-id eos-abc --last-n 30Commands cannot see paths masked by runner.mount_mask.hidden_paths; /eos is hidden in the baseline. Review Configuration before changing network or mount policy.
Sessions or publication stall
Use observability instead of internal lifecycle routes. The last trace shows operation timing, while LayerStack and cgroup queries expose leases, bookings, disk use, and resource pressure.
sandbox-observability-cli trace --sandbox-id eos-abc --trace-id last
sandbox-observability-cli layerstack --sandbox-id eos-abc --window-ms 60000
sandbox-observability-cli cgroup --sandbox-id eos-abc --window-ms 60000A publication conflict rejects the candidate rather than overwriting newer durable state. Read the latest snapshot and rerun the intended change from a fresh automatic session; see Capture and conflicts.
Export fails
The destination must be absolute. Directory format applies the delta into a directory; tar and tar-zst expect archive paths. Only published layers are exported.
sandbox-manager-cli export_changes --sandbox-id eos-abc --dest /tmp/sandbox-delta.tar --format tarIf expected files are absent, verify them with file_read before export. Do not call internal LayerStack export or chunk operations directly.
Console will not open
Start the supported stack, then check the loopback catalog and the console log. The default listener is 127.0.0.1:7880 and the default log is /tmp/eos-console.log.
start-sandbox-console-stack
curl --fail http://127.0.0.1:7880/api/catalog
tail -n 100 "${SANDBOX_CONSOLE_LOG:-/tmp/eos-console.log}"A 401 or 502 from an API route usually means the console and gateway disagree about the endpoint or token. A 404 from a direct daemon path may be correct: only health, preview forwarding, and POST /files/list are in the daemon HTTP allowlist. See the daemon HTTP boundary.
