Skip to content

Latest commit

 

History

History
266 lines (192 loc) · 6.46 KB

File metadata and controls

266 lines (192 loc) · 6.46 KB

Babysitter Docker Guide

Run Claude Code with the Babysitter SDK and plugin in a Docker container.

Prerequisites

  • Docker and Docker Compose installed
  • An Anthropic API key or Azure Foundry credentials

Quick Start

Option A: Use Pre-built Images (Recommended)

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:develop

Option B: Build Locally

docker build -t babysitter .

Or with docker-compose:

docker-compose build

Run with a Prompt

Set 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 \
  babysitter

3. Interactive Mode

Start an interactive Claude Code session:

docker run -it \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -v $(pwd):/workspace \
  babysitter

4. Pass Prompt as Command Arguments

docker run -it \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -v $(pwd):/workspace \
  babysitter "Build a REST API with Express"

Environment Variables

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

Volume Mounts

Mount your project directory to /workspace:

-v /path/to/your/project:/workspace

The container's working directory is /workspace by default.

How It Works

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)

Examples

Run a Babysitter Orchestration

docker run -it \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -e PROMPT="Implement TDD for a calculator module" \
  -v $(pwd):/workspace \
  babysitter

Use with an Existing Project

cd /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"

Run in Detached Mode

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-babysitter

Run with Task File

Create 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"

Building for Different Architectures

# 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 .

Troubleshooting

"Error: ANTHROPIC_API_KEY or ANTHROPIC_FOUNDRY_API_KEY environment variable is required"

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 ...

Plugin not loading

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.json

Permission issues with mounted volumes

The 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

Image Details

  • 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:babysit with the provided prompt

CI/CD Pipeline

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

Image Tags

Each build also creates a SHA-tagged image for traceability:

  • ghcr.io/a5c-ai/babysitter/babysitter:main-abc1234
  • ghcr.io/a5c-ai/babysitter/babysitter:staging-def5678
  • ghcr.io/a5c-ai/babysitter/babysitter:develop-ghi9012

Manual Builds

Trigger a manual build via GitHub Actions:

  1. Go to Actions → "Docker Manual Build"
  2. Click "Run workflow"
  3. Enter a custom tag and select target platforms

Supported Platforms

All images are built for:

  • linux/amd64 (Intel/AMD)
  • linux/arm64 (Apple Silicon, ARM servers)