Sokko Docs
Devboxes

Troubleshooting

What every devbox state and error code means, and the fix for each one.

Every devbox failure comes with a code, a message, and a hint that names the fix. This page is the long version of those hints.

States

StateMeaning
creatingThe machine is coming up.
emptyUp and healthy, with nothing deployed yet. This is ready, not stuck — deploy a branch.
buildingA deploy is installing dependencies or building images.
startingThe stack is booting; Sokko is waiting for the port to answer.
runningThe preview URL is serving your app.
recoveringThe machine restarted and the last working stack is coming back.
degradedSomething is up but unhealthy. Check the error.
failedThe last deploy failed. Check the error.
stoppedIdle-stopped. Data is kept; the next deploy resumes it.
expiredThe lifetime ran out. Extend it, or create a new one.
destroyedGone, permanently.

Before the deploy starts

These are refused immediately, before anything is built.

CodeWhat happenedFix
REPO_NOT_ACCESSIBLESokko cannot read the repoAdd it to your GitHub App installation under Settings → GitHub
REF_NOT_FOUNDThat branch is not on GitHubPush it first — Sokko deploys from GitHub, not from your agent's working copy
COMPOSE_NOT_FOUNDSokko could not work out how to run the repo from any sourceTell your agent the run command and port, or commit a sokko.devbox.yml
PORT_DETECT_FAILEDNo single preview port could be determinedSet expose: — a bare port in run mode, web:3000 in compose mode
COMPOSE_INVALIDThe compose file does not parse, or sets run: and compose_file: togetherFix the file; the error names the problem
COMPOSE_UNSUPPORTEDThe compose file uses a key devboxes rejectRemove the named key — see Compose stacks
ENV_MISSINGA referenced variable has no sourceAdd it under Repo secrets, then redeploy
DEPLOY_IN_FLIGHTAnother deploy is already runningWait for it. Retrying does not queue a second one

While it is building or starting

CodeWhat happenedFix
BUILD_FAILEDThe build, install, or the run command itself failedRead the logs. A command not found here means the command names a tool the devbox does not have
REGISTRY_RATE_LIMITEDDocker Hub throttled an anonymous pullWait for the window, or use base images from a registry that does not rate-limit
DEPLOY_TIMEOUTThe deploy ran past its limitUsually a server bound to localhost, or a build that is simply too slow. Check the logs
SERVICE_UNHEALTHYNothing answered on the exposed portBind 0.0.0.0, confirm the port matches expose:, and check healthcheck_path really returns a success
SERVICE_CRASHLOOPThe app started and kept dyingThe logs carry the crash. A missing environment variable is the usual cause
OOMA service ran out of memoryTrim the stack, or move to a plan with a bigger devbox
DISK_FULLThe devbox disk filled upDestroy and recreate it, or move to a plan with more disk
BOOT_RECOVERY_FAILEDThe machine restarted and could not bring the stack backRedeploy the branch

Lifetime and capacity

CodeWhat happenedFix
TTL_EXPIREDThe lifetime ran outExtend it, or create a new devbox for the repo — its secrets are still there
SUSPENDED_IDLEIdle-stopped after 4 quiet hours; data is keptDeploy again to resume it
SUSPENDED_MID_DEPLOYIt was stopped while a deploy ranRedeploy
PLAN_LIMITYour plan has no devboxesDevboxes start on Cookie. See Plans
QUOTA_EXCEEDEDEvery devbox slot on your plan is in useDestroy one you are done with, or upgrade
NO_CREDITSThe organization is out of creditsTop up in Billing
CAPACITY_UNAVAILABLENo room right nowRetry shortly
TUNNEL_NOT_CONNECTEDPrivate mode with no connected accountConnect Tailscale under Settings → Infrastructure
TUNNEL_UNSUPPORTEDCloudflare Tunnel devboxes are not available yetUse Tailscale for private, or the Sokko network

The three problems people actually hit

The app starts but the URL shows nothing

The server bound 127.0.0.1. Almost every dev server does this by default and it is invisible from outside. Add the host flag your framework provides (--host 0.0.0.0, -H 0.0.0.0, --ip 0.0.0.0, -b 0.0.0.0), and make sure its port matches expose:.

Sokko is running the wrong command

Look at what the deploy reported. If it says the command was detected, Sokko guessed. Tell your agent the right command and port — the correction sticks to this devbox, and once it comes up healthy it becomes your organization's saved setup for the repo. To pin it in the repo instead, commit sokko.devbox.yml.

On the Sokko network they must sign in and be a member of your organization. In private mode they must be on your tailnet — a .ts.net address that will not resolve is usually a Tailscale client that is not running or is signed in to a different tailnet.

On this page