Run Claude Code with the Babysitter SDK and plugin in a Docker container.
- Docker and Docker Compose installed
- An Anthropic API key or Azure Foundry credentials
Pull from GitHub Container Registry:
# Production (stable)
docker pull ghcr.io/a5c-ai/babysitter/babysitter:production
# Staging (pre-release)
docker pull ghcr.io/a5c-ai/babysitter/babysitter:staging
# Development (latest features)
docker pull ghcr.io/a5c-ai/babysitter/babysitter:developdocker build -t babysitter .Or with docker-compose:
docker-compose buildSet your API key and run with a prompt:
# Using docker run with Anthropic API
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e PROMPT="Create a simple hello world app" \
-v $(pwd):/workspace \
babysitter
# Using Azure Foundry
docker run -it \
-e CLAUDE_CODE_USE_FOUNDRY=1 \
-e ANTHROPIC_FOUNDRY_RESOURCE=your-resource-name \
-e ANTHROPIC_FOUNDRY_API_KEY=$ANTHROPIC_FOUNDRY_API_KEY \
-e PROMPT="Create a simple hello world app" \
-v $(pwd):/workspace \
babysitterStart an interactive Claude Code session:
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
babysitterdocker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
babysitter "Build a REST API with Express"| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
Yes* | Your Anthropic API key |
CLAUDE_CODE_USE_FOUNDRY |
No | Set to 1 to use Azure Foundry |
ANTHROPIC_FOUNDRY_RESOURCE |
Yes** | Azure Foundry resource name |
ANTHROPIC_FOUNDRY_API_KEY |
Yes** | Azure Foundry API key |
PROMPT |
No | The prompt to pass to /babysitter:babysit |
OUTPUT_FORMAT |
No | Output format: text (default), json, or stream-json |
* Required if not using Azure Foundry ** Required if using Azure Foundry
Mount your project directory to /workspace:
-v /path/to/your/project:/workspaceThe container's working directory is /workspace by default.
The entrypoint automatically invokes the /babysitter:babysit skill with your prompt. This enables:
- Orchestrated workflow execution
- Event-sourced state management
- Human-in-the-loop approval (when running interactively)
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e PROMPT="Implement TDD for a calculator module" \
-v $(pwd):/workspace \
babysittercd /path/to/your/project
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
babysitter "Add unit tests for the user service"docker run -d \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e PROMPT="Long running task" \
-v $(pwd):/workspace \
--name my-babysitter \
babysitter
# Check logs
docker logs -f my-babysitter
# Stop
docker stop my-babysitterCreate a task.md file in your workspace:
Create a file named `output.txt` with the text "Task completed!"Then run:
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
babysitter "Read task.md and execute the instructions"# Build for ARM64 (Apple Silicon)
docker buildx build --platform linux/arm64 -t babysitter:arm64 .
# Build for AMD64
docker buildx build --platform linux/amd64 -t babysitter:amd64 .
# Multi-platform build
docker buildx build --platform linux/amd64,linux/arm64 -t babysitter:latest .Make sure to pass your API credentials:
# For Anthropic API
export ANTHROPIC_API_KEY=your-api-key-here
docker run -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY ...
# For Azure Foundry
export ANTHROPIC_FOUNDRY_API_KEY=your-foundry-key
docker run -e CLAUDE_CODE_USE_FOUNDRY=1 \
-e ANTHROPIC_FOUNDRY_RESOURCE=your-resource \
-e ANTHROPIC_FOUNDRY_API_KEY=$ANTHROPIC_FOUNDRY_API_KEY ...The babysitter plugin is pre-installed and loaded via --plugin-dir. To verify:
# Enter the container
docker run -it --entrypoint /bin/bash babysitter
# Check plugin installation
ls -la /home/claude/.claude/plugins/cache/a5c-ai/babysitter/4.0.128/
cat /home/claude/.claude/plugins/cache/a5c-ai/babysitter/4.0.128/plugin.jsonThe container runs as a non-root claude user. On Linux, you may need to ensure the mounted directory is accessible:
# Option 1: Make the directory world-readable/writable
chmod -R 777 /path/to/your/project
# Option 2: Match the container user's UID (1000 by default)
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
--user 1000:1000 \
babysitter- Base Image:
node:20-bookworm - User:
claude(non-root, required for--dangerously-skip-permissions) - Includes: Claude Code, Babysitter SDK CLI, jq, git, bash
- Plugin Path:
/home/claude/.claude/plugins/cache/a5c-ai/babysitter/4.0.128 - Working Directory:
/workspace - Entrypoint: Invokes
/babysitter:babysitwith the provided prompt
Docker images are automatically built and published to GitHub Container Registry on push to specific branches:
| Branch | Image Tag | Description |
|---|---|---|
main |
production, latest |
Stable production releases |
staging |
staging |
Pre-release testing |
develop |
develop |
Latest development features |
Each build also creates a SHA-tagged image for traceability:
ghcr.io/a5c-ai/babysitter/babysitter:main-abc1234ghcr.io/a5c-ai/babysitter/babysitter:staging-def5678ghcr.io/a5c-ai/babysitter/babysitter:develop-ghi9012
Trigger a manual build via GitHub Actions:
- Go to Actions → "Docker Manual Build"
- Click "Run workflow"
- Enter a custom tag and select target platforms
All images are built for:
linux/amd64(Intel/AMD)linux/arm64(Apple Silicon, ARM servers)