Skip to main content
info

This documentation is automatically synchronized from the claude-hub repository. Last updated: 2025-06-01

Claude GitHub Webhook Container Setup

This document explains how to set up and use the Claude GitHub Webhook service with container mode.

Overview

The Claude GitHub Webhook service can operate in two modes:

  1. Direct mode - Runs Claude Code CLI directly on the host
  2. Container mode - Runs Claude in isolated Docker containers (recommended for production)

Container mode provides several benefits:

  • Isolation between requests
  • Cleaner environment for each execution
  • Better security and resource management
  • Automatic repository caching for improved performance

Requirements

  • Docker
  • Node.js (v20+)
  • GitHub Personal Access Token (with repo scope)
  • Anthropic API Key or AWS Bedrock credentials

Setup Instructions

1. Environment Configuration

Create a .env file with the following variables:

# GitHub Configuration
GITHUB_TOKEN=your_github_token
GITHUB_WEBHOOK_SECRET=your_webhook_secret

# Claude Configuration
ANTHROPIC_API_KEY=sk-ant-yourkey

# Container Configuration
CLAUDE_USE_CONTAINERS=1
CLAUDE_CONTAINER_IMAGE=claudecode:latest
REPO_CACHE_DIR=/path/to/repo/cache
REPO_CACHE_MAX_AGE_MS=3600000

# Optional: AWS Bedrock Configuration (if not using direct Anthropic API)
CLAUDE_CODE_USE_BEDROCK=1
AWS_ACCESS_KEY_ID=your_aws_key_id
AWS_SECRET_ACCESS_KEY=your_aws_secret
AWS_REGION=us-west-2

2. Building the Claude Container

Build the Claude Code container:

docker build -f Dockerfile.claudecode -t claudecode:latest .

This will:

  • Build the Docker container with Claude Code CLI
  • Create the claudecode:latest image for use by the service

3. Running the Service

Start the service using Docker Compose:

docker compose up -d

This will start the webhook service that listens for GitHub events.

4. Testing the Setup

You can test the Claude API directly:

node test-claude-api.js owner/repo container "Your command here"

Repository Caching

The service includes automatic repository caching to improve performance:

  • Repositories are cached in the directory specified by REPO_CACHE_DIR
  • Cache expiration is controlled by REPO_CACHE_MAX_AGE_MS (default: 1 hour)
  • Stale caches are automatically refreshed

Security Considerations

  • All GitHub tokens are passed via environment variables
  • Container isolation prevents repository data from persisting between requests
  • Webhook requests are verified using the GitHub webhook secret
  • Test mode can be enabled using NODE_ENV=test or SKIP_WEBHOOK_VERIFICATION=1

Troubleshooting

Common Issues

  1. Container not found

    • Ensure the container was built successfully
    • Check that CLAUDE_CONTAINER_IMAGE matches the actual image name
  2. Permission denied for repo cache

    • Ensure the service has write permissions to REPO_CACHE_DIR
  3. GitHub token issues

    • Verify your token has the repo scope
    • Check that the token is valid and not expired
  4. Claude API errors

    • Verify your Anthropic API key or AWS credentials
    • Check logs for specific error messages

Logs

Container execution logs are available through Docker:

docker compose logs -f webhook

For more detailed logging, set the log level in your .env:

LOG_LEVEL=debug