Workspace stuck in "Booting environment" with no error feedback
Problem
When a workspace fails to start, the UI shows "Booting environment" indefinitely with no explanation of what's going wrong. Users have zero visibility into:
- Whether the worker image exists
- Whether the container was successfully spawned
- Whether the sandbox server started inside the worker
- Why booting is stuck / failed
The only way to diagnose the issue is to manually check Docker logs on the host machine.
Reproduction
- Start a workspace (e.g., "Set up the Zoo-Code environment")
- UI shows "Booting environment"
- After some time, it transitions to "Failed to start" with only:
- A generic error message: "There was an error starting this environment:"
- The raw
docker run command that failed
- No explanation of why the command failed
Example Error (from logs)
Unable to find image 'roomote-worker:local' locally
docker: Error response from daemon: pull access denied for roomote-worker, repository does not exist or may require 'docker login'
Or inside a spawned worker container:
❌ Job <unknown> failed: fetch failed
What the user sees vs what's happening
| Layer |
Actual State |
User Visibility |
| Worker image missing |
pull access denied |
❌ No — only "Booting" |
| Controller spawns worker |
✅ Success (12.5s) |
❌ No feedback |
| Sandbox server starts |
❌ fetch failed inside container |
❌ User can't see this |
| UI state |
⏳ Stuck on "Booting environment" |
✅ Visible but unhelpful |
Debugging requires manual Docker inspection
To find the real cause, a user needs to run:
# Check controller logs for spawn errors
docker logs roomote-controller-1 --tail 50
# Check if worker image exists
docker images | grep roomote-worker
# List stopped worker containers
docker ps -a | grep roomote-worker
# Read worker container logs
docker logs roomote-worker-XXX
# Check sandbox server process inside worker
docker exec roomote-worker-XXX ps aux
Suggested Improvements
- Show booting progress — Display stages: "Pulling image" → "Starting container" → "Initializing sandbox" with status for each
- Surface errors to UI — When controller detects
pull access denied, fetch failed, etc., show the actual error message in the UI instead of raw docker command output
- Timeout + retry info — If booting takes longer than X seconds, show "Still booting... (elapsed: XXs)" with a reason if available
- One-click diagnostics — A button that runs
docker logs roomote-controller-1 --tail 50 and shows the output inline
Environment
- Roomote version: v0.12.0 (self-hosted, built from source)
- Docker images:
roomote-app:local-self-host, roomote-worker:local
- Platform: Windows host with WSL / Docker Desktop
Workspace stuck in "Booting environment" with no error feedback
Problem
When a workspace fails to start, the UI shows "Booting environment" indefinitely with no explanation of what's going wrong. Users have zero visibility into:
The only way to diagnose the issue is to manually check Docker logs on the host machine.
Reproduction
docker runcommand that failedExample Error (from logs)
Or inside a spawned worker container:
What the user sees vs what's happening
pull access deniedfetch failedinside containerDebugging requires manual Docker inspection
To find the real cause, a user needs to run:
Suggested Improvements
pull access denied,fetch failed, etc., show the actual error message in the UI instead of raw docker command outputdocker logs roomote-controller-1 --tail 50and shows the output inlineEnvironment
roomote-app:local-self-host,roomote-worker:local