§ 01 Critical Consensus Engine / v1.0 MIT · four surfaces

Stop shipping
AI copy slop.
Make it earn consensus.

Forge lets your AI question its own work. Independent agents research, draft, and critically review the complete copy against your original prompt. One objection sends it back for revision. You get the deliverable only when every reviewer approves it.

Star on GitHub See the method → Claude Code · Codex · Electron · terminal.
§ 02 Anti-slop gate

The first draft
does not ship.

One prompt starts a council, not an autocomplete. Forge moves through discovery, grounded research, synthesis, and section-by-section drafting. Then every enabled agent audits the whole deliverable against the user's core ask. Any dissent triggers a complete revision and another independent vote.

01 Question Agents challenge the offer, audience, proof, tone, constraints, and desired action before anyone writes finished copy.
02 Draft Each required section is written from the shared synthesis and grounded research—not invented features or plausible-sounding filler.
03 Attack Every reviewer independently hunts generic AI cadence, unsupported claims, prompt drift, weak persuasion, contradictions, and disconnected CTAs.
04 Revise One blocker is enough. The complete deliverable is rewritten around the objections, then every agent votes again.
05 Prove The final copy returns only after unanimous approval at 85+ alignment. Headless runs persist every verdict in critical-review.md; Codex keeps its delegated review trace in-session. No agreement means no fake “final.”
Use it in the surface already open: ask naturally from Claude Code or Codex through the Forge plugin, enable the automatic consensus run in the Electron app, or run it from the terminal. Claude, Electron, and terminal use Forge's phase engine; Codex uses the same fail-closed contract through its native host subagents so it never has to launch itself recursively.
§ 03 forge debate

Cross-provider.
Rotating roles.

One command. Pick 2–5 providers with configured keys. Each becomes a participant named after the model it's running. The five debate roles (skeptic · pragmatist · analyst · advocate · contrarian) rotate between them at every phase — so the same question gets interrogated from five perspectives, each one coming from a different model every round.

forge debate · cross-provider agents with rotating roles
forge debate "Should the municipality run the budget vote on-chain or on paper ballots?"
01

Agents = providers

Claude · Sonnet 4.5, Gemini · 2.5 Pro, GPT · 4o, DeepSeek V3, Ollama · Gemma 3 — each slot is a model, not a persona.

02

Roles rotate per phase

At each phase transition the RoleRotator shifts every role by one slot. Claude plays Skeptic in phase 1, Pragmatist in phase 2, Analyst in phase 3.

03

Fresh directive on change

When an agent's role flips, a systemSuffix is injected with the new stance. The next response adopts the new perspective fully, no bleed-through.

§ 04 Case study

One product.
Every decision.
One engine.

CivicVote is a fictional product · decentralized voting for local municipalities. Below are four real decisions that team ran through Forge instead of chatting with one model for three hours each. For every one: the question, the mode, the artifact that landed on disk.

01Validate

Will any municipality actually buy this?

forge -m idea-validation

"Does the pain exist at a price someone will pay to fix?"

GO with three-line reasoning, plus a pivot shortlist if pilot #1 misses turnout. Skeptic forced the procurement-data question; Contrarian tried and failed to kill the idea.

02Red-team

Who attacks a decentralized municipal vote?

forge -m red-team

"Nation-state? Incumbent? A coercive spouse? Name them before modeling them."

Three kill chains drafted, scored against real detection capacity. Ranked mitigation plan lands: kiosk mode, deniable re-vote, public tally feed, audit log with DIDs only.

03Audit

Is the protocol implementation actually correct?

forge -m tech-review

"Cryptography is the part where silent bugs decide elections."

Findings report with file paths + severity · including a nonce re-use in vote/sign.ts:147 flagged HIGH. Architect, Security, Perf, and Tests all at the table.

04Raise

Can the story survive a real partner meeting?

forge -m vc-pitch

"Pressure-test the pitch before the actual room burns it."

Investment memo ready for IC · verdict FOLLOW, with named next-diligence items. GP, Associate, LP proxy, and Founder all played out before the real meeting.

Same team. Different question. Same engine. CivicVote was the example. Your product is the point.

§ 05 See it run

Real terminal sessions. Pick a mode.

§ 06 Operator control

Every agent,
your hand on the dial.

Press a in any running session. Swap each agent's model — Claude, Gemini, OpenAI, OpenRouter, Perplexity, Ollama — cycle providers, pause a loud voice, or force a specific perspective to speak next. Changes apply to the next turn without restarting the session.

Beyond the live panel, every flow has a CLI entry point: forge auto "<request>" routes natural-language to the right mode; forge pipeline "<spec>" chains modes with each phase's consensus feeding the next; forge parallel splits into N sub-deliberations; forge compress distills transcripts into handoff briefs; forge mcp runs the blocking consensus tool for Claude Code, Codex, Cursor, and other MCP hosts.

Forge Agent Control panel showing per-agent model swap and pause toggles.

The panel.

Every live agent shows up · state, role, current model, pause badge. cycle the model, p switches provider, space pauses, s forces a speak turn. Close with esc, changes apply immediately.

← → model p · provider space · pause s · force speak
Forge Skill Picker browsing project, user, and plugin-scoped skills live per agent.

Skills on demand, per agent.

From Agent Control hit k · browse everything the loader found (skills/, ~/.claude/skills/forge/, plugin skills, skills.sh list output). space toggles; the agent's next response incorporates the new knowledge without a restart.

k · open picker space · toggle / · filter
§ 07 Method

Five roles.
Not personalities.

The deliberation engine enforces a specific kind of disagreement. Five culture-neutral reasoning stances, each with a job. No invented names, no backstories, no simulated humans · just structural roles that have to carry their own weight or the phase machine overrides them.

i. Skeptic Demands citations, disputes every premise, refuses "obviously" as a step. Blocks progress without evidence. Most useful early · latest you want them silenced is never.
ii. Pragmatist Forces closure. Watches the clock and the scope. If the room is still theorizing in phase four of five, the Pragmatist rules the phase done and moves on.
iii. Analyst Traces second-order effects, runs the numbers, maps dependencies. The voice that asks "if this ships, what breaks downstream?" · not rhetorically.
iv. Advocate Speaks for the user, the victim, the person who never showed up to the meeting. Holds the non-technical stake that otherwise disappears into deck language.
v. Contrarian Rejects the framing itself. If the right answer is to not do this, the Contrarian is the one allowed to say so without being talked over.
§ 08 Install

One method.
Four surfaces.
Your choice.

Install once. Make the draft defend itself.

Run Forge directly in the terminal or Electron app, or install its host-native workflow in Claude Code or Codex. Claude Code runs the blocking Forge MCP engine; Codex delegates to three native host reviewers. Both stop on unresolved dissent and return the complete copy to the conversation only after unanimous approval.

~ / install · four surfaces
# terminal + Electron
git clone https://github.com/SaharBarak/forge.git
cd forge && npm install && npm run cli:build && npm link
forge
# or: npm run electron:dev

# Claude Code plugin
claude plugin marketplace add https://github.com/SaharBarak/forge
claude plugin install forge@forge

# Codex plugin
codex plugin marketplace add SaharBarak/forge
codex plugin add forge@forge

# then ask either host
"Use Forge copywrite consensus for this landing-page brief…"