Skip to main content
Glama

Hermes Brain

Hermes Agent 用のマルチエージェントオーケストレーション

並列Hermesエージェントを生成します。共有の脳(Brain)を与え、1つのコマンドでデプロイしましょう。SQLiteをバックエンドとし、Pythonで調整を行うため、調整のためのトークン消費はゼロです。

License: MIT Python Node.js Hermes MCP

インストール · クイックスタート · 仕組み · CLI · ツール · メモリバンク · 開発


インストール

オプション1 — ソースからブートストラップ(Hermesにはこちらを推奨)

curl -fsSL https://raw.githubusercontent.com/DevvGwardo/brain-mcp/main/install.sh | bash

インストーラーの動作:

  1. Node.js MCPサーバー (brain-mcp) をビルド

  2. Pythonオーケストレーションパッケージ (hermes-brain) をインストール

  3. BrainをHermesのMCPサーバーとして登録

オプション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

友人と共有する場合: 各個人のBrainは独立したSQLite DBであるため、ネットワーク設定は不要です。同じワンライナーがどこでも動作します。

Dockerユーザー: tmuxペインはヘッドレスコンテナ内でレンダリングできないため、layout: "headless" でエージェントを生成してください:

brain_wake({ task: "...", layout: "headless" })

クイックスタート

Hermesエージェントの艦隊をオーケストレーションする1つのコマンド:

hermes-brain "Build a REST API with auth, users, and posts" \
  --agents api-routes auth-layer db-models tests

動作内容:

  1. Pythonコンダクターが4つのバックグラウンドHermesエージェント (hermes -q) を生成

  2. 各エージェントがファイルを確保し、コントラクトを公開し、コードを書き、ハートビートを送信

  3. コンダクターが統合ゲートを実行 — プロジェクトをコンパイルし、エラーをDM経由で担当エージェントにルーティング

  4. エージェントが自己修正。ゲートはクリーンになるまで再試行

  5. サマリーを表示: エージェント、コントラクト、メモリ、メトリクス、完了。

その他の実行方法:

# 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:#fff

pi-agent-core はLLMエージェントランタイムであり、モデルの対話ループ、ツール実行、イベント購読を処理します。brain-mcp は、piエージェントが呼び出すツールとして調整レイヤー(状態、メッセージング、ハートビート、ロック、コントラクト)を提供します。コンダクター は、フェーズ、ゲート、tmuxレイアウトを使用してすべてを統合します。

トークン消費ゼロの調整。 コンダクターは純粋なPythonであり、LLMトークンは実際の作業にのみ消費されます。ハートビート、確保、コントラクト、ゲート、再試行はすべてローカルで実行されます。

管理するサーバーは不要。 各エージェントはBrainへの独自のstdio接続を開きます。SQLiteのWALモードが同時アクセスを安全に処理します。

同じBrain、任意のCLI。 Hermes、Claude Code、MiniMaxなど、すべてのクライアントが同じSQLite DBにアクセスします。HermesとClaudeエージェントの混成艦隊が同じタスクで調整可能です。


hermes-brain CLI

hermes-brain <task> [options]

フラグ

デフォルト

説明

--agents <names...>

agent-1 agent-2

並列生成するエージェント名

--model <id>

claude-sonnet-4-5

各エージェントに渡すモデル

--no-gate

off

統合ゲートをスキップ

--retries <n>

3

ゲートの最大再試行回数

--timeout <seconds>

600

エージェントごとのタイムアウト

--config <file.json>

マルチフェーズパイプラインの読み込み

--db-path <path>

~/.claude/brain/brain.db

カスタムBrain DB

パイプライン設定ファイル

{
  "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" }
      ]
    }
  ]
}

フェーズは順次実行されます。フェーズ内のエージェントは並列実行されます。統合ゲートはフェーズ間で実行されます。


Brainツール

12カテゴリ、35以上のツール。 Hermes、Claude Code、およびMCP互換エージェントすべてで利用可能です。

アイデンティティと健全性

ツール

説明

brain_register

このセッションに名前を付ける

brain_sessions

アクティブなセッションを一覧表示

brain_status

セッション情報とルームを表示

brain_pulse

ステータスと進捗を含むハートビート(保留中のDMを返す)

brain_agents

全エージェントのライブ健全性(ステータス、ハートビート経過時間、確保状況)

メッセージング

ツール

説明

brain_post

チャンネルに投稿

brain_read

チャンネルから読み取り

brain_dm

他のエージェントにダイレクトメッセージ

brain_inbox

DMを読み取る

共有状態とメモリ

ツール

説明

brain_set / brain_get

一時的なキーバリューストア

brain_keys / brain_delete

キーの一覧表示 / 削除

brain_remember

永続的な知識を保存 (brain_clear後も保持)

brain_recall

前のセッションからのメモリを検索

brain_forget

古いメモリを削除

ファイルロック

ツール

説明

brain_claim

ファイル/リソースをロック (TTLベースのミューテックス)

brain_release

ロック解除

brain_claims

アクティブなロックを一覧表示

コントラクト(統合バグを防ぐ)

ツール

説明

brain_contract_set

モジュールが提供/期待するものを公開

brain_contract_get

コーディング前に他のエージェントのコントラクトを読み取る

brain_contract_check

全コントラクトを検証 — パラメータの不一致や不足関数を検出

統合ゲート

ツール

説明

brain_gate

コンパイルとコントラクトチェックを実行し、エラーを責任エージェントにDM

brain_auto_gate

ゲートをループ実行し、修正を待ち、クリーンになるまで再試行

タスク計画 (DAG)

ツール

説明

brain_plan

依存関係を持つタスクDAGを作成

brain_plan_next

依存関係が満たされたタスクを取得

brain_plan_update

タスクを完了/失敗としてマーク (依存先を自動昇格)

brain_plan_status

全体的な進捗

brain_workflow_compile

自然言語の目標をフェーズ、エージェント、ファイルスコープ、コンダクター設定に変換

brain_workflow_apply

コンパイルされたワークフローをBrain状態とタスクDAGに永続化、オプションでコンダクターJSONを書き出し

オーケストレーション

ツール

説明

brain_wake

新しいエージェントを生成 (hermes, claude, またはheadless)

brain_swarm

1回の呼び出しで複数のエージェントを生成

brain_respawn

失敗したエージェントをリカバリコンテキスト付きで置換

brain_metrics

エージェントごとの成功率、期間、エラー数

コンテキスト台帳(追跡の喪失を防ぐ)

ツール

説明

brain_context_push

アクション/発見/決定/エラーを記録

brain_context_get

台帳を読み取る

brain_context_summary

コンテキストリカバリ用の要約ビュー

brain_checkpoint

完全な作業状態を保存

brain_checkpoint_restore

コンテキスト圧縮後に復元


ハートビートとコントラクトプロトコル

生成されたすべてのエージェントは、オーケストレーターが強制する2つのプロトコルに従います:

ハートビート — エージェントは2〜3回のツール呼び出しごとに、ステータスと短い進捗メモを添えて brain_pulse を呼び出します。コンダクターはこれを使用して以下を行います:

  • ターミナルにライブステータスを表示 (● working — editing src/api/routes.ts)

  • 停止したエージェントを検出 (60秒間パルスがない場合 → stale)

  • 保留中のDMをパルスの戻り値として配信 (余分なラウンドトリップなし)

コントラクト — エージェントはコードを書く前に brain_contract_get を呼び出し、他のエージェントが何をエクスポートしているかを確認します。書き込み後、brain_contract_set で自身のコントラクトを公開します。完了とマークする前に、brain_contract_check が艦隊全体を検証し、以下を検出します:

  • 関数シグネチャの不一致 (2引数期待に対し3引数取得)

  • 不足しているエクスポート (エージェントAが getUser をインポートしているが、エージェントBがエクスポートしていない)

  • 型のドリフト ( 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

npx tsc --noEmit

Python

mypy

Rust

cargo check

Go

go vet

エラーは解析され、失敗したファイルを確保したエージェントと照合され、DMとしてルーティングされます。エージェントは次のパルスでエラーを拾い、自己修正します。ループは --retries 回まで再試行し、その後諦めます。


混成艦隊

Brain DBはすべてのMCPクライアント間で共有されます。1つのプロジェクトで以下が可能です:

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、定型作業には安価なモデルを使用します。すべて同じBrainを通じて調整し、コントラクト、ゲート、メモリを共有します。

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.021ms

0.011ms

0.027ms

0.039ms

~47K/s

message_post (1 msg)

0.014ms

0.011ms

0.019ms

0.031ms

~70K/s

message_read (50 msgs)

0.042ms

0.042ms

0.045ms

0.066ms

~24K/s

state_get

0.002ms

0.002ms

0.002ms

0.003ms

~570K/s

claim_query (all)

0.001ms

0.001ms

0.002ms

0.002ms

~670K/s

heartbeat_pulse (update)

0.002ms

0.002ms

0.002ms

0.003ms

~464K/s

session_query (by id)

0.002ms

0.002ms

0.002ms

0.003ms

~455K/s

直接SQLite: すべてのコア調整操作はサブミリ秒です。KVストア (state_get) は ~570K 読み取り/秒 を維持します。高頻度の調整 (ハートビート、確保、状態) は1msを大幅に下回ります。

MCPツールレイヤー (2026-04-06, stdio JSON-RPC, 各30回呼び出し)

ツール

平均

p50

p95

最小

最大

brain_status

12.2ms

12.0ms

15.6ms

8.8ms

21.2ms

brain_sessions

1.9ms

1.7ms

3.6ms

0.9ms

4.7ms

brain_keys

1.6ms

1.6ms

2.6ms

0.8ms

4.5ms

brain_claims

2.0ms

1.8ms

-
security - not tested
A
license - permissive license
-
quality - not tested

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