MCPcopy Index your code
hub / github.com/CoderLuii/HolyClaude

github.com/CoderLuii/HolyClaude @v1.4.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.3 ↗ · + Follow
94 symbols 279 edges 14 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🌍 English | Español | Français | Italiano | Português | Deutsch | Русский | हिन्दी | 中文 | 日本語 | 한국어

HolyClaude HolyClaude

HolyClaude Banner

License: MIT Docker Pulls Full Image Slim Image

GitHub Stars Twitter Follow PayPal Buy Me A Coffee Website GitHub Release Issues Contributors

Stop configuring. Start building.

One command. Full AI development workstation. Claude Code, web UI, headless browser, 8 AI CLIs, 50+ dev tools — containerized and ready.

You were going to spend 2 hours setting this up manually. Or you could just docker compose up.

Works with your existing Claude Code subscription. Max/Pro plan, API key — whatever you have, it just works.

[!TIP] The install step is disappearing.

HolyClaude gives you the self-hosted AI workstation. HolyCode Cloud gives you the same idea without the server chore.

No compose file. No exposed port. No Docker updates. No tunnel setup. No babysitting the box.

Open the browser. Start the session. Build from anywhere.

Early access is free. Claim your spot while it is still wide open.


What is this?

You know the drill. You want Claude Code. But you also want it in a browser. With a headless browser for screenshots and testing. With Playwright configured. With every AI CLI. With TypeScript, Python, deployment tools, database clients, GitHub CLI.

So you start installing things. One by one. Then Chromium won't launch because Docker's shared memory is 64MB. Then Xvfb isn't configured. Then the UID inside the container doesn't match your host and everything is permission denied. Then you realize Claude Code's installer hangs when WORKDIR is root-owned. Then SQLite locks on your NAS mount. Then—

HolyClaude is the container I built after solving every single one of those problems.

I've been running this daily on my own server for weeks. Every bug has been hit, diagnosed, and fixed. Every edge case has been handled. Every "why doesn't this work in Docker" has been answered.

You pull it. You run it. You open your browser. You build.

:credit_card: Use Your Existing Subscription

This runs the real Claude Code CLI. Not a wrapper. Not a proxy. Not a knock-off.

Your existing Anthropic account works directly: - Claude Max/Pro plan — authenticate through the web UI (OAuth), same as desktop Claude Code - Anthropic API key — set it through the web UI, same billing as always - No extra cost — HolyClaude is free and open source. You only pay Anthropic for what you use, like you already do.

HolyClaude doesn't touch your credentials. They're stored locally in your bind-mounted volume (./data/claude/), same as they would be on bare metal.

↑ back to top


Table of Contents

Section
:zap: Quick Start
:computer: Platform Support
:star2: Why HolyClaude
:credit_card: Subscription & Authentication
:package: Image Variants
:whale: Docker Compose — Quick
:whale2: Docker Compose — Full
:wrench: Environment Variables
:rocket: What's Inside
:robot: AI CLI Providers
:mag: Desloppify
:llama: Using Ollama
:building_construction: Architecture
:file_folder: Project Structure
:floppy_disk: Data & Persistence
:lock: Permissions
:shield: Remote Access & Exposure
:bell: Notifications
:arrows_counterclockwise: Upgrading
:construction: Troubleshooting
:warning: Known Issues
:hammer_and_wrench: Building Locally
:bar_chart: Alternatives
:rocket: Roadmap
:trophy: Built with HolyClaude
:handshake: Contributing
:heart: Support
:scroll: Third-Party Software
:page_facing_up: License

↑ back to top


:zap: Quick Start

1. Create a folder for HolyClaude:

mkdir holyclaude && cd holyclaude

2. Create a docker-compose.yaml file. Copy one of the templates below: - Quick template — minimal, zero config, just works - Full template — all options, fully documented

3. Pull and start:

docker compose up -d

4. Open the web UI:

http://localhost:3001

5. Create a CloudCLI account (takes 10 seconds), sign in with your Anthropic account, and you're live.

No .env files. No pre-configuration. No reading 40 pages of docs before you can start. It just runs.

Want to reach it from outside your network? Don't port-forward it. See Remote Access & Exposure — use Tailscale or Cloudflare Tunnel instead.

↑ back to top


:computer: Platform Support

Platform Status Notes
Linux (amd64) ✅ Fully supported Native performance, recommended
Linux (arm64) ✅ Fully supported Raspberry Pi 4+, Oracle Cloud, AWS Graviton
macOS (Docker Desktop) ✅ Fully supported Apple Silicon & Intel via Docker Desktop
Windows (WSL2 + Docker Desktop) ✅ Fully supported Requires WSL2 backend
Synology / QNAP NAS ✅ Fully supported Use CHOKIDAR_USEPOLLING=true for SMB mounts
Kubernetes 🔜 Coming soon Helm chart planned

↑ back to top


:star2: Why HolyClaude

I built this because I was tired of re-doing the same setup every time. Installing Claude Code, wiring up a web UI, configuring Chromium in Docker, fixing permission issues, debugging process supervision. Every time.

So I made a container that does all of it. And then I hit every possible bug so you don't have to.

HolyClaude Doing it yourself
Setup 30 seconds 1-2 hours (if it goes well)
Claude Code Pre-installed, pre-configured, ready Install, configure, debug installer hanging, fix WORKDIR
Web UI CloudCLI included with plugins Find a web UI, install it, configure it, wire it to Claude
Headless browser Chromium + Xvfb + Playwright, configured Install Chromium, install Xvfb, configure display :99, fix shm, fix sandbox, fix seccomp...
AI CLIs 8 providers, one container Install each one separately across 3 package managers
Dev tools 50+ tools, ready apt-get install / npm i -g / pip install for the next hour
Process management s6-overlay (auto-restart, graceful shutdown) Write your own supervisord config or hope Docker restart works
Persistence Bind mounts, credentials survive everything Figure out Docker volumes, debug "why is this a directory not a file"
Updates docker pull && docker compose up -d Update 50 tools manually, pray nothing breaks
Multi-arch AMD64 + ARM64 Pray your Dockerfile builds on ARM

The last row of every manual setup is "works on my machine." HolyClaude works on every machine.

↑ back to top


:credit_card: Subscription & Authentication

HolyClaude runs the official Claude Code CLI from Anthropic. Your existing account works out of the box.

What works:

Authentication method How Cost
Claude Max/Pro plan (subscription) Sign in through CloudCLI web UI — same OAuth flow as desktop Your existing subscription, no extra charge
Anthropic API key Paste your API key in the web UI Pay-per-use, same Anthropic billing

What doesn't work:

Why
OpenAI API key for Claude Different company, different API. OpenAI keys work with the Codex CLI (also pre-installed)

ChatGPT Plus/Pro subscribers: Your subscription works with the Codex CLI. Run codex login --device-auth inside the container to authenticate with your ChatGPT account. If you need Codex's browser callback flow from your host, expose port 1455 in the full compose template below.

Other AI CLIs included:

CLI What you need
Gemini CLI Google AI API key (GEMINI_API_KEY)
OpenAI Codex OpenAI API key (OPENAI_API_KEY) or ChatGPT Plus/Pro subscription (codex login --device-auth)
Cursor Cursor API key (CURSOR_API_KEY)
TaskMaster AI Uses your AI provider keys (Anthropic, OpenAI, etc.)
Junie JetBrains account (JetBrains AI subscription)
OpenCode Configure via opencode TUI (OpenRouter and other providers)
Pi Coding Agent Configure through pi (supports multiple providers)

HolyClaude is free and open source. You only pay your AI providers for usage, same as you already do. We don't proxy, intercept, or touch your credentials. They live in your local bind mount.

↑ back to top


:package: Image Variants

Two flavors. Same quality. Pick your weight class.

Tag What you get Best for Docker Hub compressed size
latest Everything pre-installed — every tool, every library, every CLI Most users. Zero wait time. Claude never has to stop and install something. ~4.1 GB
slim Core tools only — Claude installs extras on-demand Smaller VPS, limited disk, metered bandwidth ~2.4 GB
X.Y.Z Full image, pinned version Production stability — you control when to update Same as latest for that release
X.Y.Z-slim Slim image, pinned version Production + small footprint Same as slim for that release
# Full — batteries included (recommended)
docker pull coderluii/holyclaude

# Slim — lean and mean
docker pull coderluii/holyclaude:slim

latest is always the full image. Slim users: don't worry — when you ask Claude to do something that needs a missing tool, it installs it in seconds. You get the same capabilities, just with a smaller initial download.

Docker Hub reports compressed transfer size. Docker, Synology Container Manager, and NAS filesystems can show a larger unpacked size after layers are extracted. That is expected; use slim when disk space or bandwidth matters more than having every tool ready on first boot.

↑ back to top


:whale: Docker Compose — Quick

The "I just want it running" template. Copy this entire block into a docker-compose.yaml file:

```yaml

==============================================================================

HolyClaude — Quick Start

Just run: docker compose up -d

Then open: http://localhost:3001

==============================================================================

services: holyclaude: image: coderluii/holyclaude:latest # Full image (use :slim for smaller download) container_nam

Core symbols most depended-on inside this repo

log
called by 10
scripts/persist-claude-json.mjs
repairOwnership
called by 8
scripts/persist-claude-json.mjs
analyzeState
called by 7
scripts/persist-claude-json.mjs
fail
called by 6
scripts/patch-cloudcli-web-terminal-rendering.mjs
replaceRequired
called by 6
scripts/patch-cloudcli-web-terminal-rendering.mjs
backupExisting
called by 6
scripts/persist-claude-json.mjs
sanitize
called by 5
scripts/notify.py
promote
called by 5
scripts/persist-claude-json.mjs

Shape

Function 85
Method 7
Class 2

Languages

TypeScript76%
Python24%

Modules by API surface

scripts/persist-claude-json.mjs18 symbols
scripts/notify.py13 symbols
tests/test_notify.py10 symbols
scripts/patch-cloudcli-web-terminal-rendering.mjs8 symbols
scripts/patch-cloudcli-disable-self-update.mjs8 symbols
tests/persist_claude_json.test.mjs6 symbols
tests/patch_cloudcli_disable_self_update.test.mjs6 symbols
tests/patch_cloudcli_codex_complete_exit_code.test.mjs5 symbols
tests/patch_cloudcli_apprise_notifications.test.mjs5 symbols
scripts/patch-cloudcli-apprise-notifications.mjs5 symbols
scripts/patch-cloudcli-codex-permissions.mjs4 symbols
tests/patch_cloudcli_web_terminal_rendering.test.mjs3 symbols

For agents

$ claude mcp add HolyClaude \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact