HiveMind
An MCP orchestration server that coordinates multiple AI coding agents using Copilot CLI for parallel task execution with dependency management, file locking, and observability.
README
π HiveMind - MCP Subagent Orchestrator
A high-concurrency, asynchronous MCP (Model Context Protocol) Orchestrator that coordinates multiple AI coding agents using the Copilot CLI as the underlying intelligence engine. Built on an Actor Model architecture for non-blocking operations, robust fault tolerance, and strict resource synchronization.
π Table of Contents
- Overview
- Key Features
- Architecture
- Components
- Installation
- Usage
- Configuration
- API Reference
- Development
- Project Structure
- Roadmap
- Contributing
π― Overview
HiveMind enables a Main Agent to spawn and coordinate multiple Subagents, each running isolated Copilot CLI instances. This allows for:
- Parallel task execution across multiple files/modules
- Hierarchical planning with dependency-aware scheduling
- Safe concurrent file access via lock management
- Unified observability with structured logging and tracing
Problem Solved
Traditional single-agent coding assistants struggle with:
- Large codebases requiring parallel analysis
- Multi-file refactoring with dependencies
- Long-running tasks that block the main thread
- Resource contention when multiple tools access files
HiveMind solves these by orchestrating a swarm of specialized agents that work concurrently while respecting file locks and execution order.
β¨ Key Features
| Feature | Description |
|---|---|
| π Autonomous Execution | Submit a task and let the orchestrator plan, schedule, and execute without polling |
| π File Locking (Warden) | Pessimistic locking with deadlock detection and wait queues |
| π Hierarchical Planning | Break complex tasks into dependency graphs with parallel execution groups |
| π MCP Integration | Exposes orchestration capabilities as MCP tools |
| π Observability | Structured logging, OpenTelemetry tracing, and real-time metrics |
| πΎ Persistence | SQLite-based checkpointing with crash recovery |
| ποΈ Dashboard | REST API + WebSocket for real-time monitoring |
ποΈ Architecture
HiveMind uses a three-layer architecture:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CONTROL PLANE β
β βββββββββββββββ ββββββββββββββββ ββββββββββββββ βββββββββββββββββββββββ β
β β Orchestratorβ βTask Planner β β Scheduler β β Resource Warden β β
β β Core ββββ (Decomposer) ββββ ββββ (Lock Manager) β β
β βββββββββββββββ ββββββββββββββββ ββββββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA PLANE β
β ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ β
β β Event Bus (IPC) β β Trace Aggregator β β
β β Pub/Sub Message Passing β β Logs, Metrics, Spans β β
β ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXECUTION PLANE β
β βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββββββββββ β
β β Agent Pod β β Agent Pod β β Agent Pod β ... β Copilot CLI β β
β β 1 β β 2 β β N β β (Child Process) β β
β βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Request Flow
- Main Agent calls MCP tool (e.g.,
submit_task_auto) - Planner analyzes task, creates dependency graph
- Scheduler creates execution groups respecting dependencies
- Warden acquires file locks before each group executes
- Agent Pods spawn Copilot CLI processes in parallel
- Results aggregated and returned to Main Agent
π§© Components
Core Components
| Component | Location | Description |
|---|---|---|
| Orchestrator Core | src/core/ |
Central coordination, lifecycle management |
| Agent Manager | src/agents/ |
Agent pool, pod lifecycle, message routing |
| Event Bus | src/ipc/ |
Pub/sub messaging, async communication |
| Lock Manager | src/locks/ |
File locking, deadlock detection, wait queues |
| Planner | src/planner/ |
Task decomposition, dependency graphs |
| CLI Adapter | src/cli/ |
Copilot CLI spawning, I/O handling |
| MCP Layer | src/mcp/ |
Tool definitions, request handling |
| Tracing | src/tracing/ |
Structured logging, OpenTelemetry |
| Persistence | src/persistence/ |
SQLite, checkpointing, recovery |
| Dashboard | src/dashboard/ |
REST API, WebSocket server |
Type System
| Module | Description |
|---|---|
src/types/agent.ts |
Agent status, config, results |
src/types/job.ts |
Job lifecycle, subtasks, progress |
src/types/lock.ts |
Lock modes, handles, conflicts |
src/types/events.ts |
Event bus messages, channels |
src/types/mcp.ts |
MCP tool schemas, responses |
src/types/cli.ts |
CLI command construction, options |
π¦ Installation
Prerequisites
- Node.js 20+
- npm or yarn
- GitHub Copilot CLI installed and authenticated
- Git for version control
Install
# Clone the repository
git clone https://github.com/sureshsankaran/mcp-subagent-orchestrator.git
cd mcp-subagent-orchestrator
# Install dependencies
npm install
# Build the project
npm run build
Verify Installation
# Run tests
npm test
# Check build output
ls dist/
Quick Demo
Run the end-to-end demo to see all features in action:
# Run comprehensive demo showcasing all phases (1-7)
npm run demo:e2e
# Run basic component demo
npm run demo
The demo showcases:
- Event Bus - Pub/sub messaging with wildcard patterns
- State Machine - Agent lifecycle transitions
- Lock Manager - Resource locking with deadlock detection
- DAG - Task dependency graphs with parallel execution groups
- MCP Tools - 14+ orchestration tools exposed via MCP
- Structured Logging - Winston logger with JSON/pretty formats
- Distributed Tracing - OpenTelemetry integration
- Metrics Registry - Counters, histograms, and gauges
- Health Checks - Component health monitoring
- Full Orchestration - End-to-end task execution simulation
π Usage
As an MCP Server
Register HiveMind as an MCP server in your AI tool configuration:
{
"mcpServers": {
"hivemind": {
"command": "node",
"args": ["path/to/mcp-subagent-orchestrator/dist/index.js"],
"env": {
"GH_TOKEN": "your-github-token"
}
}
}
}
Programmatic Usage
import { OrchestratorCore, OrchestratorConfig } from 'mcp-subagent-orchestrator';
// Create orchestrator
const config: OrchestratorConfig = {
maxConcurrentAgents: 5,
workspacePath: '/path/to/workspace',
persistence: {
enabled: true,
dbPath: '.hivemind/state.db'
}
};
const orchestrator = new OrchestratorCore(config);
await orchestrator.initialize();
// Spawn a single agent
const agent = await orchestrator.spawnAgent('Fix the authentication bug in auth.ts');
const result = await orchestrator.waitForAgent(agent.id);
// Submit an autonomous job
const job = await orchestrator.submitJob('Refactor the entire API layer to use async/await');
const status = await orchestrator.waitForJob(job.id);
MCP Tool Examples
// Spawn a focused subagent
await mcp.callTool('spawn_agent', {
task: 'Review auth.ts for security vulnerabilities',
config: {
system_instruction: 'You are a security expert. Be thorough.',
allowed_paths: ['src/auth/'],
read_only: true
}
});
// Submit autonomous job (orchestrator handles everything)
await mcp.callTool('submit_task_auto', {
instruction: 'Add comprehensive unit tests to all service files',
strategy: 'parallel',
max_agents: 4
});
// Monitor job progress
await mcp.callTool('get_job_status', { job_id: 'job-123' });
// Acquire file lock (for manual coordination)
await mcp.callTool('acquire_lock', {
resource: 'src/api/users.ts',
mode: 'exclusive',
timeout_ms: 30000
});
βοΈ Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
GH_TOKEN |
GitHub token with Copilot access | Required |
HIVEMIND_LOG_LEVEL |
Logging level (debug/info/warn/error) | info |
HIVEMIND_MAX_AGENTS |
Maximum concurrent agents | 10 |
HIVEMIND_DB_PATH |
SQLite database path | .hivemind/state.db |
HIVEMIND_PORT |
Dashboard server port | 3000 |
HIVEMIND_PREFERRED_CLI_TYPE |
Override detected CLI type (copilot_v2, copilot_v1, codex, gh_copilot, claude) |
auto-detect |
HIVEMIND_PREFERRED_CLI_PATH |
Absolute path to CLI binary (bypass detection) | auto-detect |
OTEL_ENABLED |
Enable OpenTelemetry | false |
Orchestrator Config (file-first)
Configuration is loaded in this order: user overrides β env β hivemind.config.json β defaults.
Add a hivemind.config.json at the repo root to set project-wide defaults (used for both decomposition and spawned agents):
{
"cli": {
// Force a specific adapter type instead of auto-preference (copilot_v2 > copilot_v1 > codex > gh_copilot > claude)
"preferred_cli_type": "codex",
// Optional explicit binary path (skips detection)
"preferred_cli_path": "/usr/local/bin/codex",
// Existing options
"cli_command": "copilot",
"default_timeout_ms": 300000,
"auto_approve_tools": true
}
}
interface OrchestratorConfig {
// Agent management
maxConcurrentAgents: number; // Max parallel agents
agentTimeout: number; // Agent execution timeout (ms)
agentPoolSize: number; // Pre-warmed agent pool size
// Workspace
workspacePath: string; // Root workspace path
trustedFolders: string[]; // Pre-trusted Copilot folders
// Locking
lockTimeout: number; // Default lock acquisition timeout
deadlockDetection: boolean; // Enable deadlock detection
// Persistence
persistence: {
enabled: boolean;
dbPath: string;
checkpointInterval: number; // Checkpoint frequency (ms)
};
// Observability
logging: {
level: 'debug' | 'info' | 'warn' | 'error';
format: 'json' | 'pretty';
};
// Security
toolApproval: {
allowedShellCommands: string[];
deniedShellCommands: string[];
};
// CLI (decomposition + spawned agents)
cli: {
cli_command: string;
preferred_cli_type?: 'copilot_v2' | 'copilot_v1' | 'codex' | 'gh_copilot' | 'claude' | 'unknown';
preferred_cli_path?: string;
default_timeout_ms: number;
auto_approve_tools: boolean;
};
}
π API Reference
MCP Tools
| Tool | Description |
|---|---|
spawn_agent |
Spawn a single subagent with a task |
submit_task_auto |
Submit job for autonomous execution |
get_job_status |
Get current job status and progress |
get_job_tree |
Get hierarchical view of job subtasks |
cancel_job |
Cancel a running job |
acquire_lock |
Manually acquire a file lock |
release_lock |
Release a held lock |
list_locks |
List all active locks |
stream_logs |
Stream logs for job/agent |
orchestrator_health |
Get orchestrator health status |
REST API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/v1/agents |
GET | List all agents |
/api/v1/agents |
POST | Spawn new agent |
/api/v1/agents/:id |
GET | Get agent details |
/api/v1/agents/:id |
DELETE | Kill agent |
/api/v1/jobs |
GET | List all jobs |
/api/v1/jobs |
POST | Submit new job |
/api/v1/jobs/:id |
GET | Get job details |
/api/v1/jobs/:id/cancel |
POST | Cancel job |
/api/v1/locks |
GET | List active locks |
/api/v1/system/health |
GET | Health check |
/api/v1/system/metrics |
GET | Prometheus metrics |
π οΈ Development
Scripts
# Build TypeScript
npm run build
# Watch mode
npm run build:watch
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Lint code
npm run lint
npm run lint:fix
# Format code
npm run format
# Clean build artifacts
npm run clean
Testing
# Run all tests
npm test
# Run specific test file
npm test -- tests/unit/locks/LockManager.test.ts
# Run with coverage
npm run test:coverage
Code Quality
- ESLint for linting
- Prettier for formatting
- Jest for testing
- TypeScript strict mode enabled
π Project Structure
mcp-subagent-orchestrator/
βββ src/
β βββ agents/ # Agent pod management
β βββ cli/ # Copilot CLI adapter
β βββ core/ # Orchestrator core
β βββ dashboard/ # REST API & WebSocket
β βββ errors/ # Custom error classes
β βββ ipc/ # Event bus & messaging
β βββ locks/ # Lock manager (Warden)
β βββ mcp/ # MCP tool definitions
β βββ persistence/ # SQLite & checkpointing
β βββ planner/ # Task decomposition
β βββ tracing/ # Logging & telemetry
β βββ types/ # TypeScript interfaces
β βββ utils/ # Shared utilities
β βββ index.ts # Main entry point
βββ tests/
β βββ unit/ # Unit tests
β βββ integration/ # Integration tests
βββ tasks/ # Phase task breakdowns
βββ dist/ # Compiled output
βββ spec.md # Full specification
βββ TASKS.md # Development roadmap
βββ package.json
πΊοΈ Roadmap
The project is developed in 9 phases:
| Phase | Name | Status | Tasks |
|---|---|---|---|
| 1 | Project Skeleton & Interfaces | β Complete | 68 |
| 2 | Nervous System (EventBus/IPC) | π In Progress | 52 |
| 3 | CLI Abstraction Layer | β³ Planned | 68 |
| 4 | File Warden (Lock Manager) | β³ Planned | 58 |
| 5 | Hierarchical Planner | β³ Planned | 72 |
| 6 | MCP Exposure | β³ Planned | 58 |
| 7 | Observability | β³ Planned | 52 |
| 8 | Persistence & Recovery | β³ Planned | 62 |
| 9 | Dashboard & REST API | β³ Planned | 55 |
Total: ~542 detailed subtasks
See TASKS.md for detailed task breakdowns.
π€ Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow TypeScript strict mode
- Write tests for new features
- Update documentation as needed
- Use conventional commit messages
π License
This project is licensed under the ISC License - see the LICENSE file for details.
<p align="center"> Built with π by the HiveMind team </p>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.