AI coding.Your machine.

Your self-hosted developer workstation: CloudCLI, coding agents and a packaged browser, with files and credentials you control.

Release
v1.6.6
CloudCLI
1.37.3
Platforms
AMD64 + ARM64
Docker Composev1.6.6
Choose an image
image: coderluii/holyclaude:latest
docker compose up -d
Local interfacelocalhost:3001

A repeatable coding environment, kept on your side.

CloudCLI and eight coding agents share one deliberate workspace.

Full includes 8 AI CLIs. Slim keeps the core 5. Your files stay in ./workspace, outside the container lifecycle.

A browser that is already there.

Playwright Node 1.63.0 and Python 1.63.0 use Debian Chromium 154.0.8037 at /usr/bin/chromium. No runtime browser download.

Hooks for the agents you actually run.

Apprise covers Claude, raw Codex and Gemini, and CloudCLI Codex. Configure NOTIFY_* destinations in Compose, then recreate the container. Inside the container, enable them with touch ~/.claude/notify-on. Follow the notification setup.

Local first, with documented remote options.

CloudCLI binds to 127.0.0.1:3001. Optional key-only SSH, Mosh, rootless Podman and HOLYCLAUDE_BASE_PATH are available when your setup needs them.

Controls for one local CloudCLI account.

CloudCLI supports logout, password changes and token invalidation. The account resets when the default container is recreated. Add the optional local named volume to persist it, and keep its SQLite database away from NAS network shares.

Project Stats and Web Terminal are included.

Both plugins ship in the patched CloudCLI 1.37.3 runtime. CloudCLI self-update is patched out, so updates use a reviewed image and docker compose pull && docker compose up -d.

Host folders./data/claude
./workspace
Container/home/claude/.claude
/workspace
Local interface127.0.0.1:3001

Choose full or slim.

Registry values are compressed transfer sizes for immutable 1.6.6 tags. Unpacked disk use is different and can be larger.

ImageTagAMD64ARM64AI CLIs
Full1.6.65.39 GB / 5.02 GiB5.18 GB / 4.83 GiB8
Slim1.6.6-slim3.35 GB / 3.12 GiB3.28 GB / 3.06 GiB5

Both images include Node.js, Python, Git and the packaged browser. Full adds deployment tools, PDF and document libraries, and FFmpeg.

latest selects Full. slim selects Slim. Pin coderluii/holyclaude:1.6.6 or coderluii/holyclaude:1.6.6-slim for a specific release. The same tags are published at ghcr.io/coderluii/holyclaude.

Both images

  • Claude Codeclaude2.1.296
  • Gemini CLIgemini0.63.0
  • OpenAI Codexcodex0.162.1
  • Cursor Agentcursor2026.09.15-d2fe57e
  • TaskMaster AItask-master0.43.1

Full only

  • Juniejunie3579.5
  • OpenCodeopencode1.18.35
  • Pi Coding Agentpi0.85.1
Read the released package inventory →

Three steps. Your folders stay yours.

  1. 01

    Create data/claude and workspace, then save this file as docker-compose.yaml.

  2. 02

    Run docker compose up -d.

  3. 03

    Open http://localhost:3001.

The .claude mount also holds managed Codex and Gemini configuration and authentication. Back up both host folders before updating. Avoid mounting all of /home or /home/claude, which hides tools installed in the image.

For rootless Podman, use keep-id and SELinux :Z mounts from the rootless instructions.

docker-compose.yaml
services:
  holyclaude:
    image: coderluii/holyclaude:latest
    container_name: holyclaude
    hostname: holyclaude
    restart: unless-stopped
    shm_size: 2g
    network_mode: bridge
    cap_add:
      - SYS_ADMIN
      - SYS_PTRACE
    security_opt:
      - seccomp=unconfined
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data/claude:/home/claude/.claude
      - ./workspace:/workspace
    environment:
      - TZ=UTC

Trust boundary

One local account. One shared context.

CloudCLI is single-user. Remote access shares the same CloudCLI account, mounted workspace and credential context. It does not create user or tenant isolation.

HolyClaude operates no credential relay. Bundled tools read local credentials and contact the providers you configure directly. Docker limits the environment, but mounted files, credentials, added capabilities and outbound provider access remain reachable.

Release candidates use digest-bound SBOM and vulnerability evidence. Third-party findings remain accepted upstream vulnerabilities, not fixed findings. HolyClaude source checks, artifact integrity and runtime tests still block publication.

Before you pull the image.

Should I use Full or Slim?

Slim keeps the 5 common AI CLIs and packaged browser. Full includes all 8 CLIs plus deployment, document, PDF and media tooling.

What persists after the container is recreated?

Your ./data/claude and ./workspace host folders persist. The CloudCLI account resets unless you add the documented optional local named volume. Keep its SQLite database away from NAS network shares.

Can I reach HolyClaude remotely?

Yes. Optional key-only SSH and Mosh are documented, but the default Compose file publishes only 127.0.0.1:3001. Remote access shares one account and credential context.

How do updates work?

CloudCLI self-update is patched out. Pull a reviewed image and recreate the container. Pinned tags remain pinned until you change the Compose image tag.

Pull the image. Recreate the container.

Pinned tags stay on that release. Change the Compose image tag when you want a newer version.

docker compose pull && docker compose up -d

Docker Compose

Install HolyClaude

Choose the image, save the complete file and start the container. The local interface opens at localhost:3001.

Choose an image
Selected image
coderluii/holyclaude:latest
Start
docker compose up -d

The default compatibility settings broaden container privileges. Back up data/claude and workspace. Account storage and remote ports are optional and require separate configuration.

docker-compose.yamlcoderluii/holyclaude:latest
services:
  holyclaude:
    image: coderluii/holyclaude:latest
    container_name: holyclaude
    hostname: holyclaude
    restart: unless-stopped
    shm_size: 2g
    network_mode: bridge
    cap_add:
      - SYS_ADMIN
      - SYS_PTRACE
    security_opt:
      - seccomp=unconfined
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data/claude:/home/claude/.claude
      - ./workspace:/workspace
    environment:
      - TZ=UTC