@brightbeamai/chap-coordinator-mcp
OfficialПротокол совместной работы человека и агента (CHAP)
Протокол для людей и агентов, выполняющих реальную работу вместе.
Когда ИИ-агент создаёт черновик, а человек его редактирует, где хранится эта правка? В CHAP она хранится в конверте, который можно запросить, воспроизвести и проверить через шесть месяцев.
Установка · Экскурсия на 90 секунд · Двенадцать сценариев · Об этом репозитории · Статья
У вас есть агенты, выполняющие реальную работу. Составляют ревью кода, триажат тикеты, предлагают урегулирования, проверяют контракты. Человек одобряет, редактирует или отклоняет каждое решение. Сейчас это решение живёт в вашем прикладном коде, в чатах, в комментариях к тикетам и в вашей голове. Когда через шесть недель что-то идёт не так, реконструкция произошедшего занимает сорок пять минут и наполовину состоит из догадок.
CHAP даёт вам одно место для этих решений и одну форму для них. Черновик агента — это артефакт. Правка человека — это структурированный override с diff, rationale и tags, которые вы контролируете. Всё связывается в цепочку по хешу содержимого. Вы запрашиваете цепочку вместо того, чтобы грепать логи в четырёх интерфейсах.
Цепочка переживает ротацию ключей, истечение логов и уход людей; один вызов audit.read возвращает всё целиком. Override'ы, которые ваши ревьюеры уже делают, накапливаются в данные супервизии, которые иначе пришлось бы заказывать отдельно. Когда одобрения должны быть неотказуемыми, security-signed/1.0 добавляет подписи, привязанные к OIDC, с определяемым вами signature_meaning, а audit-scitt/1.0 закрепляет цепочку во внешнем прозрачном журнале, проверяемом без доверия вашим серверам. И CHAP существует рядом с MCP и A2A, а не заменяет их: MCP — для инструментов, A2A — для других агентов, CHAP — для общей работы с людьми.
Вот и вся суть.
Экскурсия на 90 секунд
Один разработчик использует Cursor для ревью пул-реквестов. Бот помечает «warning», с которым разработчик не согласен. Вот весь обмен целиком, от начала до конца. Клип ниже длится около 23 секунд и состоит из шести подписанных шагов; соответствующий код находится прямо под ним.
А вот и код, каждая его строка. Одна непрерывная история на двух языках; выбирайте тот стек, который используете.
1. Создайте рабочее пространство. Встроенный координатор с SQLite-персистентностью, два участника, рабочее пространство:
import { Coordinator } from "@brightbeamai/chap-coordinator";
import { SqliteStore } from
"@brightbeamai/chap-coordinator/storage/sqlite";
const coord = new Coordinator({
store: new SqliteStore("./chap.db"),
});
coord.api.workspace.create({
workspace: "wsp_pr_reviews",
profiles: ["core/1.0", "review/1.0"],
});
coord.api.participant.join({
workspace: "wsp_pr_reviews",
from: "human:me@local",
type: "human",
});
coord.api.participant.join({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
type: "agent",
});from chap_coordinator import Coordinator
from chap_coordinator.storage.sqlite \
import SqliteStore
coord = Coordinator(store=SqliteStore("./chap.db"))
def send(method, params):
return coord.dispatch({
"jsonrpc": "2.0", "id": method,
"method": method, "params": params,
})
send("workspace.create", {
"workspace": "wsp_pr_reviews",
"profiles": ["core/1.0", "review/1.0"],
})
send("participant.join", {
"workspace": "wsp_pr_reviews",
"from": "human:me@local",
"type": "human",
})
send("participant.join", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"type": "agent",
})2. Бот создаёт черновик, вы делаете override. Подключите вашу существующую интеграцию с Cursor к эмиссии конвертов:
// The bot's review is the output of a task.
const { task_id } = coord.api.task.create({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
assignee: "agent:cursor#v1",
kind: "code_review",
input: { pr_id: "PR-482" },
});
coord.api.task.complete({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
task_id,
output: cursorReview,
});
coord.api.review.request({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
task_id,
artefact: cursorReview,
to: "human:me@local",
});
// You disagree with one comment. Override it.
coord.api.decide.override({
workspace: "wsp_pr_reviews",
from: "human:me@local",
task_id,
intent_preserved: true,
diff: [{ op: "replace",
path: "/comments/0/severity",
value: "info" }],
rationale: "False positive. Framework " +
"convention, not a bug.",
tags: ["false-positive",
"framework-pattern-misread"],
});# The bot's review is the output of a task.
r = send("task.create", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"assignee": "agent:cursor#v1",
"kind": "code_review",
"input": {"pr_id": "PR-482"},
})
task_id = r["result"]["task_id"]
send("task.complete", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"task_id": task_id,
"output": cursor_review,
})
send("review.request", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"task_id": task_id,
"artefact": cursor_review,
"to": "human:me@local",
})
# You disagree with one comment. Override it.
send("decide.override", {
"workspace": "wsp_pr_reviews",
"from": "human:me@local",
"task_id": task_id,
"intent_preserved": True,
"diff": [{"op": "replace",
"path": "/comments/0/severity",
"value": "info"}],
"rationale": "False positive. Framework "
"convention, not a bug.",
"tags": ["false-positive",
"framework-pattern-misread"],
})О поверхностях. TypeScript поставляется с типизированной фасадной обёрткой (
coord.api.*), так что каждый метод получает полное автодополнение и проверки на этапе компиляции. Python сохраняет форму JSON-RPC конверта на поверхности (coord.dispatch({...})), а потребители оборачивают её как удобно для места вызова; хелперsend()— это идиома, которую используют тесты на Python. Оба пути порождают идентичные байты на проводе; цепочка аудита побайтово одинакова независимо от того, какой клиент сделал вызов.
3. Через два месяца проанализируйте, что вы делали. В эталонном репозитории есть скрипт аналитики на обоих языках, который читает цепочку аудита (по HTTP или напрямую из вашего SQLite-файла) и группирует override'ы:
# TypeScript reference, against the SqliteStore from step 1:
$ npm --prefix reference/core-plus-review run analyze -- --db ./chap.db wsp_pr_reviews
# Python reference, same idea:
$ python3 reference/python/analyze_overrides.py --db ./chap.db wsp_pr_reviews
Override Learning Report
========================
Total overrides: 47
By tag:
false-positive ████████████████ 31 (66%)
framework-pattern-misread ███████████ 22 (47%)
cosmetic-pref ████ 8 (17%)
Top file paths:
src/handlers/ 18 overrides
src/components/ 9 overridesВаша следующая ревизия промпта для Cursor ссылается на паттерн по имени, а не угадывает его.
Related MCP server: interlock-mcp
Конверт override, подробно
Если вы будете внимательно изучать одну форму, пусть это будет конверт override. У каждого поля есть своя задача:
Два поля, которые большинство пропускает при первом чтении, — это intent_preserved и tags.
intent_preserved отличает уточняющий override (человек согласился с решением агента, но переписал форму его выражения) от замещающего override (человек принял другое решение). Это два разных режима отказа, и им нужны разные исправления. Высокая доля уточнений по одному пункту политики означает, что у агента сбит поиск информации; высокая доля замещений по тому же пункту означает, что сама политика неоднозначна или контекст задачи агента неверен.
tags — это контролируемый словарь, о котором договаривается ваша команда. Держите его небольшим. Всё, что вы туда кладёте, — это измерение, по которому вы будете агрегировать через три месяца, отвечая на вопросы вроде какие промпты нужно доработать? или на каких путях бот стабильно ошибается?
Установка
TypeScript / Node:
npm install @brightbeamai/chap-coordinatorPython:
pip install chap-coordinatorЛюбой из путей даёт вам Core плюс профиль review/1.0 и запускаемый эталон. TypeScript-эталон находится в reference/; Python-эталон — в reference/python/. TypeScript-библиотека живёт в packages/coordinator/; Python-библиотека — в packages/coordinator-py/.
Пятиминутное практическое введение: examples/00-five-minute-start.md.
Статус
CHAP 0.2 — публичный черновик. Спецификация — это семь методов Core плюс одиннадцать опциональных профилей (SPECIFICATION.md), с двумя эталонными реализациями, TypeScript и Python, которые покрывают все профили и проходят конформанс-харнесс на одном и том же JSON-RPC 2.0 проводе. Координатор может представлять себя как MCP сервер или A2A агента, а пять фреймворк-мостов выводят решения human-in-the-loop из LangGraph, Pydantic AI, AG2, LlamaIndex Workflows и Google ADK в цепочку аудита. Полный перечень, структура репозитория и то, как CHAP соотносится с MCP и A2A, — в ABOUT.md.
Ломающие изменения следуют Semantic Versioning. Поверхности профилей движутся быстрее, чем Core, так что если вам нужна строгая стабильность, дождитесь 1.0.
Что читать дальше
Начните с IN_PRACTICE.md — двенадцать сценариев от соло-разработчика с Cursor до производства, регулируемого GMP; это самое полезное следующее чтение. ABOUT.md описывает, что в репозитории, как CHAP соотносится с MCP и A2A, какие стандарты он переиспользует и как внести вклад. core/SPEC.md умещает всю поверхность протокола на один экран. А технический отчёт на arXiv обосновывает проектные решения: архитектуру, семантику профилей, модель угроз и двенадцать сценариев в виде JSON-трейсов в приложении с разобранными примерами.
Цитирование
Если вы ссылаетесь на CHAP в академической или технической работе, пожалуйста, цитируйте технический отчёт:
@techreport{chap2026,
author = {Shahid, Arsalan and Suttie, Gordon and Black, Philip},
title = {Collaborative Human-Agent Protocol (CHAP): An open protocol for auditable, structured multi-human and multi-agent collaboration},
institution = {Brightbeam AI},
year = {2026},
type = {Technical Report},
number = {arXiv:2606.09751},
url = {https://arxiv.org/abs/2606.09751}
}CC-BY 4.0 (спецификация) · Apache 2.0 (код) · Без роялти, любой язык, любое развёртывание.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceThe Control Plane for Autonomous AI Enforce policy before execution, require human approvals where risk demands it, and keep a full audit trail — from first action to final result.495
- AlicenseNot gradedqualityBmaintenanceA human-in-the-loop governance interlock for AI agents. Agents propose changes, a human countersigns the exact plan, and then it executes stage by stage with precondition checks, verification, and auditing.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceGoverned, self-hosted memory for AI agents: writes queue until an authorized approver signs off.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to log, evaluate, and ground consequential decisions against an organization's authority graph, creating a traceable audit trail for governance.MIT
Related MCP Connectors
Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.
Runtime permission, approval, and audit layer for AI agent tool execution.
Bitcoin-anchored, tamper-evident audit log for AI agents — record, disclose and verify actions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/BrightbeamAI/chap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server