Brain MCP
Hermes Brain
Оркестрация мультиагентных систем для Hermes Agent
Запускайте параллельные агенты Hermes. Дайте им общий «мозг». Выпускайте продукт одной командой.Работает на базе SQLite, координируется через Python, ноль токенов тратится на координацию.
Установка · Быстрый старт · Как это работает · CLI · Инструменты · Банк памяти · Разработка
Установка
Вариант 1 — сборка из исходного кода (рекомендуется для Hermes)
curl -fsSL https://raw.githubusercontent.com/DevvGwardo/brain-mcp/main/install.sh | bashУстановщик:
Собирает MCP-сервер на Node.js (
brain-mcp)Устанавливает пакет оркестрации на Python (
hermes-brain)Регистрирует «мозг» как MCP-сервер в Hermes
Вариант 2 — ручная установка
git clone https://github.com/DevvGwardo/brain-mcp.git
cd brain-mcp
npm install
npm run build
pip install -e .
hermes mcp add brain --command node --args "$PWD/dist/index.js"Примечание: npm-пакет еще не опубликован, поэтому установка из репозитория является поддерживаемым способом на данный момент.
Проверка:
hermes mcp list | grep brain
hermes mcp test brain
hermes-brain --helpПредварительные требования: Python 3.10+, Node.js 18+, Hermes Agent
Делитесь с друзьями? «Мозг» каждого человека — это его собственная изолированная БД SQLite, настройка сети не требуется. Одна и та же команда работает везде.
Пользователи Docker: Запускайте агенты с параметром layout: "headless", так как панели tmux не могут отображаться в headless-контейнере:
brain_wake({ task: "...", layout: "headless" })Быстрый старт
Одна команда для оркестрации парка агентов Hermes:
hermes-brain "Build a REST API with auth, users, and posts" \
--agents api-routes auth-layer db-models testsЧто происходит:
Python-кондуктор запускает 4 фоновых агента Hermes (
hermes -q)Каждый агент заявляет права на свои файлы, публикует контракты, пишет код, отправляет сигналы пульса (heartbeats)
Кондуктор запускает интеграционный шлюз — компилирует проект, направляет ошибки ответственным агентам через личные сообщения (DM)
Агенты исправляют ошибки самостоятельно. Шлюз повторяет попытки до успешного результата.
Выводится сводка: агенты, контракты, память, метрики, готово.
Другие способы запуска:
# Auto-named agents
hermes-brain "Add error handling to the whole codebase"
# Mix models per task
hermes-brain "Build a game" --agents engine ui store --model claude-sonnet-4-5
# Cheap model for boilerplate
hermes-brain "Generate 10 test files" --model claude-haiku-4-5
# JSON pipeline with multiple phases
hermes-brain --config pipeline.jsonИли изнутри Hermes (интерактивно):
hermes> Use register, then wake to spawn 3 agents
that each refactor a different module.Как это работает
graph TB
subgraph "Python Conductor"
CLI["hermes-brain CLI"]
ORCH["Orchestrator<br/><small>spawn · wait · gate · retry</small>"]
end
subgraph "Hermes Agents"
direction LR
H1["Agent 1<br/><small>hermes -q</small>"]
H2["Agent 2<br/><small>hermes -q</small>"]
H3["Agent 3<br/><small>hermes -q</small>"]
end
CLI --> ORCH
ORCH -->|spawn| H1
ORCH -->|spawn| H2
ORCH -->|spawn| H3
subgraph "Brain (shared SQLite)"
DB[("brain.db")]
PULSE["Heartbeats"]
MX["Mutex Locks"]
KV["Shared State"]
CON["Contracts"]
MEM["Memory"]
PLAN["Task DAG"]
end
ORCH <--> DB
H1 <--> DB
H2 <--> DB
H3 <--> DB
subgraph "Integration Gate"
GATE["tsc · mypy · cargo · go vet"]
ROUTE["DM errors → agents"]
end
ORCH --> GATE
GATE --> ROUTE
ROUTE -.->|DM| H1
ROUTE -.->|DM| H2
style CLI fill:#9333EA,stroke:#7C3AED,color:#fff
style ORCH fill:#9333EA,stroke:#7C3AED,color:#fff
style H1 fill:#3B82F6,stroke:#2563EB,color:#fff
style H2 fill:#10B981,stroke:#059669,color:#fff
style H3 fill:#F59E0B,stroke:#D97706,color:#000
style DB fill:#1E293B,stroke:#334155,color:#fff
style GATE fill:#EF4444,stroke:#DC2626,color:#fffАрхитектура
На этой схеме показана внутренняя архитектура brain-mcp и взаимодействие его компонентов:
graph TB
subgraph "External Clients"
HERMES["Hermes CLI"]
CLAUDE["Claude Code"]
ANY["Any MCP Client"]
end
subgraph "brain-mcp (Node.js)"
SERVER["src/index.ts<br/>MCP Request Router"]
CONDUCTOR["brain-conductor<br/>Zero-token Orchestration CLI"]
GATE["src/gate.ts<br/>Integration Gate"]
end
subgraph "pi-agent-core Runtime"
PI_CORE["src/pi-core-agent.ts<br/>In-process Agent Runner"]
PI_CORE_TOOLS["src/pi-core-tools.ts<br/>14 Brain Tools as AgentTools"]
PI_AGENT["pi-agent-core Agent<br/>model + tools + events"]
end
subgraph "BrainDB (SQLite)"
DB[("brain.db<br/>sessions, state, messages,<br/>claims, contracts, memory")]
end
HERMES & CLAUDE & ANY --> SERVER
SERVER <--> DB
SERVER --> CONDUCTOR
CONDUCTOR --> PI_CORE
PI_CORE --> PI_CORE_TOOLS
PI_CORE --> PI_AGENT
PI_CORE_TOOLS --> DB
PI_AGENT -->|beforeToolCall<br/>pulse| DB
CONDUCTOR --> GATE
GATE -->|DM errors| CONDUCTOR
style HERMES fill:#FF6B6B,stroke:#DC2626,color:#fff
style CLAUDE fill:#3B82F6,stroke:#2563EB,color:#fff
style ANY fill:#7C3AED,stroke:#6D28D9,color:#fff
style SERVER fill:#1E293B,stroke:#334155,color:#fff
style CONDUCTOR fill:#9333EA,stroke:#7C3AED,color:#fff
style GATE fill:#EF4444,stroke:#DC2626,color:#fff
style PI_CORE fill:#10B981,stroke:#059669,color:#fff
style PI_CORE_TOOLS fill:#059669,stroke:#047857,color:#fff
style PI_AGENT fill:#06B6D4,stroke:#0891B2,color:#fff
style DB fill:#1E293B,stroke:#334155,color:#fffpi-agent-core — это среда выполнения LLM-агента, которая обрабатывает цикл взаимодействия с моделью, выполнение инструментов и подписку на события. brain-mcp предоставляет уровень координации (состояние, обмен сообщениями, сигналы пульса, блокировки, контракты) в виде инструментов, которые вызывают pi-агенты. Кондуктор связывает всё это воедино с помощью фаз, шлюзов и раскладки tmux.
Координация без токенов. Кондуктор написан на чистом Python — токены LLM тратятся только на реальную работу. Сигналы пульса, заявки, контракты, шлюзы и повторные попытки выполняются локально.
Нет сервера для управления. Каждый агент открывает собственное stdio-соединение с «мозгом». Режим WAL в SQLite безопасно обрабатывает параллельный доступ.
Один «мозг» для любого CLI. Hermes, Claude Code, MiniMax — все клиенты обращаются к одной и той же БД SQLite. Смешанный парк агентов Hermes + Claude может координироваться для выполнения одной задачи.
CLI hermes-brain
hermes-brain <task> [options]Флаг | По умолчанию | Описание |
|
| Имена агентов для параллельного запуска |
|
| Модель, передаваемая каждому агенту |
| выкл | Пропустить интеграционный шлюз |
|
| Макс. количество повторных попыток шлюза |
|
| Тайм-аут для каждого агента |
| Загрузка многофазного конвейера | |
|
| Пользовательский путь к БД «мозга» |
Файл конфигурации конвейера
{
"task": "Build a todo app",
"model": "claude-sonnet-4-5",
"gate": true,
"max_gate_retries": 3,
"phases": [
{
"name": "foundation",
"parallel": true,
"agents": [
{ "name": "types", "files": ["src/types/"], "task": "Define all TS types" },
{ "name": "db", "files": ["src/db/"], "task": "Set up Prisma schema" }
]
},
{
"name": "feature",
"parallel": true,
"agents": [
{ "name": "api", "files": ["src/api/"], "task": "REST endpoints" },
{ "name": "ui", "files": ["src/ui/"], "task": "React components" }
]
},
{
"name": "quality",
"parallel": true,
"agents": [
{ "name": "tests", "task": "Write unit + integration tests" }
]
}
]
}Фазы выполняются последовательно. Агенты внутри фазы работают параллельно. Интеграционный шлюз запускается между фазами.
Инструменты «мозга»
Более 35 инструментов в 12 категориях. Все доступны для Hermes, Claude Code и любого агента, совместимого с MCP.
Идентификация и состояние
Инструмент | Описание |
| Назвать эту сессию |
| Список активных сессий |
| Показать информацию о сессии + комнате |
| Сигнал пульса со статусом + прогрессом (возвращает ожидающие DM) |
| Состояние всех агентов в реальном времени (статус, время последнего пульса, заявки) |
Обмен сообщениями
Инструмент | Описание |
| Опубликовать сообщение в канале |
| Прочитать сообщение из канала |
| Личное сообщение другому агенту |
| Прочитать личные сообщения |
Общее состояние и память
Инструмент | Описание |
| Эфемерное хранилище «ключ-значение» |
| Список / удаление ключей |
| Сохранить постоянные знания (сохраняются после |
| Поиск воспоминаний из предыдущих сессий |
| Удалить устаревшие воспоминания |
Блокировка файлов
Инструмент | Описание |
| Заблокировать файл/ресурс (мьютекс с TTL) |
| Разблокировать |
| Список активных блокировок |
Контракты (предотвращение ошибок интеграции)
Инструмент | Описание |
| Опубликовать то, что предоставляет/ожидает ваш модуль |
| Прочитать контракты других агентов перед написанием кода |
| Проверить все контракты — выявляет несоответствия параметров, отсутствующие функции |
Интеграционный шлюз
Инструмент | Описание |
| Запустить компиляцию + проверку контрактов, отправить ошибки ответственным агентам |
| Запустить шлюз в цикле, ждать исправлений, повторять до успеха |
Планирование задач (DAG)
Инструмент | Описание |
| Создать DAG задач с зависимостями |
| Получить задачи, зависимости которых выполнены |
| Отметить задачу как выполненную/неудачную (автоматически продвигает зависимые) |
| Общий прогресс |
| Преобразовать цель на естественном языке в фазы, агентов, области файлов и конфигурацию кондуктора |
| Сохранить скомпилированный рабочий процесс в состояние «мозга» + DAG задач, опционально записать JSON кондуктора |
Оркестрация
Инструмент | Описание |
| Запустить нового агента (hermes, claude или headless) |
| Запустить несколько агентов одним вызовом |
| Заменить вышедшего из строя агента с контекстом восстановления |
| Уровень успеха, длительность, количество ошибок на агента |
Журнал контекста (предотвращает потерю отслеживания)
Инструмент | Описание |
| Записать действие/открытие/решение/ошибку |
| Прочитать журнал |
| Сжатый вид для восстановления контекста |
| Сохранить полное рабочее состояние |
| Восстановить после сжатия контекста |
Протокол пульса и контрактов
Каждый запущенный агент следует двум протоколам, которые принудительно исполняются оркестратором:
Пульс (Heartbeat) — агенты вызывают brain_pulse каждые 2-3 вызова инструментов со своим статусом и краткой заметкой о прогрессе. Кондуктор использует это для:
Отображения статуса в реальном времени в терминале (
● working — editing src/api/routes.ts)Обнаружения зависших агентов (нет пульса в течение 60с →
stale)Доставки ожидающих личных сообщений в качестве возвращаемых значений пульса (без лишних запросов)
Контракты — перед написанием кода агенты вызывают brain_contract_get, чтобы увидеть, что экспортируют другие агенты. После написания они публикуют свой собственный контракт с помощью brain_contract_set. Перед завершением работы brain_contract_check проверяет весь парк — выявляет:
Несоответствия сигнатур функций (ожидалось 2 аргумента, получено 3)
Отсутствующие экспорты (агент А импортирует
getUser, но агент Б его не экспортировал)Дрейф типов (ожидался
User, получен{name, email})
Это ключ к достижению качества интеграции одиночного агента при работе параллельного парка.
Интеграционный шлюз
sequenceDiagram
participant O as Orchestrator
participant C as Compiler
participant DB as Brain DB
participant A as Agent
O->>C: Run tsc / mypy / cargo / go vet
C-->>O: Errors with file:line:message
O->>DB: Query: who claimed this file?
DB-->>O: Agent X owned src/api/routes.ts
O->>A: DM: "Fix these errors in your files"
Note over A: Agent reads DM on next pulse
Note over A: Fixes code, pulses done
O->>C: Re-run compiler
C-->>O: Clean
O->>DB: Record metricsШлюз автоматически определяет язык проекта и запускает соответствующий инструмент проверки:
Язык | Инструмент проверки |
TypeScript |
|
Python |
|
Rust |
|
Go |
|
Ошибки анализируются, сопоставляются с агентом, который заявлял права на проблемный файл, и направляются в виде личного сообщения. Агенты получают свои ошибки при следующем пульсе и исправляют их. Цикл повторяет попытки до --retries раз, прежде чем сдаться.
Смешанные парки
БД «мозга» является общей для всех MCP-клиентов. Один проект может иметь:
graph LR
subgraph "Fleet"
direction TB
HA["Hermes Agent<br/><small>fast local inference</small>"]
CC["Claude Code<br/><small>deep reasoning</small>"]
MM["MiniMax<br/><small>cheap boilerplate</small>"]
end
subgraph "Brain"
DB[("brain.db")]
end
HA <--> DB
CC <--> DB
MM <--> DB
style HA fill:#F59E0B,stroke:#D97706,color:#000
style CC fill:#9333EA,stroke:#7C3AED,color:#fff
style MM fill:#3B82F6,stroke:#2563EB,color:#fff
style DB fill:#1E293B,stroke:#334155,color:#fffМаршрутизация по типу задачи. Используйте Hermes для рутинной работы, Claude для архитектурных решений, более дешевые модели для шаблонного кода — все координируются через один «мозг», обмениваясь контрактами, шлюзами и памятью.
Из Claude Code:
brain_wake({ task: "...", cli: "hermes", layout: "headless" })
brain_wake({ task: "...", cli: "claude", layout: "horizontal" })Продвинутые возможности
Все, что ниже, охватывает полную техническую глубину.
Производительность
Запустите бенчмарки самостоятельно:
node benchmark.mjs # SQLite direct layer (1000 iterations)
node benchmark-mcp.mjs # MCP tool layer (30 iterations per tool)Уровень прямого доступа к SQLite (2026-04-06, M4 Pro, режим WAL)
Операция | ср. | p50 | p95 | p99 | пропускная способность |
session_register | 0.021мс | 0.011мс | 0.027мс | 0.039мс | ~47K/с |
message_post (1 сообщ.) | 0.014мс | 0.011мс | 0.019мс | 0.031мс | ~70K/с |
message_read (50 сообщ.) | 0.042мс | 0.042мс | 0.045мс | 0.066мс | ~24K/с |
state_get | 0.002мс | 0.002мс | 0.002мс | 0.003мс | ~570K/с |
claim_query (все) | 0.001мс | 0.001мс | 0.002мс | 0.002мс | ~670K/с |
heartbeat_pulse (обновл.) | 0.002мс | 0.002мс | 0.002мс | 0.003мс | ~464K/с |
session_query (по id) | 0.002мс | 0.002мс | 0.002мс | 0.003мс | ~455K/с |
Прямой SQLite: каждая операция координации ядра занимает менее миллисекунды. KV-хранилище (state_get) поддерживает ~570 тыс. чтений/с. Высокочастотная координация (пульс, заявки, состояние) остается значительно ниже 1 мс.
Уровень инструментов MCP (2026-04-06, stdio JSON-RPC, по 30 вызовов)
| Инструмент | ср. | p50 |
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevvGwardo/brain-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server