One container. Every tool. Any provider.
Works with Anthropic, OpenAI, Gemini, Groq, Bedrock, Azure. Free and open source.
From zero to AI coding in under a minute.
$ docker pull coderluii/holycode:latest compose.yamlservices:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g # Chromium needs this
ports:
- "4096:4096" # OpenCode web UI
volumes:
- holycode-config:/home/opencode/.config/opencode
- holycode-data:/home/opencode/.local/share/opencode
- holycode-state:/home/opencode/.local/state/opencode
- holycode-cache:/home/opencode/.cache/opencode
- ./workspace:/workspace
environment:
- ANTHROPIC_API_KEY=your-key-here
volumes:
holycode-config:
holycode-data:
holycode-state:
holycode-cache: Everything you need. Nothing you don't.
Built-in web UI on port 4096. Provider-agnostic. Bring any API key.
Settings, sessions, MCP configs, plugins. Named volumes. Rebuild without losing anything.
git, ripgrep, fzf, bat, eza, lazygit, delta, gh CLI, and more. Pre-installed.
Chromium + Xvfb + Playwright. Screenshots, scraping, automation. Zero config.
Two runtimes ready for your projects. npm, pip, venv included.
Process supervision. Auto-restart. Clean shutdown. No zombies.
OpenCode is provider-agnostic. Bring your own key, use any model.
ANTHROPIC_API_KEY OPENAI_API_KEY GEMINI_API_KEY GROQ_API_KEY 3 env vars 3 env vars Set one key. Or set all of them. Switch providers anytime without rebuilding.
I built this because I was tired of re-doing the same setup every time. Installing OpenCode, configuring a headless browser in Docker, fixing UID permission issues, debugging process supervision. Every. Single. Time.
So I made a container that does all of it. And then I hit every possible bug so you don't have to.
"The last row of every manual setup is 'works on my machine.' HolyCode works on every machine."