Project Structure
The repo ships three Dockerfiles:Deployment Modes
- Zero-Config (Wizard)
- Pre-seeded Credentials
- Host (No Docker for Orchestrator)
The simplest way to get started — no environment variables needed:Open http://localhost:4000 and the setup wizard guides you through all credentials.
Named Volumes
| Volume | Purpose |
|---|---|
risoluto-archives | Encrypted secrets, config overlay, auth tokens, run archives |
risoluto-workspaces | Cloned repositories for each issue |
codex-auth | OpenAI Codex login tokens |
Container Behavior
Inside Docker, paths resolve differently:| Setting | Container Value | Purpose |
|---|---|---|
DATA_DIR | /data | Archive root becomes /data/archives |
workspace.root | /data/workspaces | Cloned repos live here inside the container |
RISOLUTO_BIND | 0.0.0.0 | Listen on all interfaces (required inside Docker) |
PathRegistry automatically translates container paths back to host bind-mount sources before launching worker containers.
Docker Networking
Containers cannot reach the host’s127.0.0.1. Risoluto automatically:
- Adds
--add-host=host.docker.internal:host-gatewayto every worker container - Rewrites
127.0.0.1tohost.docker.internalin the Codexconfig.toml
If you use a host-side proxy like CLIProxyAPI, run it once on the host. All sandbox containers reach it over the Docker bridge network.
Control / Data Plane Split
For scale-out scenarios (remote workers, hot upgrades, multi-host), enable remote dispatch mode:risoluto-internal bridge network.
| Scenario | Benefit |
|---|---|
| Hot upgrades | Upgrade control plane without killing active agents |
| Multi-host workers | Data plane runs on remote hosts via SSH |
| Interactive workspaces | WebSocket proxy routes to correct data plane |
| Multi-repo orchestration | Multiple data planes with different checkouts |
Remote dispatch is opt-in. The default
DISPATCH_MODE=local runs everything in one process.Custom Docker Networks
Custom Docker Networks
Attach worker containers to a specific network:This passes
--network=my-custom-network to every docker run invocation.gVisor Runtime
gVisor Runtime
For defense-in-depth sandbox isolation, enable gVisor:Requires
runsc installed on the Docker host. See the Security guide for details.Egress Allowlists
Egress Allowlists
Restrict outbound network access from worker containers:Only listed domains are reachable from inside the sandbox.
Sandbox Image Tooling
TheDockerfile.sandbox image ships with:
| Tool | Version | Purpose |
|---|---|---|
| Node.js | 22 (via nodesource) | Runtime |
| Codex CLI | latest | AI agent execution |
| bubblewrap | system | Sandbox isolation (--argv0) |
| git | system | Source control |
| jq, ripgrep | system | JSON processing, search |
--user $(id -u):$(id -g)) to avoid ownership drift on bind-mounted volumes.
What’s Next
Setup Wizard
Walk through first-time credential configuration.
Configuration
Tune agent concurrency, models, timeouts, and sandbox resources.