What compute providers are for
Think of a sandbox as a clean development machine for one task. It is separate from the web app, database, queue, and model provider. The model decides what to do; the compute provider gives the agent a place to do it. Roomote uses compute providers to:- start one workspace for each task
- clone the repositories from the selected environment
- run setup commands, tests, scripts, and background services
- expose preview ports when a task starts a web app or API
- stream logs back into the task view
- stop, destroy, or snapshot the workspace when the task is done
Supported providers
Roomote supports local and hosted compute backends:| Provider | Best for | Notes |
|---|---|---|
| Docker | Local development and trusted single-host self-hosting | Runs task sandboxes as Docker containers on the same machine as the deployment. |
| Modal | Hosted task sandboxes with snapshot support | Uses a hosted runtime and can resume some sandboxes from snapshots. |
| E2B | Hosted task sandboxes with snapshot support | Uses a hosted template created from the Roomote worker image. |
| Daytona | Hosted task sandboxes with simple API-key setup | Runs fresh task sandboxes and destroys them when they are no longer needed. |
Local Docker versus hosted compute
Docker keeps the system easy to reason about. The controller starts a worker container on the same host, connects it to the local Docker network, and uses that container as the task sandbox. This is a good fit when:- you are developing Roomote locally
- you run a trusted single-host deployment
- your tasks are modest enough for the host machine
- you want the fewest external provider accounts and credentials
- several people may run tasks at the same time
- tasks need more CPU, memory, or isolation than your Roomote host should provide
- you want task sandboxes to be easier to start, stop, and recover
- you need snapshot-capable providers for faster resume flows
- you are comfortable managing provider credentials and account-level limits
Why worker images matter
Every sandbox needs the same basic Roomote worker runtime: system packages, browser tooling, language tools, command helpers, and the small process that connects the sandbox back to Roomote. For Docker, that runtime comes from the worker Docker image available on the Roomote host. For hosted providers, the provider must be able to pull or start from a registry-qualified worker image. A local tag such asroomote-worker:local
only exists on your machine, so a hosted provider cannot use it directly.
That is why Settings > Compute includes a shared hosted compute worker
image. Hosted providers use it to derive the provider-specific artifact they
need:
- Modal can use the worker image as its base image.
- E2B builds a provider template from the worker image.
- Daytona registers a provider snapshot from the worker image.
latest. Immutable tags make it much
clearer which worker runtime a sandbox used and avoid surprise changes during
debugging or upgrades.
Choosing a default provider
The default provider is the compute backend Roomote uses when a task does not explicitly choose one. New deployments can start with Docker, then add a hosted provider when concurrency, isolation, or snapshot support becomes important. A practical path is:- start with Docker if you are validating Roomote on one host
- run a small task and confirm the environment can clone, install, test, and open previews
- add a hosted provider from Settings > Compute when the first task flow feels stable
- set the hosted provider as the default only after its credentials and worker image or registered artifact are healthy
Common issues
- A hosted provider cannot start tasks. Confirm its API credentials are saved and the deployment URL is reachable from the provider.
- The worker image is not accepted. Use a registry-qualified image that the hosted provider can pull, not a local-only Docker tag.
- Tasks start slowly. Check whether the hosted provider has a registered template or snapshot ready, and whether the environment setup commands are doing more work than necessary.
- Docker tasks affect the deployment host. Move heavier or concurrent work to a hosted provider, or give the host more CPU and memory.
- A task cannot run project commands. Update the environment with missing services, secrets, setup commands, or tool versions. The compute provider only provides the machine; it does not know your repository setup by itself.