peerbridge-mcp README

The project's README from github.com/Hoylon/peerbridge-mcp. As one markdown file: README.md.

PeerBridge bridge logo

PeerBridge MCP

A local-first, auditable multi-Agent control room for coding, review, evidence, and private remote work.

Run Codex, Claude Code, Grok, Kimi, provider APIs, OpenAI-compatible endpoints, and local models as one governed engineering team across desktop and phone without flattening their native capabilities.

English | 繁體中文 | 简体中文

PeerBridge Alpha 6 release Apache 2.0 source license Security policy

Download Windows Alpha · Quickstart · Features · Technical showcase · Client setup

PeerBridge Modern Workbench showing a governed multi-Agent room

Modern Workbench with synthetic preview data. No private conversation or credential is included.

Start in 30 seconds

  1. Download PeerBridgeControlRoom-0.1.0a6-windows-x64-portable.zip from the Alpha 6 release.
  2. Compare the ZIP's SHA-256 with SHA256SUMS.txt on the release page.
  3. Extract the complete ZIP to a writable folder and double-click Launch PeerBridge.cmd.

The portable build does not install a service, modify an existing Python environment, or include provider credentials. Local workspace data stays under %LOCALAPPDATA%\PeerBridge\workspace. Prefer source installation? Continue to Install from source.

See the Pixel Control Room

PeerBridge Pixel Control Room showing managed Agent sessions

The same local coordination core in the original dense Pixel interface.

PeerBridge is more than a collection of chat tabs. Its provider-native adapter layer keeps Codex JSON-RPC, Claude Code stream-json, Grok/Kimi ACP, provider APIs, and local runtimes as separate capability contracts. Every Agent is bound to a stable identity, selected model, permission policy, room context, task, and evidence trail.

Use it for parallel implementation and review, bounded technical debate, task ownership, approved shared memory, mutual scoring, cross-agent audits, and human-controlled release work. PeerBridge runs locally on SQLite, keeps provider credentials out of chat and project history, and preserves a SHA-linked record of messages, decisions, evidence, scores, permissions, and handoffs.

Human or Agent messages can wake the room, collaboration stops on consensus, blockers, stagnation, or explicit limits, and the operator can intervene at any time.

What maintainers get PeerBridge behavior
Provider-native adapter layer Codex, Claude Code, Grok, Kimi, provider APIs, compatible endpoints, and local runtimes keep separate audited identities and capability boundaries.
Work instead of reply cascades Parallel implementation, review, discussion, and release workflows stop on consensus, blockers, stagnation, or explicit limits.
Governed write access Permission cards, approved isolated Git worktrees, source-state checks, diffs, and proof records stay human-controlled.
Durable project context Selected history imports, room memory, task briefings, and handoffs are source-bound instead of silently merged.
Reviewable decisions Agent activity, answers, evidence, mutual scores, audits, token usage, and stale-proof warnings remain visible.
Local ownership SQLite data and credentials stay on the operator's machine; browser remote control remains private, while the allow-listed Tailcat companion is visible and enabled by default.

Technical differentiators

flowchart LR
    A["Provider-native adapters"] --> C["Per-Agent capability union"]
    C --> P["Capability-aware approval broker"]
    P --> W["Governed worktree and writer lease"]
    W --> R["Parallel review and bounded collaboration"]
    R --> E["SHA-linked evidence and Proof Bundle"]
    H["Human operator"] --> P
    H --> R

Run the provider-free maintainer showcase with one command:

python examples\demo_workflow.py --workspace demo-workspace --scope demo

Its public receipt proves that an overlapping second writer was rejected, two independent reviewers satisfied quorum, completion rehashed the synthetic artifact, and the audit chain verified with zero writes. It contains no provider credential or lease capability. See the claim-to-test evidence map.

Status: alpha. The coordination and audit core is tested, but the public API and database schema may change before 1.0.

Operational continuity and commercialization are explicit design boundaries. See memory and long-running operations and the open-core boundary. Tailscale Serve remains the private browser transport; Tailcat CLI connectivity is visible and enabled by default but remains independently allow-listed. Roadmap entries are not capability claims.

Why

Running two coding agents against one repository creates predictable failure modes:

PeerBridge addresses those coordination failures without making either agent the boss. One task has one writer lease, peers can review each other, and a human can intervene.

Architecture

flowchart LR
    H["Human operator"] --> M["Local control room"]
    C["Codex / Claude Code"] --> S1["PeerBridge stdio process"]
    A["Grok / Kimi / DeepSeek / Gemini / local Agents"] --> S2["PeerBridge stdio process"]
    M --> S3["PeerBridge stdio process"]
    R["Private mobile UI"] -->|"Tailnet HTTPS"| T["Tailscale Serve"]
    T -->|"loopback only"| S4["Human MCP message gateway"]
    S1 --> DB[("Shared SQLite store")]
    S2 --> DB
    S3 --> DB
    S4 --> DB
    DB --> L["SHA-linked audit events"]
    DB --> W["Mailbox, leases, reviews, proofs"]

Each MCP client launches its own stdio server process with a distinct --agent-id. Those processes coordinate through one project-local .peerbridge/peerbridge.sqlite3 database. SQLite WAL mode and BEGIN IMMEDIATE transactions serialize state changes.

Local desktop surfaces

PeerBridge is one local desktop product, not a hosted web service. Both desktop surfaces use the same local Python, SQLite, and MCP core:

A fresh workspace shows a local two-preview chooser before the Control Room opens. The selection is stored in .peerbridge/ui-preferences.json; later launches open that surface directly until the operator changes Appearance and restarts.

Features

Quickstart

Windows portable app

Download PeerBridgeControlRoom-0.1.0a6-windows-x64-portable.zip from the GitHub Alpha release, extract the complete ZIP to a writable folder, and double-click Launch PeerBridge.cmd. The portable app creates its local workspace under %LOCALAPPDATA%\PeerBridge\workspace; it does not include provider credentials or private runtime data.

This Alpha executable is not code-signed, so Windows SmartScreen may ask you to review the publisher. Verify the release SHA-256 before opening it. PeerBridge does not provide an auto-installer or modify an existing Python environment.

Install from source

Requirements: Python 3.11 or newer.

git clone https://github.com/hoylon/peerbridge-mcp.git
cd peerbridge-mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
peerbridge init --project-root . --scope demo
peerbridge doctor --project-root . --scope demo
peerbridge monitor --project-root . --scope demo

Open 01 Multi-Agent Console to view current room Agents and explicitly authorized desktop or terminal work without choosing a folder. To launch a new managed CLI, choose an installed Codex, Claude Code, Kimi Code, or Grok CLI and its working directory there. Kimi and Grok use the reviewed deny-all ACPX profile. Set every participant role on 02 Chat, where Equal participant is the default. Managed input is sent through stdin and is not persisted by the Console. The page shows only output and events PeerBridge captured; an unrelated terminal opened elsewhere is not retroactively readable. Use 09 Trust & Task Verification for templates, durable operations, schedules, permission decisions, isolated worktrees, the Trust Timeline, and Proof Bundle export or verification.

Run a server manually:

# In Workbench > Connect, authorize codex-main once and copy the decision ID.
$decision = "<permission-decision-id>"
$identity = peerbridge identity --project-root . --scope demo issue --agent-id codex-main `
  --profile collaborator --permission-decision-id $decision | ConvertFrom-Json
peerbridge serve --project-root . --agent-id codex-main --scope demo `
  --identity-capability $identity.identity_capability

The capability is bound to the exact project, scope, Agent ID, and fixed collaborator tool profile. Its secret contents are never printed. Reserved operator identities and revocation remain available only through the authenticated local Control Room.

When one client can select several provider models, record the exact route without exposing credentials:

$apiDecision = "<permission-decision-id-from-workbench>"
$apiIdentity = peerbridge identity --project-root . --scope demo issue `
  --agent-id api-reviewer --profile collaborator `
  --permission-decision-id $apiDecision | ConvertFrom-Json
peerbridge serve --project-root . --agent-id api-reviewer --scope demo `
  --identity-capability $apiIdentity.identity_capability `
  --client-name api-coding-client `
  --provider-id provider-api:grok `
  --model-id grok

agent-id identifies the logical worker. client-name identifies the MCP-capable application or adapter. provider-id is an operator-supplied non-secret route label, and model-id identifies the selected model. Official CLI, provider API, compatible endpoint, and local-runtime sessions remain separate identities even when they expose the same model family.

Direct OpenAI-compatible endpoints do not require CC Switch. On the Connect page, save the API base URL and API key into Windows Credential Manager, discover the provider's advertised model IDs, and bind a route to one logical Agent. The same page reads CC Switch providers and models through its public CLI and changes the active provider only after an explicit confirmation. The API key never enters SQLite or an MCP message. Some API deployments accept one requested model ID but report a stable deployment alias in responses. In that case set EXPECTED RESPONSE MODEL explicitly. For example, a route may request grok-4.6 while requiring the response to report grok-4.6-build. An unconfigured or changing alias fails closed rather than being silently treated as the requested model.

The server speaks newline-delimited JSON-RPC over stdin/stdout. Usually an MCP client starts it for you, so a manually started server waiting for input is expected behavior.

Connect clients

Use an absolute Python executable path so each client launches the same installed environment and shared database.

Codex

codex mcp add peerbridge -- C:\path\to\peerbridge-mcp\.venv\Scripts\python.exe `
  -m peerbridge_mcp serve --project-root C:\path\to\your-project `
  --agent-id codex-main --scope your-project

Claude Code

claude mcp add --scope project --transport stdio peerbridge -- `
  C:\path\to\peerbridge-mcp\.venv\Scripts\python.exe `
  -m peerbridge_mcp serve --project-root C:\path\to\your-project `
  --agent-id claude-code --scope your-project

Use different MCP server entry names when both clients write a shared project config, for example peerbridge-codex and peerbridge-claude. See client configuration for TOML, JSON, Linux, and macOS examples. The same stdio server can be registered in Kimi Code CLI; other providers may require a separate API-backed runner. See agent integration boundaries.

PeerBridge reports the effective capability of each bound room Seat instead of inferring it from the Agent name:

Any other client or terminal that implements MCP can

peerbridge-mcp (Hoylon/peerbridge-mcp)

remote-development
Searching Database…

What is this?PeerBridge MCP is a local-first control room that lets you run multiple coding agents (Codex, Claude Code, Grok, Kimi, provider APIs, and local models) as one governed engineering team, with every message, decision, and edit recorded in a SHA-linked audit trail.
Is this just a bunch of chat tabs, or something more structured?It is a desktop application (the WebView2 'Modern Workbench' or the original Tk-based 'Pixel Control Room') that coordinates one stdio MCP server process per agent through a shared local SQLite database, not a chat client.
How do I get it running?Download PeerBridgeControlRoom-0.1.0a6-windows-x64-portable.zip from the Alpha 6 release, verify its SHA-256 against SHA256SUMS.txt, extract the ZIP to a writable folder, and double-click Launch PeerBridge.cmd. Installing from source instead requires Python 3.11 or newer.
Which coding agents can I actually plug in?Codex, Claude Code, Kimi Code, and Grok (through ACPX), plus provider APIs, OpenAI-compatible endpoints, and local models; each one runs as its own MCP stdio server launched with a distinct --agent-id.
Is this ready for production use?Not yet - the project is in alpha, the public API and database schema may still change before 1.0, and the Windows build isn't code-signed, so SmartScreen may warn you to review the publisher before opening it.
Does it run on Mac and Linux, or only Windows?The pre-built portable release and the default Modern Workbench desktop are Windows-only; the README only mentions optional WSL2 and macOS sandbox contracts as extra defense-in-depth gates, not confirmed desktop support.
Where does my data and provider credentials end up?Everything stays local: state lives in a project-local SQLite database and provider credentials are kept out of chat and project history; any remote/mobile access goes only through the private Tailscale Serve transport.
What actually stops two agents from editing the same file at once?PeerBridge enforces capability-token task leases with deterministic read/write overlap checks, so one task has one writer and a second overlapping writer is rejected rather than silently merged.
What is Tailcat?Tailcat is the allow-listed companion that gives zero-rental private mobile/remote control over Tailscale Serve; it's visible and enabled by default but remains independently allow-listed.
What do the built-in workflow templates do?Templates like Implement + Review, Investigate + Debate, Read-only Audit, and Release Gate run on a durable local operation queue with cancellation, timeout, retry, scheduling, and recovery.
How does it prove an edit was actually reviewed and tested?It keeps a Trust Timeline with stale-evidence detection, live file rehashing before task completion, and create-only portable Proof Bundles verified by a separately installed trusted verifier.
Creator
Hoylon
Size
6.1 MB
Stars
242
Age
2mo
Commits · 90 Days