Docker Compose
The whole runtime on one box: Postgres plus the worker, one file, no cloud account. This is the recommended self-host path.
git clone https://github.com/toren-run/toren
cd toren
TOREN_API_TOKEN=$(openssl rand -hex 24) docker compose -f deploy/docker-compose.yml up -dThat's the entire install. The worker serves your agents, the HTTP API, and the web console on port 7433; the queue runs on Postgres, so there is nothing else to operate. Check it:
curl -s localhost:7433/healthzOpen the console at http://your-box:7433/console/#token=<your TOREN_API_TOKEN>.
Your agents
The stock file serves the example agents baked into the image. To serve your own, point the build at a directory of agent folders, or mount one and change the command:
toren:
build:
context: ..
command: ["dev", "--dir", "/agents"]
volumes:
- ./my-agents:/agentsSet the model keys your agents need (ANTHROPIC_API_KEY, OPENAI_API_KEY, TAVILY_API_KEY for web search) in the environment or a .env file next to the compose file. TELEGRAM_BOT_TOKEN brings the Telegram channel up with the workers.
Sandbox agents on compose
Agents with sandbox: true are not supported on this default tier, on purpose. Running per-run sandbox containers from inside the worker container would require mounting the host docker socket, which is root-on-host equivalent and unsafe to ship as a default. Two supported paths for sandbox agents today: run them locally with toren dev against your own docker daemon, or on the AWS tier with an E2B sandbox backend. A hardened rootless-docker compose profile is planned.
Operating it
- Updates:
git pull && docker compose -f deploy/docker-compose.yml up -d --build. Rolling a new version mid-run is safe: durability lives in the event log, and in-flight work resumes without re-paying model calls. - Backups: Postgres is the only state.
pg_dumpthetorendatabase and you hold every run, transcript, and schedule. - HTTPS: put your usual reverse proxy (Caddy, nginx, Traefik) in front of port 7433.
- Scale: this tier is one box on purpose. When you outgrow it, the AWS reference architecture has autoscaling workers, RDS, SQS, and CloudFront, and your agent directory moves unchanged.