This guide helps you fork and adapt this template for your own projects. The components are modular -- you are expected to pick and choose what you need, not use everything.
What to expect: The MCP servers, packages, and CI/CD tools are designed to work independently. You can enable a single MCP server (e.g., code-quality) without touching the rest. However, the agent orchestration system (board-driven workflows, PR review pipelines, security wrappers) is tightly integrated and requires more effort to adapt.
- Before You Start: What You Need to Change
- Understanding the Template
- Choose Your Setup Path
- Step-by-Step Customization
- Common Configurations
- Testing Your Setup
- Troubleshooting
This template was built for a specific infrastructure. When forking, you will need to update the following to match your own environment:
| What | Where | Why |
|---|---|---|
| GitHub repository references | .agents.yaml, workflow files, README.md |
Repo URLs point to AndrewAltimit/template-repo |
agent_admins list |
.agents.yaml |
Controls who can approve agent work -- must be your GitHub username |
| GitHub Projects board ID | ai-agents-board.yml |
The board ID is specific to the original repo's GitHub Projects v2 board |
| Key | Required For | How to Get |
|---|---|---|
OPENROUTER_API_KEY |
OpenCode, Crush MCP servers | openrouter.ai |
GOOGLE_API_KEY |
Gemini MCP server | Google AI Studio |
ELEVENLABS_API_KEY |
ElevenLabs Speech MCP server | elevenlabs.io |
GITHUB_TOKEN |
Agent workflows, board-manager, gh-validator | GitHub Settings > Developer Settings > Fine-grained tokens |
CODEX_API_KEY |
You only need keys for the features you enable. The Minimal setup path requires no API keys at all.
The template references machines on the maintainer's LAN. These will not work for you and should be removed or replaced:
| Address | Service | What to Do |
|---|---|---|
192.168.0.152:8007 |
Gaea2 terrain generation | Remove from .mcp.json, or replace with your own Windows machine running Gaea2 |
192.168.0.222:8012 |
AI Toolkit (LoRA training) | Remove, or replace with your own GPU machine |
192.168.0.222:8013 |
ComfyUI (image generation) | Remove, or replace with your own GPU machine |
These addresses appear in .mcp.json.full, docker-compose.yml, and some documentation files. If you don't have dedicated GPU hardware for these services, simply delete them from your configuration.
The CI/CD workflows are configured for a self-hosted GitHub Actions runner. If you use GitHub-hosted runners instead, you will need to change runs-on: self-hosted to runs-on: ubuntu-latest (or similar) in the workflow YAML files. Some features (Docker builds, GPU evaluation) require self-hosted runners.
This template includes:
- 19 MCP Servers - Modular tools (enable only what you need)
- 6 AI Agents - Development automation (all optional)
- Container-First Architecture - Everything runs in Docker
- Self-Hosted CI/CD - GitHub Actions automation
- Zero External Dependencies - Just Docker required
The template provides two MCP configuration files to optimize performance:
.mcp.json (Default - Essential Services):
- Contains only essential services to prevent context window overload
- Includes: code-quality, AI agents (Gemini, OpenCode, Crush; Codex disabled)
- Best for day-to-day development and code review
- Recommended for most users
.mcp.json.full (Complete - All Services):
- Contains all 19 MCP servers including specialized tools
- Includes: content creation, 3D graphics, media tools, remote services
- Use when you need specialized content creation or media processing
- Switch to this configuration only when needed to avoid overloading Claude's context window
Why two configs? Claude Code loads all MCP tool definitions into its context window. Having too many tools can reduce performance and response quality. By default, use .mcp.json with essential services, and only switch to .mcp.json.full when you need specialized tools.
Enable/Disable Any Component:
- MCP servers (code quality, content creation, etc.)
- AI agents (Claude, Gemini, OpenCode, etc.)
- CI/CD workflows
- Remote services (Gaea2, ComfyUI, AI Toolkit)
Replace With Your Own:
- API keys and authentication
- Remote server addresses
- Docker configurations
- GitHub workflows
Perfect for: Small projects, learning MCP, quick prototypes
What you get:
- Code quality tools (formatting, linting)
- Basic CI/CD
- No AI agents or complex servers
Perfect for: Solo developers, AI-assisted coding
What you get:
- Code quality + AI code generation
- OpenCode/Crush for code assistance
- Optional Gemini for reviews
Perfect for: Technical content, documentation, visualizations
What you get:
- Manim animations, LaTeX documents
- Video editing, speech synthesis
- Meme generation for documentation
Jump to Content Creation Setup
Perfect for: Complex projects, teams, maximum automation
What you get:
- All MCP servers and AI agents
- Complete CI/CD automation
- Remote GPU services
-
Clone the repository:
git clone https://github.com/AndrewAltimit/template-repo your-project-name cd your-project-name # CAUTION: This command deletes the existing Git history. rm -rf .git # Detach from the template's history to start your own project git init # Start fresh with your own Git history
-
Install Docker (if not already installed):
# Ubuntu/Debian curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER # Log out and back in for group changes to take effect
-
Create your environment file:
cp .env.example .env # Edit .env with your settings
Requires: Docker only (no API keys)
-
Disable unnecessary MCP servers in
.mcp.json:{ "mcpServers": { "code-quality": { /* Keep this */ }, // Comment out or remove other servers } } -
Simplify docker-compose.yml:
version: '3.8' services: python-ci: # Keep this for testing mcp-code-quality: # Keep this for code quality # Remove or comment out other services
-
Remove AI agent dependencies:
# No need to install github_agents package # Skip API key setup
-
Test your minimal setup:
# Start only essential services docker compose up -d python-ci mcp-code-quality # Run code quality checks automation-cli ci run format automation-cli ci run lint-basic
Requires: Docker + at least one API key (OpenRouter, Gemini, or OpenAI)
-
Configure AI services in
.env:# For OpenCode/Crush OPENROUTER_API_KEY="your-openrouter-key" # For Gemini (optional) GEMINI_API_KEY="your-gemini-key" # Or use web auth for free tier
-
Enable AI MCP servers in
.mcp.json:{ "mcpServers": { "code-quality": { /* ... */ }, "opencode": { "command": "mcp-opencode", "args": ["--mode", "stdio"], "env": { "OPENROUTER_API_KEY": "{OPENROUTER_API_KEY}" } }, "crush": { "command": "mcp-crush", "args": ["--mode", "stdio"], "env": { "OPENROUTER_API_KEY": "{OPENROUTER_API_KEY}" } }, "gemini": { "command": "mcp-gemini", "args": ["--mode", "stdio"], "env": { "GOOGLE_API_KEY": "{GOOGLE_API_KEY}" } } } } -
Build GitHub Agents CLI (optional):
# Build the Rust CLI for issue/PR monitoring cd tools/rust/github-agents-cli && cargo build --release
-
Test AI features:
# Test OpenCode ./tools/cli/agents/run_opencode.sh -q "Write a Python fibonacci function" # Test Crush ./tools/cli/agents/run_crush.sh -q "Convert this to TypeScript: def add(a, b): return a + b" # Test Gemini (if configured) ./tools/cli/agents/run_gemini.sh
Safety Training: Before deploying AI agents in production, review the AI Safety Training Guide to understand potential risks, deceptive behaviors, and safety protocols for human-AI collaboration.
Requires: Docker + optional ElevenLabs API key for speech
-
Enable content MCP servers in
.mcp.json:{ "mcpServers": { "content-creation": { "command": "python", "args": ["-m", "mcp_content_creation.server"] }, "meme-generator": { "command": "python", "args": ["-m", "mcp_meme_generator.server"] }, "elevenlabs-speech": { "command": "python", "args": ["-m", "mcp_elevenlabs_speech.server"], "env": { "ELEVENLABS_API_KEY": "{ELEVENLABS_API_KEY}" } }, "video-editor": { "command": "python", "args": ["-m", "mcp_video_editor.server"] } } } -
Configure API keys (if using speech):
# In .env ELEVENLABS_API_KEY="your-elevenlabs-key"
-
Start content services:
docker compose up -d mcp-content-creation mcp-video-editor
-
Test content creation:
# Test server health python automation/testing/test_all_servers.py --quick
Requires: Docker, Rust toolchain, all API keys, self-hosted GitHub Actions runner. Remote GPU services (Gaea2, AI Toolkit, ComfyUI) require dedicated hardware on your network.
Note: This path requires the most adaptation. You will need to update remote server addresses, GitHub Projects board IDs, the
agent_adminslist, and workflow runner labels. See Before You Start for the full list.
-
Enable all MCP servers (use
.mcp.json.fullas your starting point) -
Configure all API keys in
.env:OPENROUTER_API_KEY="your-key" GEMINI_API_KEY="your-key" ELEVENLABS_API_KEY="your-key" GITHUB_TOKEN="your-token"
-
Set up remote services (if you have the hardware):
# For Gaea2 (requires a Windows machine running Gaea2) GAEA2_REMOTE_HOST="your-windows-machine-ip" GAEA2_REMOTE_PORT="8007" # For AI Toolkit & ComfyUI (requires a machine with an NVIDIA GPU) AI_TOOLKIT_URL="http://your-gpu-machine-ip:8012" COMFYUI_URL="http://your-gpu-machine-ip:8013"
If you don't have dedicated hardware for these, remove the
gaea2,ai-toolkit, andcomfyuientries from.mcp.jsonand their services fromdocker-compose.yml. -
Install all components:
# Build GitHub Agents CLI (Rust) cd tools/rust/github-agents-cli && cargo build --release cd ../../.. # Return to project root # Start all services docker compose up -d # Verify everything is running docker compose ps python automation/testing/test_all_servers.py
# Remove from .mcp.json
# Skip building GitHub Agents CLI
# Remove AI-related GitHub workflows
rm -f .github/workflows/pr-validation.yml
rm -f .github/workflows/issue-monitor.yml// In .mcp.json, remove:
"gaea2": { /* ... */ },
"ai-toolkit": { /* ... */ },
"comfyui": { /* ... */ }# Remove workflows you don't need
rm -rf .github/workflows/
# Or selectively keep what you want# In docker-compose.yml
services:
mcp-code-quality:
ports:
- "9010:8010" # Change host port# In .env
GAEA2_REMOTE_HOST="your-server.com"
AI_TOOLKIT_URL="http://your-gpu-server:8012"# Remove remote server configurations
# Run all MCP servers in HTTP mode locally
docker compose up -d// Keep these MCP servers:
"code-quality": { /* ... */ }, // Formatting & linting
"gemini": { /* ... */ } // Code review// Add these:
"code-quality": { /* ... */ }, // ESLint, Prettier support
"opencode": { /* ... */ }, // AI code generation
"crush": { /* ... */ } // Quick conversions// Focus on:
"content-creation": { /* ... */ }, // LaTeX, diagrams
"meme-generator": { /* ... */ }, // Visual elements
"elevenlabs-speech": { /* ... */ } // Audio documentation// Include:
"ai-toolkit": { /* ... */ }, // LoRA training
"comfyui": { /* ... */ }, // Image generation
"blender": { /* ... */ } // 3D visualization# Test all enabled servers
python automation/testing/test_all_servers.py --quick
# Test specific server
curl http://localhost:8010/health # Code quality
curl http://localhost:8011/health # Content creation- Open Claude Code (claude.ai/code)
- Check that your MCP tools appear in the tools list
- Test a simple command for each server
# Build the automation CLI (one-time)
cargo build --release -p automation-cli
# Run full CI to verify setup
automation-cli ci run full
# Or test individually
automation-cli ci run format
automation-cli ci run test# Check what's using the port
sudo lsof -i :8010
# Change port in docker-compose.yml
# Or stop conflicting service# Check if container is running
docker compose ps
# Check logs
docker compose logs mcp-code-quality
# Restart service
docker compose restart mcp-code-quality# Verify .env file
cat .env | grep API_KEY
# Restart services after changing .env
docker compose down
docker compose up -d# Fix Docker permissions
sudo usermod -aG docker $USER
# Log out and back in
# Fix file permissions
sudo chown -R $USER:$USER .Note: The maintainer does not provide support, guidance, or consulting for users of this template. You are on your own. See CONTRIBUTING.md.
-
Check existing documentation:
-
Review example configurations:
.env.example- All available environment variables.mcp.json- Full MCP server configurationdocker-compose.yml- All service definitions
-
Debug commands:
# Check Docker status docker compose ps docker compose logs [service-name] # Test Python MCP servers python tools/mcp/mcp_code_quality/scripts/test_server.py # Test Rust MCP servers (health endpoint) curl http://localhost:8006/health # mcp-gemini curl http://localhost:8014/health # mcp-opencode curl http://localhost:8015/health # mcp-crush curl http://localhost:8021/health # mcp-codex # Validate configuration python automation/testing/validate_config.py
After customizing your template:
-
Remove unused code:
# Remove MCP servers you're not using rm -rf tools/mcp/mcp_[unused-server]/ # Remove unused documentation rm -rf docs/integrations/[unused-integration]/
-
Update documentation:
- Edit
README.mdto reflect your configuration - Update
CLAUDE.mdwith your project-specific instructions - Remove references to disabled features
- Edit
-
Commit your customized template:
git add . git commit -m "Customize template for [your project type]" git remote add origin [your-repo-url] git push -u origin main
-
Set up CI/CD (optional):
- Configure GitHub secrets for your API keys
- Set up self-hosted runner (see guide)
- Enable only workflows you need
The modular architecture means you can always add or remove components later as your project evolves. Start simple and add complexity only when needed.