HolyCode
One container. Every tool. Any provider.
Works with Anthropic, OpenAI, Gemini, Groq, Bedrock, Azure, Vertex AI, Ollama, and more. Free and open source.
Don't want to self-host? Try HolyCode Cloud
One container. Every tool. Any provider.
Works with Anthropic, OpenAI, Gemini, Groq, Bedrock, Azure, Vertex AI, Ollama, and more. Free and open source.
Don't want to self-host? Try HolyCode Cloud
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:
- ./data/opencode:/home/opencode
- ./local-cache/opencode:/home/opencode/.cache/opencode
- ./workspace:/workspace
environment:
- PUID=1000
- PGID=1000
- ANTHROPIC_API_KEY=your-key-here # Or swap for any supported provider key $ docker compose up -d Open http://localhost:4096. You're in. Keep ./local-cache/opencode on local disk, especially when the project lives on NAS storage. Update later with docker compose pull and docker compose up -d.
Everything you need. Nothing you don't.
Built-in web UI on port 4096. Provider-agnostic. Protect it with OPENCODE_SERVER_PASSWORD.
Enable ENABLE_CLAUDE_AUTH to use Claude Max/Pro credentials when that fits your Anthropic terms.
Set ENABLE_OH_MY_OPENAGENT for oh-my-openagent, then run /oh-my-openagent-setup.
Use opencode run, opencode attach, and opencode providers login inside the container.
Settings, sessions, MCP configs, plugins. Use HOLYCODE_PLUGIN_UPDATE to install missing plugins or update them on boot.
git, ripgrep, pnpm, TypeScript, Prisma, Lighthouse, ffmpeg, and more. Pre-installed.
Set ENABLE_PAPERCLIP for the port 3100 board. Docker keeps auth on with PAPERCLIP_DEPLOYMENT_MODE=authenticated, PAPERCLIP_BIND=lan, and trusted PAPERCLIP_ALLOWED_HOSTNAMES.
Set ENABLE_HERMES for the port 8642 meta-agent. Add API_SERVER_KEY before exposing its API.
Use the full Compose profile with CLIPROXYAPI_ENABLED and CLIPROXYAPI_BASE_URL=http://cliproxyapi:8317/v1. It stays isolated from Claude Auth.
Chromium + Xvfb + Playwright. Screenshots, scraping, automation. Zero config.
Node 22 LTS with npm 10.9.8, plus Python 3, pip, and venv.
Process supervision. Auto-restart. Clean shutdown. No zombies.
OpenCode is provider-agnostic. Bring your own key, use any model.
Plus Vertex AI, GitHub Models, Ollama, and any OpenAI-compatible endpoint via OpenCode's provider system.
Set one key. Or set all of them. Switch providers anytime without rebuilding. Prefer Podman? HolyCode uses the same container image there too.
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 packaged the working setup into one container. Tools, browser, process supervision, and persistent state are wired up before first boot. You pull it and go.
Your environment should follow you. Not the other way around.
Same 50+ tools. Same 10+ providers. Same persistent state. No Docker. No setup. Just open your browser and code.
Get Early AccessPull one image. Get every tool. Keep everything between rebuilds. Your AI coding workstation, portable and ready.