Workers

Workers are isolated Docker containers — your personal development environment, ready in seconds.

A worker is a running Docker container that provides a full development environment. It includes:

  • code-server — a browser-based VS Code instance on port 8080
  • Your project's tools — languages, runtimes, and CLI tools defined in the devcontainer spec
  • VS Code extensions — pre-installed at image build time
  • Git credentials — your GitHub SSH key and personal access token, injected at spawn
  • User secrets — encrypted key/value pairs available as environment variables

New worker
 [image build once per project version per node]
 [spawn container]
 [setup script clone repos, configure credentials, run postCreateCommand]
 [start code-server]
 Ready

Workers can be stopped (container paused, state preserved) and started again. The code-server installation and repo state persist across restarts.

Destroying a worker (Delete) removes the container and the database record permanently.

During first start, a structured status is written to /tmp/mp-status.json at each phase. The dashboard shows live progress:

PhaseDescription
initializingContainer started, scripts beginning
credentialsGit config, SSH keys, GCP ADC
cloningCloning repositories
featuresInstalling devcontainer features
extensionsInstalling VS Code extensions
lifecycleRunning postCreateCommand
readyWorker is ready to use

Each worker is accessible at a unique subdomain:

https://worker-{index}-{id}-code.{BASE_DOMAIN}

The proxy verifies your session cookie and checks that you're the owner of the worker before proxying traffic.

Port forwarding is on-demand — any port your code listens on can be accessed at:

https://worker-{index}-{id}-{port}.{BASE_DOMAIN}

No configuration needed — just start a server and click the link in the Ports panel.

Generate a one-time SSH token from the worker card:

ssh -i ~/.ssh/id_ed25519 -p 2222 vscode@{BASE_DOMAIN} -t {token}

Tokens expire after 5 minutes and can only be used once.

Before the first worker spawns on a node, Spunto pre-builds a Docker image for the project version. This image contains:

  • code-server
  • All devcontainer features (OCI install scripts)
  • VS Code extensions

Subsequent spawns reuse the cached image — no re-installation needed. If you update the project config (new extension, changed feature), the version increments and a new image is built automatically on next spawn.

Tip

You can trigger a manual pre-build on all online nodes from the project page. This warms the cache before your team needs it.