Confer — cross-model consultation with resumable threads
Requires bun plus at least one provider CLI (claude, codex, pi, or Oracle >= 0.16.2 with an authenticated ChatGPT browser profile).
You talk to a peer model through threads: open one with a question, the peer's session id is stored, and any later round — today or next week, from any host session — resumes the same peer-side context. All mechanics live in scripts/confer.mjs (single source of truth); use it instead of assembling provider CLI calls.
scripts/confer.mjs open <provider> [-t name] <prompt|-> # start thread (claude|codex|pi|oracle)
scripts/confer.mjs reply <thread> <prompt|-> # continue with full peer-side context
scripts/confer.mjs all [--with-oracle] <prompt|-> # default claude+codex; flag explicitly adds GPT Pro
scripts/confer.mjs list | show <thread> # registry / transcript
scripts/confer.mjs doctor [--live [provider]] # live defaults to claude+codex
Pass - as the prompt and pipe stdin for anything long or containing quotes.
A round can take minutes. When you expect a long consultation and have other work, run the call in the background and pick the reply up when notified — never relay a peer through a subagent: the peer's own words must reach the user undiluted. Each ← transcript header records which model answered (and cost/tokens where the CLI reports them).
Steps
Resolve the target. Which provider, and new thread or continuation? "Ask Kimi" routes to pi, whose default model is cation/fw-kimi-k3; set CONFER_PI_MODEL to another model already configured in Pi. Route to oracle only when the user explicitly asks to use/ask GPT Pro or Oracle. Bare all and bare doctor --live remain Claude + Codex; use doctor --live pi to test Pi and all --with-oracle or doctor --live oracle only on explicit request. Otherwise prefer a peer outside your own model family. When the user says 继续/上次/"what does it say now", run list and match the existing thread. Name threads you expect to revisit (-t zhang-pe-review); let one-shots auto-name. Done when: provider + thread decided.
Compose a self-contained prompt. The peer sees none of your conversation, files, or context — only what you send. Inline the code, text, or claims under discussion; state the question precisely; for review requests, ask for a verdict plus reasoning, not vibes. Long material → heredoc via stdin (... <<'EOF' | scripts/confer.mjs open codex -t name -). Done when: the peer could answer with zero access to your session.
Run, then relay faithfully. Report the peer's position as the peer's — quote the load-bearing sentences, keep disagreements between you and the peer visible instead of silently merging into consensus, and state your own verdict separately when you have one. Always surface the thread name so the dialogue can continue later. Done when: the user has seen the peer's answer, your position, and the thread id.
Guardrails
- The peer is advisory and read-only: it must never be asked to edit files or run state-changing commands. Codex opens sandboxed, Claude print mode cannot approve writes, and Pi runs with tools, context files, skills, and extensions disabled. If the peer proposes changes, you apply them under your own judgment.
- Never send secrets, API keys, or credentials in a prompt — transcripts persist in plaintext under
~/.confer/; Oracle browser/account configuration remains machine-local under ~/.oracle/.
- A peer's agreement is not verification. Treat "the other model also thinks so" as one signal, not proof; a peer that refutes you is the more valuable outcome.
Adding a provider, CLI/session mechanics, and known version caveats: references/providers.md.
1---2name: confer3description: Consult a peer AI model (Claude, Codex, or a local Pi model, plus GPT Pro through Oracle when explicitly requested) and keep the dialogue resumable across rounds. Use when the user wants a second opinion from another model ("ask codex", "问问 codex", "让 claude 看看", "ask kimi"), explicitly asks to use Pi, Kimi, GPT Pro, or Oracle, wants a multi-round cross-model review, wants to resume an earlier consultation thread, or when a conclusion needs independent-model verification.4---56# Confer — cross-model consultation with resumable threads78Requires `bun` plus at least one provider CLI (`claude`, `codex`, `pi`, or Oracle >= 0.16.2 with an authenticated ChatGPT browser profile).910You talk to a peer model through **threads**: open one with a question, the peer's session id is stored, and any later round — today or next week, from any host session — resumes the same peer-side context. All mechanics live in `scripts/confer.mjs` (single source of truth); use it instead of assembling provider CLI calls.1112```13scripts/confer.mjs open <provider> [-t name] <prompt|-> # start thread (claude|codex|pi|oracle)14scripts/confer.mjs reply <thread> <prompt|-> # continue with full peer-side context15scripts/confer.mjs all [--with-oracle] <prompt|-> # default claude+codex; flag explicitly adds GPT Pro16scripts/confer.mjs list | show <thread> # registry / transcript17scripts/confer.mjs doctor [--live [provider]] # live defaults to claude+codex18```1920Pass `-` as the prompt and pipe stdin for anything long or containing quotes.2122A round can take minutes. When you expect a long consultation and have other work, run the call in the background and pick the reply up when notified — never relay a peer through a subagent: the peer's own words must reach the user undiluted. Each `←` transcript header records which model answered (and cost/tokens where the CLI reports them).2324## Steps25261. **Resolve the target.** Which provider, and new thread or continuation? "Ask Kimi" routes to `pi`, whose default model is `cation/fw-kimi-k3`; set `CONFER_PI_MODEL` to another model already configured in Pi. Route to `oracle` only when the user explicitly asks to use/ask GPT Pro or Oracle. Bare `all` and bare `doctor --live` remain Claude + Codex; use `doctor --live pi` to test Pi and `all --with-oracle` or `doctor --live oracle` only on explicit request. Otherwise prefer a peer outside your own model family. When the user says 继续/上次/"what does it say now", run `list` and match the existing thread. Name threads you expect to revisit (`-t zhang-pe-review`); let one-shots auto-name. Done when: provider + thread decided.27282. **Compose a self-contained prompt.** The peer sees none of your conversation, files, or context — only what you send. Inline the code, text, or claims under discussion; state the question precisely; for review requests, ask for a verdict plus reasoning, not vibes. Long material → heredoc via stdin (`... <<'EOF' | scripts/confer.mjs open codex -t name -`). Done when: the peer could answer with zero access to your session.29303. **Run, then relay faithfully.** Report the peer's position as the peer's — quote the load-bearing sentences, keep disagreements between you and the peer visible instead of silently merging into consensus, and state your own verdict separately when you have one. Always surface the thread name so the dialogue can continue later. Done when: the user has seen the peer's answer, your position, and the thread id.3132## Guardrails3334- The peer is **advisory and read-only**: it must never be asked to edit files or run state-changing commands. Codex opens sandboxed, Claude print mode cannot approve writes, and Pi runs with tools, context files, skills, and extensions disabled. If the peer proposes changes, you apply them under your own judgment.35- Never send secrets, API keys, or credentials in a prompt — transcripts persist in plaintext under `~/.confer/`; Oracle browser/account configuration remains machine-local under `~/.oracle/`.36- A peer's agreement is not verification. Treat "the other model also thinks so" as one signal, not proof; a peer that refutes you is the more valuable outcome.3738Adding a provider, CLI/session mechanics, and known version caveats: `references/providers.md`.