This project is under active development. We're working towards a public release that will be available for general use by the end of Q3 2024 (September 2024). The platform is currently in beta and being refined based on internal usage and feedback.
Current Status: ✅ Core platform architecture implemented ✅ MCP server integration working ✅ Kubernetes controllers operational ✅ GitHub Apps authentication system 🔄 Documentation and user experience improvements 🔄 Public release preparation
Five specialized agents with distinct personalities working together 24/7
✍️ Personality: Articulate & organized Morgan generates comprehensive documentation via |
🦀 Personality: Hardcore backend engineer Rex builds APIs, services, and backend infrastructure through |
🎨 Personality: Creative & UX obsessed Blaze creates stunning frontends and user experiences, working alongside Rex for full-stack projects. |
🎨 Personality: Meticulous & wise Cleo reviews code, refactors for quality, and ensures enterprise-grade standards in the QA phase of |
🕵️ Personality: Curious & thorough Tess creates comprehensive tests, validates functionality, and ensures reliability in the testing phase of |
🛡️ Personality: Vigilant & protective Cipher handles security reviews, vulnerability scanning, and ensures enterprise-grade security across all workflows. |
Watch the magic happen when they work together:
📚 Phase 1 via |
⚡ Phase 2 via |
🛡️ Phase 3 via |
💡 Project Flexibility:
**🦀 Backend Projects** Rex builds APIs, services, databases |
**✨ Frontend Projects** Blaze creates UIs, dashboards, apps |
**🚀 Full-Stack Projects** Rex & Blaze work together seamlessly |
**🛡️ Quality Always** Cleo reviews, Tess tests, Cipher secures |
Fast • Elegant • Tested • Documented • Secure
It's like having a senior development team that never sleeps, never argues, and always delivers! 🎭
The Cognitive Task Orchestrator provides powerful tools for AI-driven development:
Morgan analyzes your Task Master projects and creates comprehensive documentation automatically.
- Task breakdowns with acceptance criteria
- Implementation prompts for other agents
- Architecture documentation
- Automatic GitHub PR submission
The entire team orchestrates complex multi-agent workflows with event-driven coordination.
- Phase 1 - Implementation: Rex/Blaze build the core functionality
- Phase 2 - Quality Assurance: Cleo reviews and refactors
- Phase 3 - Testing & Security: Tess validates, Cipher secures
- Event-Driven Coordination: Automatic handoffs between phases
- GitHub Integration: Each phase submits detailed PRs
Automatically process PRDs and create structured TaskMaster projects.
- Reads project requirements and architecture
- Generates comprehensive task breakdown
- Creates TaskMaster structure with tasks.json
- Submits project setup as GitHub PR
Control and monitor your AI development workflows:
jobs()
- List all running workflows with statusstop_job()
- Stop any running workflow gracefullyinput()
- Send live messages to running AI agentsdocs_ingest()
- Intelligently analyze and ingest documentation from GitHub repos
All operations run as Kubernetes jobs with enhanced reliability through TTL-safe reconciliation, preventing infinite loops and ensuring proper resource cleanup.
- Access to a Cursor/Claude environment with MCP support
- A project with Task Master initialized (
.taskmaster/
directory) - GitHub repository for your project
This is an integrated platform with crystal-clear data flow:
Component Architecture:
- MCP Server (
cto-mcp
): Handles MCP protocol calls from Cursor/Claude with configuration-driven defaults - Controller Service: Kubernetes REST API that manages CodeRun/DocsRun CRDs via Argo Workflows
- Argo Workflows: Orchestrates agent deployment through workflow templates
- Kubernetes Controllers: Separate controllers for CodeRun and DocsRun resources with TTL-safe reconciliation
- Agent Workspaces: Isolated persistent volumes for each service with session continuity
- GitHub Apps: Secure authentication system replacing personal tokens
Data Flow:
- Cursor/Claude calls MCP tools (
docs()
,play()
,intake_prd()
, etc.) via MCP protocol - MCP server loads configuration from
cto-config.json
and applies defaults - MCP server submits workflow to Argo with all required parameters
- Argo Workflows creates CodeRun/DocsRun custom resources
- Dedicated Kubernetes controllers reconcile CRDs with idempotent job management
- Controllers deploy CLI agents (Claude Code, Cursor, Codex, OpenCode, Factory) as Jobs with workspace isolation
- Agents authenticate via GitHub Apps and complete work
- Agents submit GitHub PRs with automatic cleanup
# Add the 5dlabs Helm repository
helm repo add 5dlabs https://5dlabs.github.io/cto
helm repo update
# Install Custom Resource Definitions (CRDs) first
kubectl apply -f https://raw.githubusercontent.com/5dlabs/cto/main/infra/charts/agent-platform/crds/platform-crds.yaml
# Install the agent-platform
helm install agent-platform 5dlabs/agent-platform --namespace agent-platform --create-namespace
# Setup agent secrets (interactive)
wget https://raw.githubusercontent.com/5dlabs/cto/main/infra/scripts/setup-agent-secrets.sh
chmod +x setup-agent-secrets.sh
./setup-agent-secrets.sh --help
Requirements:
- Kubernetes 1.19+
- Helm 3.2.0+
- GitHub Personal Access Token
- Anthropic API Key
What you get:
- Complete agent-platform platform deployed to Kubernetes
- REST API for task management
- Separate Kubernetes controllers for CodeRun/DocsRun resources with TTL-safe reconciliation
- Agent workspace management and isolation with persistent volumes
- Automatic resource cleanup and job lifecycle management
- MCP tools that connect to your deployment
To access your Kubernetes cluster from anywhere (not just local network), install TwinGate connector:
# Add TwinGate Helm repository
helm repo add twingate https://twingate.github.io/helm-charts
helm repo update
# Install TwinGate connector (replace tokens with your actual values)
helm upgrade --install twingate-weightless-hummingbird twingate/connector \
-n default \
--set connector.network="maroonsnake" \
--set connector.accessToken="your-access-token" \
--set connector.refreshToken="your-refresh-token"
Important: After installation, add your Kubernetes service CIDR as resources in TwinGate admin panel. This enables the MCP tools to reach the agent-platform service using internal Kubernetes service URLs (e.g., http://agent-platform.agent-platform.svc.cluster.local
) from anywhere.
For Cursor/Claude integration, install the MCP server:
# One-liner installer (Linux/macOS)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/5dlabs/cto/releases/download/v0.2.0/tools-installer.sh | sh
# Verify installation
cto-mcp --help # MCP server for Cursor/Claude integration
What you get:
cto-mcp
- MCP server that integrates with Cursor/Claude- Multi-platform support (Linux x64/ARM64, macOS Intel/Apple Silicon, Windows x64)
- Automatic installation to system PATH
Create a cto-config.json
file in your project root to configure agents, models, tool access, and workflow defaults:
{
"version": "1.0",
"defaults": {
"docs": {
"model": "claude-opus-4-1-20250805",
"githubApp": "5DLabs-Morgan",
"includeCodebase": false,
"sourceBranch": "main"
},
"play": {
"model": "claude-sonnet-4-20250514",
"cli": "claude",
"implementationAgent": "5DLabs-Rex",
"qualityAgent": "5DLabs-Cleo",
"testingAgent": "5DLabs-Tess",
"repository": "your-org/your-repo",
"service": "your-service",
"docsRepository": "your-org/your-docs-repo",
"docsProjectDirectory": "docs"
},
"intake": {
"githubApp": "5DLabs-Morgan",
"primary": {
"model": "opus",
"provider": "claude-code"
},
"research": {
"model": "opus",
"provider": "claude-code"
},
"fallback": {
"model": "gpt-5",
"provider": "openai"
}
},
"docs_ingest": {
"model": "claude-sonnet-4-20250514",
"docServerUrl": "http://doc-server-agent-docs-server.mcp.svc.cluster.local:80"
}
},
"agents": {
"morgan": {
"githubApp": "5DLabs-Morgan",
"cli": "claude",
"model": "claude-sonnet-4-20250514",
"tools": {
"remote": [
"memory_create_entities",
"memory_add_observations",
"brave_search_brave_web_search",
"rustdocs_query_rust_docs"
],
"localServers": {
"filesystem": {
"enabled": true,
"tools": ["read_file", "write_file", "list_directory", "search_files", "directory_tree"]
},
"git": {
"enabled": true,
"tools": ["git_status", "git_diff", "git_log", "git_show"]
}
}
}
},
"rex": {
"githubApp": "5DLabs-Rex",
"cli": "codex",
"model": "gpt-5-codex",
"tools": {
"remote": [
"memory_create_entities",
"memory_add_observations",
"rustdocs_query_rust_docs"
],
"localServers": {
"filesystem": {
"enabled": true,
"tools": ["read_file", "write_file", "list_directory", "search_files", "directory_tree"]
},
"git": {
"enabled": true,
"tools": ["git_status", "git_diff", "git_log", "git_show"]
}
}
}
},
"cleo": {
"githubApp": "5DLabs-Cleo",
"cli": "claude",
"model": "claude-sonnet-4-20250514",
"tools": {
"remote": ["memory_create_entities", "memory_add_observations", "rustdocs_query_rust_docs"],
"localServers": {
"filesystem": {"enabled": true, "tools": ["read_file", "write_file", "list_directory", "search_files", "directory_tree"]},
"git": {"enabled": true, "tools": ["git_status", "git_diff", "git_log", "git_show"]}
}
}
},
"tess": {
"githubApp": "5DLabs-Tess",
"cli": "claude",
"model": "claude-sonnet-4-20250514",
"tools": {
"remote": ["memory_create_entities", "memory_add_observations"],
"localServers": {
"filesystem": {"enabled": true, "tools": ["read_file", "write_file", "list_directory", "search_files", "directory_tree"]},
"git": {"enabled": true, "tools": ["git_status", "git_diff"]}
}
}
}
}
}
Agent Configuration Fields:
githubApp
: GitHub App name for authenticationcli
: Which CLI to use (claude
,cursor
,codex
,opencode
,factory
)model
: Model identifier for the CLItools
(optional): Fine-grained tool access controlremote
: Array of remote tool names from ToolmanlocalServers
: Local MCP server configurations- Each server specifies
enabled
and whichtools
the agent can access
- Each server specifies
Benefits:
- CLI Flexibility: Different agents can use different CLIs
- Model Selection: Each agent can use its optimal model
- Tool Profiles: Customize tool access per agent
- Security: Restrict agent capabilities as needed
After creating your configuration file, configure Cursor to use the MCP server by creating a .cursor/mcp.json
file in your project directory:
{
"mcpServers": {
"cto-mcp": {
"command": "cto-mcp",
"args": [],
"env": {}
}
}
}
Usage:
- Create the
cto-config.json
file in your project root with your specific settings - Create the
.cursor/mcp.json
file to enable MCP integration - Restart Cursor to load the MCP server
- All MCP tools will be available with your configured defaults
Benefits of Configuration-Driven Approach:
- Simplified MCP Calls: Most parameters have sensible defaults from your config
- Dynamic Agent Lists: Tool descriptions show available agents from your config
- Consistent Settings: All team members use the same model/agent assignments
- Easy Customization: Change defaults without modifying MCP server setup
The platform supports multiple AI coding assistants with the same unified architecture. Choose the CLI that best fits your workflow:
Official Anthropic CLI
|
Popular AI editor
|
Multi-model support
|
Open-source CLI
|
Autonomous AI CLI
|
How It Works:
- Each agent in
cto-config.json
specifies itscli
andmodel
- Controllers automatically use the correct CLI for each agent
- All CLIs follow the same template structure
- Seamless switching between CLIs per-agent
Example Multi-CLI Configuration:
{
"agents": {
"morgan": {
"githubApp": "5DLabs-Morgan",
"cli": "claude",
"model": "claude-opus-4-20250514",
"tools": {
"remote": ["brave_search_brave_web_search", "rustdocs_query_rust_docs"]
}
},
"rex": {
"githubApp": "5DLabs-Rex",
"cli": "factory",
"model": "gpt-5-factory-high",
"tools": {
"remote": ["memory_create_entities", "rustdocs_query_rust_docs"]
}
},
"blaze": {
"githubApp": "5DLabs-Blaze",
"cli": "opencode",
"model": "claude-sonnet-4-20250514",
"tools": {
"remote": ["brave_search_brave_web_search"]
}
},
"cleo": {
"githubApp": "5DLabs-Cleo",
"cli": "cursor",
"model": "claude-sonnet-4-20250514",
"tools": {
"localServers": {
"filesystem": {"enabled": true, "tools": ["read_file", "write_file"]}
}
}
},
"tess": {
"githubApp": "5DLabs-Tess",
"cli": "codex",
"model": "gpt-4o",
"tools": {
"remote": ["memory_add_observations"]
}
}
}
}
Each agent independently configured with its own CLI, model, and tool access.
The platform exposes 7 powerful MCP tools for AI-driven development:
Analyzes your Task Master project and creates comprehensive documentation.
// Minimal call using config defaults
docs({
working_directory: "projects/my-app"
});
// Override specific parameters if needed
docs({
working_directory: "projects/my-app",
agent: "morgan",
model: "claude-opus-4-20250514",
include_codebase: true
});
What Morgan does:
✅ Analyzes all tasks in your Task Master project
✅ Generates comprehensive documentation
✅ Creates implementation guidance for other agents
✅ Submits a GitHub PR with all documentation
Executes complex multi-agent workflows with event-driven coordination.
// Minimal call - the whole team collaborates!
play({
task_id: 1
});
// Customize agent assignments
play({
task_id: 1,
implementation_agent: "rex",
quality_agent: "cleo",
testing_agent: "tess",
repository: "myorg/my-project"
});
What the team does:
✅ Phase 1 - Implementation: Rex/Blaze builds the feature
✅ Phase 2 - Quality: Cleo reviews and refactors
✅ Phase 3 - Testing: Tess validates and tests
✅ Event-Driven: Automatic phase transitions
✅ GitHub Integration: PRs from each phase
Process PRDs and create structured TaskMaster projects.
// Process a new project
intake_prd({
project_name: "my-awesome-app"
});
// Customize models and agents
intake_prd({
project_name: "my-awesome-app",
github_app: "5DLabs-Morgan",
primary_model: "claude-opus-4-20250514"
});
What intake does:
✅ Reads PRD from {project_name}/intake/prd.txt
✅ Analyzes requirements and architecture
✅ Generates comprehensive task breakdown
✅ Creates TaskMaster structure with tasks.json
✅ Submits project setup as GitHub PR
List all running Argo workflows with simplified status info.
// List all workflows
jobs();
// Filter by type
jobs({
include: ["play", "intake"]
});
// Specify namespace
jobs({
namespace: "agent-platform"
});
Returns: List of active workflows with type, name, phase, and status
Stop any running Argo workflow gracefully.
// Stop a specific workflow
stop_job({
job_type: "play",
name: "play-workflow-abc123"
});
// Stop with explicit namespace
stop_job({
job_type: "intake",
name: "intake-workflow-xyz789",
namespace: "agent-platform"
});
Workflow types: intake
, play
, workflow
Send messages to running AI agents in real-time.
// Send message to active job
input({
text: "Please add error handling for edge cases"
});
// Route by specific job name
input({
text: "Update the API endpoint to use /v2",
name: "code-5dlabs-cto-task-5",
job_type: "code"
});
// Route by user label
input({
text: "Can you explain your approach?",
user: "jonathon"
});
Use cases: Provide guidance, answer questions, steer implementation
Intelligently analyze GitHub repos and ingest documentation.
// Ingest repository documentation
docs_ingest({
repository_url: "https://github.com/cilium/cilium",
doc_type: "cilium"
});
// Custom doc server
docs_ingest({
repository_url: "https://github.com/solana-labs/solana",
doc_type: "solana",
doc_server_url: "http://my-doc-server:80"
});
What it does:
✅ Uses Claude to analyze repository structure
✅ Determines optimal ingestion strategy
✅ Processes documentation intelligently
✅ Stores in searchable format for agents
Required:
working_directory
- Working directory containing .taskmaster folder (e.g.,"projects/simple-api"
)
Optional (with config defaults):
agent
- Agent name to use (defaults todefaults.docs.githubApp
mapping)model
- Model to use for the docs agent (defaults todefaults.docs.model
)source_branch
- Source branch to work from (defaults todefaults.docs.sourceBranch
)include_codebase
- Include existing codebase as context (defaults todefaults.docs.includeCodebase
)
Required:
task_id
- Task ID to implement from task files (integer, minimum 1)
Optional (with config defaults):
repository
- Target repository URL (e.g.,"5dlabs/cto"
) (defaults todefaults.play.repository
)service
- Service identifier for persistent workspace (defaults todefaults.play.service
)docs_repository
- Documentation repository URL (defaults todefaults.play.docsRepository
)docs_project_directory
- Project directory within docs repository (defaults todefaults.play.docsProjectDirectory
)implementation_agent
- Agent for implementation work (defaults todefaults.play.implementationAgent
)quality_agent
- Agent for quality assurance (defaults todefaults.play.qualityAgent
)testing_agent
- Agent for testing and validation (defaults todefaults.play.testingAgent
)model
- Model to use for play-phase agents (defaults todefaults.play.model
)
The platform uses a template system to customize agent behavior, settings, and prompts. Templates are Handlebars (.hbs
) files rendered with task-specific data at runtime. Multi-CLI support lives alongside these templates so Claude, Codex, and future CLIs follow the same structure.
Model Defaults: Models are configured through cto-config.json
defaults (and can be overridden via MCP parameters). We ship presets for Claude (claude-sonnet-4-20250514
), Codex (gpt-5-codex
), and Factory (gpt-5-factory-high
), but any supported model for a CLI can be supplied via configuration.
All templates now live under infra/charts/controller/agent-templates/
with CLI-specific subdirectories:
Docs Tasks (Claude today)
- Prompts: Rendered from
docs/claude/prompt.md.hbs
into the ConfigMap - Settings:
docs/claude/settings.json.hbs
controls model, permissions, tools - Container Script:
docs/claude/container.sh.hbs
handles Git workflow and CLI execution
Code Tasks (multi-CLI)
- Claude:
code/claude/**
- Settings:
code/claude/settings.json.hbs
- Container:
code/claude/container.sh.hbs
- Settings:
- Codex:
code/codex/**
- Agents memory:
code/codex/agents.md.hbs
- Config:
code/codex/config.toml.hbs
- Container scripts:
code/codex/container*.sh.hbs
- Agents memory:
- Factory:
code/factory/**
- Agents memory:
code/factory/agents*.md.hbs
- Config:
code/factory/factory-cli-config.json.hbs
- Container scripts:
code/factory/container*.sh.hbs
- Agents memory:
- Shared assets:
code/mcp.json.hbs
,code/coding-guidelines.md.hbs
, andcode/github-guidelines.md.hbs
Play Workflows: Multi-agent orchestration with event-driven coordination
- Workflow Template:
play-workflow-template.yaml
defines the multi-phase workflow - Phase Coordination: Each phase triggers the next phase automatically
- Agent Handoffs: Seamless transitions between implementation → QA → testing phases
Edit the settings template files directly:
# For docs (Claude) agents
vim infra/charts/controller/agent-templates/docs/claude/settings.json.hbs
# For code (Claude) agents
vim infra/charts/controller/agent-templates/code/claude/settings.json.hbs
# For code (Codex) agents
vim infra/charts/controller/agent-templates/code/codex/config.toml.hbs
Settings control:
- Model selection (
claude-opus-4
,claude-sonnet-4
, etc.) - Tool permissions and access
- MCP tool configuration
- Enterprise managed settings
See Claude Code Settings for complete configuration options.
For docs tasks (affects all documentation generation):
# Edit the docs prompt template
vim infra/charts/controller/agent-templates/docs/claude/prompt.md.hbs
For code tasks (affects specific task implementation):
# Edit task-specific files in your docs repository
vim {docs_project_directory}/.taskmaster/docs/task-{id}/prompt.md
vim {docs_project_directory}/.taskmaster/docs/task-{id}/task.md
vim {docs_project_directory}/.taskmaster/docs/task-{id}/acceptance-criteria.md
For play workflows (affects multi-agent orchestration):
# Edit the play workflow template
vim infra/charts/controller/templates/workflowtemplates/play-workflow-template.yaml
The play workflow template controls:
- Phase sequencing and dependencies
- Agent assignments for each phase
- Event triggers between phases
- Parameter passing between phases
Hooks are shell scripts that run during agent execution. Add new hook files beneath the CLI you are extending:
# Create new hook script (docs/Claude example)
vim infra/charts/controller/agent-templates/docs/claude/hooks/my-custom-hook.sh.hbs
# Create new hook script (code/Codex example)
vim infra/charts/controller/agent-templates/code/codex/hooks/my-custom-hook.sh.hbs
Hook files are automatically discovered and rendered. Ensure the hook name matches any references in your settings templates.
See Claude Code Hooks Guide for detailed hook configuration and examples.
After editing any template files, redeploy the agent-platform:
# Deploy template changes
helm upgrade agent-platform infra/charts/controller -n agent-platform
# Verify ConfigMap was updated (fullname = <release>-controller)
kubectl get configmap agent-platform-controller-agent-templates -n agent-platform -o yaml
Important: Template changes only affect new agent jobs. Running jobs continue with their original templates.
Common variables available in templates:
{{task_id}}
- Task ID for code tasks{{service_name}}
- Target service name{{github_user}}
- GitHub username{{repository_url}}
- Target repository URL{{working_directory}}
- Working directory path{{model}}
- Claude model name{{docs_repository_url}}
- Documentation repository URL
- Configure
cto-config.json
first to set up your agents, models, tool profiles, and repository defaults - Always generate docs first to establish baseline documentation using
docs()
- Choose the right tool for the job:
- Use
docs()
for documentation generation - Use
play()
for full-cycle development (implementation → QA → testing) - Use
intake_prd()
for new project setup from PRDs - Use
jobs()
/stop_job()
/input()
for workflow management
- Use
- Mix and match CLIs - assign the best CLI to each agent based on task requirements
- Customize tool access - use the
tools
configuration to control agent capabilities - Use minimal MCP calls - let configuration defaults handle most parameters
- Review GitHub PRs promptly - agents provide detailed logs and explanations
- Update config file when adding new agents, tools, or changing project structure
# Build from source
git clone https://github.com/5dlabs/cto.git
cd cto/controller
# Build MCP server
cargo build --release --bin cto-mcp
# Verify the build
./target/release/cto-mcp --help # MCP server
# Install to your system (optional)
cp target/release/cto-mcp /usr/local/bin/
- Check GitHub PRs for detailed agent logs and explanations
- Review Task Master project structure in
.taskmaster/
directory - Verify
cto-config.json
configuration and GitHub Apps authentication setup - Ensure Argo Workflows are properly deployed and accessible
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This means:
- You can use, modify, and distribute this software freely
- You can use it for commercial purposes
⚠️ If you deploy a modified version on a network server, you must provide source code access to users⚠️ Any derivative works must also be licensed under AGPL-3.0
The AGPL license is specifically designed for server-side software to ensure that improvements to the codebase remain open source, even when deployed as a service. This protects the open source nature of the project while allowing commercial use.
Source Code Access: Since this platform operates as a network service, users interacting with it have the right to access the source code under AGPL-3.0. The complete source code is available at this repository, ensuring full compliance with AGPL-3.0's network clause.
For more details, see the LICENSE file.
- Task Master AI - The AI-powered task management system that works perfectly with this platform. Task Master AI helps you break down complex projects into manageable tasks, which can then be implemented using this platform's
play()
andintake_prd()
MCP tools.
See our ROADMAP.md for upcoming features and planned enhancements to the platform.
⭐ Star Support project |
🍴 Fork Build with us |
💬 Discord Join community |
🐦 X Get updates |
📺 YouTube Watch tutorials |
📖 Docs Learn more |
🐛 Issues Report bugs |
💡 Discuss Share ideas |
Built with ❤️ and 🤖 by the 5D Labs Team
The platform runs on Kubernetes and automatically manages Claude agent deployments, workspace isolation, and GitHub integration. All you need to do is call the MCP tools and review the resulting PRs.