Open Source · Built with Rust

Claude Code,
containerized & safe

ai-pod runs Claude Code inside isolated Podman containers so your AI has exactly the tools it needs — and nothing it shouldn't touch.

Get started View on GitHub
$ curl -fsSL https://raw.githubusercontent.com/mismosmi/ai-pod/main/install.sh | bash

Everything Claude needs.
Nothing you don't want it to have.

Each workspace gets its own container with full isolation, persistent state, and fine-grained host access — all managed automatically.

📦

Per-workspace isolation

Every directory gets a dedicated Podman container, named by a hash of its path. Projects can't interfere with each other.

💾

Persistent Claude state

A named volume preserves ~/.claude across sessions — your login, memory, settings, and conversation history survive container restarts.

🔐

Credential scanning

Before mounting your workspace, ai-pod scans for secrets and credential files and prompts you to review or abort — keeping sensitive data out of the container.

🐳

Custom Dockerfiles per project

Add an ai-pod.Dockerfile to any project, starting from any base image. Node, Python, Rust, Playwright — whatever your project needs.

⚙️

Settings & CLAUDE.md merging

Your host ~/.claude/settings.json and CLAUDE.md are merged with container defaults at launch, so your personal Claude preferences follow you everywhere.

🖥️

Host command execution

The bundled host-tools binary lets Claude run commands on the host machine. Every command requires your explicit approval — with a persistent allowlist for trusted ones.

🔔

Desktop notifications

When a Claude session ends, ai-pod sends a native desktop notification to the host so you know exactly when to come back.

🌐

Transparent host networking

Containers reach host services at host.containers.internal, so Claude can hit your local dev server, database, or API without any manual port mapping.

🔄

Auto-update checks

ai-pod silently checks for new releases on startup and lets you know when there's a newer version available — no manual polling needed.


Zero config to get started

ai-pod handles container lifecycle, image building, server management, and credential checking automatically. You just run it.

Scan for credentials

The workspace is scanned for secrets before anything is mounted into a container.

Build the image

Your ai-pod.Dockerfile is used to build a project-specific image. Rebuilt only when the file changes.

Start the shared server

A lightweight background server starts on the host, bridging host-interaction requests from all containers.

Launch the container

Your workspace is mounted, settings are injected, and Claude Code starts inside the isolated container.


Simple CLI, powerful options

One command to launch. A handful more for everything else.

Common commands
# Launch Claude in current directory
ai-pod

# Launch in a specific directory
ai-pod --workdir /path/to/project

# Force rebuild the container image
ai-pod --rebuild

# Resume the last Claude session
ai-pod run claude resume

# Open a shell in the container
ai-pod run bash
Project setup & management
# Create a custom Dockerfile
ai-pod init

# Build image without launching
ai-pod build

# List all Claude containers
ai-pod list

# Remove container for current workspace
ai-pod clean

# Skip credential scan
ai-pod --no-credential-check
host-tools (inside container)
# Run a command on the host
host-tools run-command ls ~/Desktop

# Open a URL in the host browser
host-tools run-command open https://example.com

# List previously approved commands
host-tools run-command --list

# Send a desktop notification
host-tools notify-user "Build finished"
ai-pod.Dockerfile example
# Start from any base image you need
FROM node:22

# Add Playwright for browser testing
RUN npx playwright install --with-deps

# Install a project-specific MCP server
RUN npm install -g @my-org/mcp-server

Safe by default

ai-pod is built around the assumption that you shouldn't have to fully trust the AI with your whole machine. Defense-in-depth, not just a checkbox.

  • Credential scanning before mount Detects .env files, API keys, SSH keys, and other secrets in your workspace before they reach the container.
  • Explicit host command approval Claude can only run host commands that you have explicitly approved. A persistent allowlist means you only say yes once per command.
  • Container-level isolation Each project lives in its own Podman container. Compromised dependencies in one project can't reach another.
  • Symlink trick for .env files Move secrets outside the workspace and symlink them back. The container never sees them; your app still works.
  • Rootless containers via Podman No daemon running as root. Podman's rootless mode keeps the blast radius small even if something goes wrong.

One line to install

Works on Linux and macOS. Requires Podman.

$ curl -fsSL https://raw.githubusercontent.com/mismosmi/ai-pod/main/install.sh | bash
View on GitHub Releases