v2.79.3 MIT-licensed Node 22+ Works with Claude · Codex · Gemini · OpenCode

Governance for AI coding agents.

Your agents already write the code. Nexus Agents enforces the rules they follow, reviews their work adversarially via multi-model consensus, and writes everything they touch to a content-addressed audit chain. One MCP server. Every CLI you already have.

~/work · nexus-agents vote · 2026-05-17
$ nexus-agents vote --proposal "Add a 'nexus-agents tour' interactive
    walkthrough command that runs after 'setup'..."

Nexus Agents Consensus Vote
============================

Proposal: Add a 'nexus-agents tour' interactive walkthrough command that runs after 'setup'...

Collecting votes from 7 agents (timeout: 300s each)...

Votes

   Software Architect:   APPROVE (82%)
   Security Engineer:    APPROVE (90%)
   Developer Experience: APPROVE (88%)
   AI/ML Engineer:       REJECT  (75%)
   Product Manager:      APPROVE (82%)
   Contrarian Analyst:   REJECT  (95%)
   Scope Steward:        ERROR   — MCP error -32001: Request timed out

Summary

  Approve:  4
  Reject:   2
  Abstain:  0
  Errored:  1
  Approval: 66.7%
  Threshold: simple_majority

Result: APPROVED

Completed in 188487ms

Verbatim from a real run on 2026-05-17 (a proposal from the website backlog; the panel said yes 4 to 2). Seven specialised voter roles deliberate via your local Claude, Codex, and Gemini CLIs — no API keys required to start. Pass --record <issue-number> to write the result back to GitHub as a structured comment; pass --verbose to print per-vote verification hashes.


The 60-second proof.

Three commands. No keys to set up just to look. The hard part is later.

1 Install

npm install -g nexus-agents
nexus-agents doctor

expected A health table; rows that need API keys are marked missing. doctor only reads; it never writes.

2 Run a real consensus vote (no API keys needed)

nexus-agents vote --quick \
  --proposal "Use SQLite over JSON files for the outcome store"

expected Output in the same shape as the hero transcript above, but with 3 voters instead of 7 (--quick). Roles deliberate via your local Claude/Codex/Gemini CLIs (whichever you have installed). Approval, reject, abstain counts + final decision print to the terminal.

3 Attach to your editor

# Auto-configure as an MCP server for Claude Code, Cursor, etc.
nexus-agents setup

expected The MCP server registers in your editor's config. Restart the editor, and 38 new tools (orchestrate, consensus_vote, research_synthesize, verify_audit_chain, …) become available to whatever agent you're already using.

That's the smoke task. Every command above is configurable, but the defaults already work — nexus-agents orchestrate "…" will pick the right CLI, run the right experts, and write the trace.


What's in the box.

consensus

Multi-model consensus voting.

5 aggregation strategies — simple majority, supermajority, unanimous, proof-of-learning, higher-order Bayesian. Seven specialised voter roles. Run consensus_vote as an MCP tool, or nexus-agents vote from your shell. Decisions are recorded with per-voter reasoning and confidence.

routing

Learning-aware routing.

A 12-stage pipeline (budget → capability → preference → TOPSIS → LinUCB → latency) picks the right CLI from the 5 adapters you have installed. Outcomes feed 8 memory backends so tomorrow's routing is informed by today's failures — not by static rules.

audit

Content-addressed audit chain.

Every model call, every vote, every research citation lands in a content-addressed log on disk. Replay any decision, identify which agent recommended what, when, with what evidence. Drift detection fires when conventions slip.

Plus 11 expert personae, 9 research sources, and 176+ tracked papers feeding the planner. The full inventory lives in the architecture pages.


Architecture, briefly.

Tasks enter through MCP, route through the pipeline, execute on whichever CLI scored best, and get validated by consensus before outcomes feed back into the router.

flowchart LR mcp["MCP Protocol<br/>38 tools"] orch["Orchestrator<br/>task analysis"] router["Composite Router · 12 stages<br/>Budget → Capability → Preference<br/>TOPSIS → LinUCB → Latency"] clis["Claude · Gemini · Codex · OpenCode"] outcome[("Outcome Store<br/>feeds back")] subgraph services ["Supporting"] consensus["Consensus<br/>5 strategies"] memory["Memory<br/>8 backends"] audit["Audit chain"] end mcp --> orch --> router --> clis --> outcome outcome -.->|learns routing| router orch -.-> services

Next steps.

Action items first; reference last. Pick any one — they don't have to be in order.