Three specialists. One signed answer. Disagreement surfaced, not averaged away — and every result lands as a tamper-evident receipt any agent, auditor, or future teammate can verify.
from claudeway import ( AgentConfig, Swarm, SwarmConfig, Task, ) swarm = Swarm(SwarmConfig( name="ArchReview", agents=[ AgentConfig("StrongConsistency", "Distributed Systems Engineer", "..."), AgentConfig("Operations", "SRE / Platform Lead", "..."), AgentConfig("Pragmatist", "Staff Engineer", "..."), ], ), api_key=...) result = await swarm.process(Task( id="q1", description="Active-active Postgres or eventual consistency?", input_data={}, )) # Three specialists. One signed answer. # Disagreement surfaced, not averaged away. print(result.result["final_answer"]) print(f"agreement: {result.result['agreement']:.0%}")
One SDK, four adapters, three transports, two signature backends. Pick what you need; the rest stays out of your pip install.
// why 3 agents?
2 is a tie. 3 is the smallest panel where disagreement is meaningful and the majority is non-trivial. N is configurable — pass more AgentConfig entries and the swarm scales.
Swarm, Coordinator, Agent — concurrent by default. Async-first, prompt-caching-friendly. 4 base deps.
pip install claudewayOne binary. Any MCP-capable agent — Claude Code, Cursor, Goose — gains reach_consensus as a tool.
Hierarchical decomposition. Planner agent emits a JSON plan with dependencies; specialists run in parallel where independent.
claudeway.coordinatorOne signed receipt renders as plain JSON, a W3C Verifiable Credential, or a Nostr NIP-78 event any client can read.
JSON · VC · NostrSame receipt, same canonical hash. Swap Ed25519 for ML-DSA-65 (FIPS 204) at the SignatureBackend ABC — no consensus code changes.
pip install claudeway[pq]Watch each agent land in real time. Every consensus event appended to an RFC 6962 transparency log, anchored to Nostr on a cadence.
observableClaudeway plugs in wherever an agent stack needs a verifiable consensus primitive — as a Python SDK, an MCP tool, a coordinator, or a signed receipt on the wire.
Drop signed consensus in as a primitive. Your orchestrator calls Claudeway; your users get a tamper-evident receipt with disagreement surfaced. Lazy-imported adapters keep your core dep-light.
adapters →Any MCP-capable client — Claude Code, Cursor, Goose, your own — gains reach_consensus and verify_consensus as tools. One binary. Zero framework to learn.
Replace "ask once and trust it" with "ask three specialists, sign the result." Every decision becomes a tamper-evident artifact — auditable, replayable, and impossible to silently rewrite.
concepts →Every consensus event appended to an RFC 6962 transparency log, anchored to Nostr on a cadence. Hand the receipt to an auditor, regulator, or future teammate — they verify without trusting you.
threat model →Claudeway isn't for every Claude call. It's for the calls you might have to justify later — to an auditor, a co-founder, a regulator, or your future self. Three real patterns from the examples.
"Should we go active-active Postgres or eventual consistency for payments?" Three specialists answer in parallel. If they disagree, a Debate round surfaces the gap before you commit.
Every consensus is appended to an RFC 6962 Merkle log; the log root anchors to Nostr on a cadence. A third party can verify a receipt was in the log — and detect tampering — without trusting Claudeway.
Already running LangGraph, CrewAI, MAF, or your own orchestrator? Claudeway drops in as one node — no rip-and-replace, no rewrite. Signed consensus as a graph primitive.
The signature surface is the moat. Everything below it is the SDK; everything above it is how you deliver the signed receipt to the systems that consume it.
Ensembles average N model calls into a single confident answer. Claudeway records the disagreement, signs it, and ships the trace alongside the verdict.
Three Claudeway agents ran a real Debate consensus. The result was signed with Ed25519, wrapped as a NIP-78 Nostr event, and published to four public relays. Verify the signature yourself.
Kind 30078 (NIP-78 addressable). BIP-340 Schnorr signature over sha256 of the NIP-01 serialization. Anyone with the event JSON can verify — no Claudeway runtime required.
Open in any Nostr-capable client — Damus, Snort, Primal, or your terminal. Or verify it right here in your browser:
nak verify < event.json
Claudeway isn't free. The benchmark uses 36× the tokens of a single Claude call and runs 4× slower (29.8s vs 7.5s, same model).
// rough cost per consensus call
cheap path 3 agents · WeightedVote · Haiku · 256 tok → ~$0.01
debate path 3 agents · Debate · Haiku · 1k tok → ~$0.30
premium 3 agents · Debate · Sonnet · 2k tok → ~$1.50
// 100 questions/day at debate path ≈ $90/mo. Use it for what's worth it.
You can. The core consensus logic is ~50 lines. But:
No third-party audit yet — Claudeway is brand new. Until auditors catch up, here's what you can check yourself, and what's still on you.
task_id and swarm are inside the signed payload. A receipt from task-A will not verify as task-B's result.The signed artifact is self-contained. Verification doesn't need Claudeway installed, doesn't need a server, doesn't need me. The canonical payload is documented; the cryptography is standard.
Receipts are plain Ed25519 signatures over a canonical JSON payload. Verify with nak, OpenSSL, or a 20-line Python script. No Claudeway runtime required.
The SDK is MIT-licensed and will stay MIT. No BSL rug, no SSPL switch, no "Open Core" carve-out. If a hosted tier ships later, the SDK stays MIT — the SDK is the receipt format, not a sales funnel.
Currently v0.3.x. Public API may shift. 1.0 ships when the signature surface is locked — at that point, canonical payload, receipt shape, and verifier interface freeze. Until then, semver-minor breakage is fair.