ConsensFlow — streams converging into one node
One tool · works in Pi & Claude Code

Ask another mind.
Without leaving your agent.

ConsensFlow routes one question to one named AI participant — Claude Code, Codex, Pi, or OpenCode — hands it your current session as context, and brings the answer back.

In plain terms: a fast second opinion from another AI — without switching tools or re-explaining your code, and you decide what to keep.

Claude Code Codex Pi OpenCode image
// your host routes to one participant at a time
You — in Pi your prompt + session
One prompt  →  one named participant  →  one handoff back. Never a broadcast.
What it is

A second opinion on your code — one prompt away

No tab-switching, no copy-pasting your code into another tool. You stay in your agent; ConsensFlow does the round-trip.

🎯

One at a time

You name one participant — @zeus, @athena — and ask. It's a focused consult, not a noisy panel. The next question can go to someone else.

🧠

They see your session

Each participant gets a handoff of your current conversation as context, runs once as an isolated helper, answers, and exits. No setup, no shared memory to manage.

🔒

You stay in control

Consulting is free and encouraged. A participant runs as a standard read-write CLI call, but keeping any of its work — or acting on its answer — is always your call.

The routing model

Any host. Any engine. One path at a time.

Whether your host is Pi or Claude Code, the same five destinations are available — participants backed by Claude Code, Codex, Pi, OpenCode, or an image model. Use the toggle on the diagram above to switch hosts; watch one route light up at a time.

From Pi

Routes to participants on Pi, Claude Code, Codex, and OpenCode — plus image generation. The Pi extension reads your live session and hands it off.

From Claude Code

Routes to participants on Claude Code, Codex, Pi, and OpenCode — plus image generation. The plugin stashes your transcript and hands it off.

Two hosts, one product

Same idea, native to each tool

ConsensFlow ships as a Pi extension and a Claude Code plugin. Same participants, same presets, same safety model — kept in parity.

Pi extension

consensflow-pi

Built on @earendil-works/pi-coding-agent. Routes from inside a Pi session.
  • Install with pi install from git or npm
  • Streams the participant's thinking into the Pi UI
  • Reads session state through Pi's own APIs
Claude Code plugin

consensflow-cc

Zero-dependency plugin: skill + /consensflow:cf command + hooks + a cf CLI.
  • Install from a marketplace or --plugin-dir
  • Hooks stash the session transcript for the handoff
  • --stream relays the run as it happens
Shared roster at ~/.consensflow/participants.json — define a participant in either tool and it shows up in both.
Logins & models

Use what you already pay for

ConsensFlow rides each engine's own CLI, so a participant signs in the way that engine already does — no new API keys to wire up. Reuse the subscriptions you have, and reach almost any model through Pi and OpenCode.

🔑

Your Claude subscription

Claude Code participants run on your existing Claude OAuth login — Opus 4.8, Fable 5, Haiku, at any effort. Your Max/Pro plan, not per-token API billing.

🪪

Your Codex login

Codex participants — and image generation via @pygmalion — ride your ChatGPT / Codex subscription: GPT 5.5 and gpt-image-2 on the plan you already have.

🌐

Any provider — Pi + OpenCode

Point them at OpenRouter (or Anthropic / OpenAI / Google directly) and reach dozens of models by name — DeepSeek, Qwen, Gemini, Grok, Llama, Mistral, Kimi, GLM, MiniMax…

Install

Up and running in a minute

Pick your host. Both pull the same participants from the shared roster.

1
Add the marketplace

One time — points Claude Code at the ConsensFlow plugin repo.

claude plugin marketplace add ngvoicu/consensflow-cc
2
Install the plugin

Or, to try a local checkout, launch with claude --plugin-dir consensflow-cc.

claude plugin install consensflow@consensflow-cc
3
Add some participants & restart

Then just mention one in chat — @zeus what do you think?

cf participants add zeus athena prometheus pygmalion
1
Install the extension

From GitHub (or any git/npm source Pi accepts).

pi install https://github.com/ngvoicu/consensflow-pi
2
Add some participants & reload

The same shared roster Claude Code reads. Reload Pi to pick them up — then see "how to use it" below.

cf participants add zeus athena prometheus pygmalion
Then — how to use it
Ask by name

The main way: just mention a participant in your session. The lead does the round-trip and relays the answer.

claude code › @zeus is this approach sound?
pi › ask @zeus is this approach sound?
Manage anytime

One roster, shared across Pi and Claude Code.

cf participants list  ·  cf participants add <preset>  ·  cf status
Consulting is free and one at a time. Acting on an answer — or keeping any file edits — waits for your approval.
Presets

50 ready-made participants

Curated model + effort combos, named after Greek gods (Pi), Norse gods (OpenCode), and the Muses (Claude). Add one by name — or define your own. Filter by engine:

★ = part of the default starter roster. Models are free strings — bring any identifier your engine accepts, or build a fully custom participant.

In a coding session

What it looks like

You're in your agent. You hit a fork, want a second take, or need an asset. You ask by name.

your-project — claude code session
you @zeus should this job queue be Redis or Postgres? Claude Code · Opus 4.8 · max
reading your session handoff…
@zeus You already run Postgres at <1k jobs/s — use Postgres with SKIP LOCKED. Redis adds an HA dependency you don't need yet; revisit past ~10k/s.
you @athena poke holes in that Postgres call Codex · GPT 5.5 · xhigh
@athena Agreed — one caveat: add a partial index on (status, run_at) or SKIP LOCKED scans will degrade under load. Otherwise sound.
you @odin draft the migration with that index OpenCode · DeepSeek V4 Pro
@odin Here's the table + the partial index Athena flagged:
  create table job (id bigint …, status text, run_at timestamptz);
  create index job_claim on job (status, run_at) where status = 'queued';
you @pygmalion diagram the final queue flow image · gpt-image-2
↳ saved ▸ runs/image-…/queue-flow.png
you looks good — apply odin's solution to db/migrate.sql
✓ wrote db/migrate.sql — the lead only ever acts when you ask

Add participants any time — by preset, renamed, or fully custom:

cf participants add odin --name reviewer # names it @reviewer
cf participants add all # the entire preset catalog
cf participants list
Safety model

Helpful by default. Harmless by default.

A consult runs as a standard read-write CLI call and may touch files — but nothing it changes is kept unless you decide to keep it.

👁️

Workspace-write by default

A participant runs like the CLI you'd run yourself — read, edit, run commands — but stays inside the project workspace (workspace-write). Only --tools full-auto lifts that boundary.

Acting is gated

The lead consults freely, but never applies a participant's advice or keeps its file edits without your approval — unless you pre-authorized it.

📁

Stays in its lane

Run artifacts live under ~/.consensflow/, never in your project. Any working directory a subprocess touches is validated as inside the workspace first.

Bring a second mind to your next decision.

Free to consult, one at a time, inside the agent you already use.

AI-Native Consulting

Want your team to work like this?

ConsensFlow is built by Gabriel Voicu — AI-native consultant. Talks ("Becoming an AI Native Company"), hands-on team training that teaches employees to use AI, and AI adoption consulting for engineering teams.


AI-native consulting →