This page takes you from nothing to the Command Center open in your browser. The whole stack runs in Docker, so the only things you install on the host are Docker itself and (for the default Claude backend) the Claude Code CLI.
1. Authenticate the model backend
By default every agent runs on Anthropic Claude, using the Claude Code session on your host rather than a metered API key. Authenticate once:
1npm install -g @anthropic-ai/claude-code2claude # opens a browser to log in; creates ~/.claudeThat ~/.claude directory is mounted read-only into the orchestrator, which hands it to each agent container. If you'd rather run the workforce on Grok, skip this and see Optional: run on Grok below.
2. Get the code
1git clone https://github.com/rennf93/roboco.git2cd roboco3cp .env.example .env3. Set the two required secrets
Open .env and set these two — the orchestrator refuses to start without the first, and Docker deployments need the second:
1# Encrypts every per-project GitHub token at rest (Fernet). REQUIRED.2ROBOCO_ENCRYPTION_KEY=3 4# Signs the per-agent auth tokens (HMAC). REQUIRED for docker compose.5ROBOCO_AGENT_AUTH_SECRET=Generate each one:
1# ROBOCO_ENCRYPTION_KEY2python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())'3 4# ROBOCO_AGENT_AUTH_SECRET5python -c 'import secrets; print(secrets.token_hex(32))'This key encrypts the GitHub tokens you'll store per project. If you lose it or change it later, every stored token becomes undecryptable and must be re-entered. Back it up with your other secrets, and never commit .env.
Everything else in .env.example has a working default for a local Docker run. On a NAS or remote server you'll also set the host-path variables (ROBOCO_HOST_PROJECT_DIR, ROBOCO_HOST_CLAUDE_DIR, ROBOCO_DATA_DIR) — those are covered in the deployment reference.
4. Bring up the stack
You have two ways to get the images. Both start from the clone above.
Every release publishes all RoboCo images to both the GitHub Container Registry and Docker Hub, so you can run the full stack without building anything:
1docker compose -f docker-compose.registry.yml pull2docker compose -f docker-compose.registry.yml up -dPick the registry and version with two variables (defaults shown):
1ROBOCO_REGISTRY=ghcr.io/rennf93 # or docker.io/renzof932ROBOCO_VERSION=latest # or a pinned release, e.g. 0.9.0The orchestrator pulls and spawns the matching pre-built agent images on demand — no build toolchain on your host.
The first start does real work: it pulls the local models into Ollama (the embedding model is quick; the local LLM is a couple of minutes), then the orchestrator waits for them, runs the database migrations itself, and indexes its knowledge base. You don't run migrations by hand — the stack brings its own schema up to date on every boot.
5. Watch it come up
1docker compose logs -f orchestratorWait until the orchestrator reports it's serving, then open:
1http://localhost:3000That's the Command Center — per-cell health, the CEO approval queue, live metrics, and recent activity. The company is up; it's just idle because you haven't given it a repository or a task yet.
nginx is the only externally-exposed service. It serves the panel and proxies /api and /ws to the orchestrator, so the browser sees a single origin at :3000. You generally won't hit the orchestrator's own port directly.
Next
→ Register your first project — point RoboCo at a repository it's allowed to work on.
Optional: run on Grok instead
RoboCo can run the entire workforce on xAI Grok using xAI's official grok CLI on a SuperGrok subscription — no metered API key, so a run can't stall mid-task on exhausted credits.
1grok login # once, on the host — creates ~/.grok/auth.jsonThen in .env:
1ROBOCO_HOST_GROK_DIR=/home/youruser/.grok # the real host ~/.grok to mount in2# ROBOCO_GROK_AGENT_IMAGE=roboco-agent-grok:latest3# ROBOCO_GROK_CLI_MODEL=grok-build4# ROBOCO_GROK_REASONING_EFFORT= # low|medium|high|xhigh|max (empty = model default)The orchestrator keeps the short-lived Grok token refreshed for you, so agents don't hang on an expired login. Which agents run on which backend is set on the Settings → AI Providers page — that, and the per-role model assignments, are covered in the models section.
Optional: secure mode
On a trusted LAN, RoboCo runs in header-trust mode by default: requests identify the caller by role headers, with no token required. That's fine on a private network and is the intended setup.
If you need to harden it so an agent can't spoof another's role, set ROBOCO_AGENT_AUTH_REQUIRED=true, keep your ROBOCO_AGENT_AUTH_SECRET, and generate the panel's CEO token with make panel-token into ROBOCO_PANEL_AGENT_TOKEN. nginx injects that token so the panel keeps working without the browser holding the signing secret. The full security model is in the Configure & Deploy reference.
Don't expose RoboCo to the public internet as-is. It's built to run on a trusted private network (homelab / LAN).
Resources
RoboCo is light at runtime. Agent containers are spawned on demand and torn down when their work is done, so you rarely have more than a handful live at once.
| At idle (full stack, no task running) | RAM |
|---|---|
| Ollama (models loaded) | ~2.2 GB |
| Orchestrator | ~150 MB |
| Postgres / Panel / Redis / nginx | ~120 MB combined |
The whole standing stack idles around ~2.5 GB, almost all of it Ollama. Under load — five agents working concurrently — the stack peaked around ~6.6 GB; even at full-fleet peak you stay well under ~10 GB. Storage is the larger footprint: the agent images all build from a shared base layer, so on disk they cost far less than their nominal sizes summed. docker system prune reclaims old image versions, stopped containers, and build cache.
1docker stats # live RAM / CPU per running container2docker system df # image / container / build-cache disk usageRunning on the host (for hacking on RoboCo itself)
If you want to develop RoboCo's own code rather than just run it, you can run only the backing services in Docker and the app on your host. RoboCo's code needs Python 3.13+ (uv fetches it if needed):
1uv sync2docker compose up -d postgres redis ollama # backing services only3uv run alembic upgrade head # migrate the database4uv run python -m roboco.cli # API + orchestrator