docker-claudebox GitHub Details, Stars and Alternatives | OpenRepoFinder
psyb0t / repository
docker-claudebox
Claude Code in Docker. Drop-in OpenAI-compatible API, MCP server, Telegram bot, and CLI — five interfaces, one image. Persistent sessions, file ops, always-on skill injection, and a full dev toolchain (Go, Python, Node, K8s, Terraform, databases) or a minimal image with just the basics.
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
100
Community adoption25% weight
23
Maintenance state20% weight
100
License clarity10% weight
100
Project information10% weight
75
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
claudebox
A runtime harness for Claude Code — the agentic coding CLI from Anthropic — running in a fully isolated Docker container with every dev tool pre-installed, passwordless sudo, docker-in-docker support, and --permission-mode bypassPermissions enabled by default.
v2.0.0 — rebased on psyb0t/aicodebox. claudebox is now a thin child image of the shared aicodebox base (same pattern as psyb0t/pibox). Every mode surface (API / Telegram / Cron / MCP) is inherited from the base and stays in lockstep with future base fixes. See CHANGELOG.md for the full migration guide (endpoint shape changes, env-var namespace, path renames — all mitigated by aliases + symlinks so existing configs keep working).
Runtime hardening (recommended docker run flags):
--cap-drop=ALL --cap-add=NET_BIND_SERVICE — drop every Linux capability, add back only bind-below-1024 if you actually need it.
--security-opt no-new-privileges:true — block setuid privilege escalation inside the container.
--memory=2g --cpus=2 --pids-limit=512 — cap runtime resource use so a runaway process can't starve the host.
--read-only --tmpfs /tmp:rw,noexec,nosuid (only if you don't use /workspace for writes — otherwise skip).
The container drops from root to aicode (UID 1000) at boot via setpriv in the base entrypoint, so the process running your code is never root even without --user.
claudebox wraps Claude Code with several distinct interfaces:
Interactive CLI — a drop-in replacement for the native claude command, with persistent containers and automatic session resumption across runs
Programmatic CLI — non-interactive mode for scripts, CI/CD pipelines, and automation; pass a prompt, get structured output, pipe it wherever you need
HTTP API server — a full REST API with workspace management, file operations, structured output formats, and workspace isolation for multi-tenant deployments
ALGORITHMICALLY RELATED
Similar Open-Source Projects
Selected from shared topics, language and repository description—not editorial ratings.
The universal MCP server for Claude Code and other MCP-compatible clients. One installation gives AI access to 10,000+ PowerShell modules and any CLI tool. You and AI collaborate in the same console with full transparency. Supports Windows, Linux, and macOS.
Think first, then code. Where Claude Code and Codex jump straight to writing, this stays review-first: a code reviewer, security scanner, root-cause debugger, and code generator, all in one shell-native loop.
OpenAI-compatible endpoint — a chat/completions adapter that lets LiteLLM, OpenAI SDKs, and any OpenAI-compatible client talk to Claude Code, complete with streaming SSE, multi-turn conversations, and multimodal image handling
MCP server — a Model Context Protocol endpoint over streamable HTTP so other AI agents and tools (Claude Desktop, other Claude Code instances, etc.) can use Claude Code as a tool
Telegram bot — a conversational interface with per-chat workspaces, configurable models and effort levels, file sharing, shell access, and group chat support
Cron scheduler — yaml-defined Claude jobs running on cron schedules with per-job activity history, sub-minute resolution, and overlap protection
Beyond just running Claude Code in Docker, claudebox adds skill injection (auto-load SKILL.md files into every session), init hooks, custom script directories, structured JSON logging, and a workspace management layer that handles multi-tenant isolation with automatic busy/idle tracking.
Renamed from docker-claude-code: This project was previously called docker-claude-code with the Docker image at psyb0t/claude-code. Starting with v1.0.0, it is claudebox — the Docker image is now psyb0t/claudebox, the default binary name is claudebox, the GitHub repository is psyb0t/docker-claudebox, and the SSH key directory defaults to ~/.ssh/claudebox. If you were using the old names, update your image references, wrapper scripts, and SSH paths accordingly.
The install script pulls the Docker image, generates SSH keys for git operations inside the container, downloads the wrapper script, and installs it as a command on your system.
# minimal image — default; Claude installs what it needs on the fly
curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-claudebox/master/install.sh | bash
# full image — every dev tool pre-installed (Go, Python, kubectl, terraform, ...)
export CLAUDEBOX_FULL=1 && curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-claudebox/master/install.sh | bash
# custom binary name (e.g. if you want to call it 'claude' instead of 'claudebox')
curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-claudebox/master/install.sh | bash -s -- claude
# or: export CLAUDEBOX_BIN_NAME=claude && curl -fsSL .../install.sh | bash
v2 note: the variant naming flipped in v2. latest is now the minimal image (was the full image pre-v2); latest-full is the toolchain-loaded variant (was latest pre-v2). The CLAUDEBOX_MINIMAL=1 opt-in from v1 is now a no-op — you already get minimal by default. Set CLAUDEBOX_FULL=1 to opt into the toolchain image. Installing with CLAUDEBOX_FULL=1 (as above) bakes the choice into the installed wrapper, so the full variant sticks for every run — you don't need to keep the env var set afterward.
Heads up on env vars:VAR=x curl … | bash does not set VAR for the install script — bash semantics attach the var to curl only. Always export the var first (or put it on the bash side of the pipe).
Manual setup
If you prefer not to pipe scripts to bash:
# 1. create the data directory
mkdir -p ~/.claude
# 2. create SSH keys for git operations inside the container
mkdir -p "$HOME/.ssh/claudebox"
ssh-keygen -t ed25519 -C "claude@claude.ai" -f "$HOME/.ssh/claudebox/id_ed25519" -N ""
# then add the public key to GitHub/GitLab/wherever you push code
# 3. pull the image
docker pull psyb0t/claudebox:latest # minimal (default)
# or: docker pull psyb0t/claudebox:latest-full # toolchain-loaded variant
# 4. grab the wrapper script and install it
# see install.sh for exactly how the wrapper is set up
Image Variants
psyb0t/claudebox:latest (minimal, default)
The default v2 image. Just enough to run Claude Code on top of the aicodebox base: Ubuntu 24.04, git/curl/wget/jq, Node.js 22 LTS + npm, Python 3.12 + uv, Docker CE. Claude has passwordless sudo, so it will install whatever else it needs on the fly via apt-get, pip, npm, etc. Smaller image, faster pull, first run may take longer while Claude sorts out its own tooling.
Use /aicodebox-init.d/*.sh hooks (see Init Hooks) to pre-install your tools on first container create so Claude doesn't burn tokens figuring out package management.
psyb0t/claudebox:latest-full (toolchain-loaded)
Everything pre-installed. Layered on top of the minimal image: Go 1.26, Python 3.12.11 via pyenv, Node.js dev tools, C/C++ toolchain, terraform, kubectl, helm, gh, database clients (sqlite/postgres/mysql/redis), editors (vim/nano/htop/tmux), linters + formatters (flake8/black/isort/pyright/mypy/ruff/eslint/prettier/gofumpt/…). Larger image but Claude wakes up ready.
Auto-generated CLAUDE.md in each workspace listing all available tools, so Claude knows what it has access to
Git identity auto-configured from environment variables
Claude Code CLI with auto-updates disabled by default (opt in with --update)
Workspace trust dialog pre-accepted — no interactive prompts
Custom scripts via ~/.claude/bin (added to PATH automatically)
Init hooks via ~/.claude/init.d/*.sh (run once on first container create)
Always-active skills via ~/.claude/.always-skills/ (injected into every invocation)
Session continuity via --continue / --no-continue / --resume <session_id>
Structured JSON debug logging with DEBUG=true
Authentication
You need either an Anthropic API key or an OAuth token. Set up once, use everywhere:
# interactive OAuth token setup (one-time)
claudebox setup-token
# then use the token for programmatic and headless runs
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-xxx claudebox "do stuff"
# or use an API key directly
ANTHROPIC_API_KEY=sk-ant-api03-xxx claudebox "do stuff"
Modes
claudebox can run in several modes — pick the one that matches how you want to use Claude Code. Each has its own page with full setup, env vars, and examples.
Non-interactive prompt → response for scripts, pipelines, and automation. Plain text, JSON, JSON-verbose (with full tool-call history), and stream-json output formats. Model selection, system prompt overrides, JSON-schema-constrained output, session continuation.
claudebox "explain this codebase" --output-format json --model haiku
MCP server that gives AI agents (Claude Code, Cursor, Windsurf) real interactive terminal sessions — REPLs, SSH, databases, Docker, and any interactive CLI with clean output and smart completion detection
FCoP is a minimal protocol that lets multiple AI agents — running in Cursor, Claude Code, plain shells, CI runners — collaborate through ordinary markdown files in a folder. Agents write TASK-*.md when they're starting work, REPORT-*.md when they're done, ISSUE-*.md when they need clarification.
Most powerful filesystem MCP server for AI agents. Filesystem, shell, Windows internals, reverse engineering, LSP code intelligence, browser automation, and agent orchestration for Claude, Cline, Cursor. Outperforms Claude Code in raw system access.