Ask several AI coding agents the same question. Get independent answers, side by side.
The main workflow starts in the agent you already use. It sends a task (a brief) to polybrief, which starts separate Codex, Claude Code, or OpenCode workers. Each reads your project and answers independently. Your main agent checks their answers and reports back to you. You can also run polybrief directly from a terminal.
- Code review of a branch: two reviewers on different models, not one.
- Research: compare approaches, then let each agent challenge the other.
- Any other read-only question about a project: write a brief in plain text.
The agents run read-only: they read your code, they do not change it.
macOS or Linux:
curl -fsSL https://raw.githubusercontent.com/ivklgn/polybrief/main/install.sh | shWindows (PowerShell):
irm https://raw.githubusercontent.com/ivklgn/polybrief/main/install.ps1 | iexThe install puts one binary on your PATH. It creates no settings directory.
Or use Go 1.25+: go install github.com/ivklgn/polybrief@latest.
Worker isolation on Windows is experimental.
You also need the agent CLIs you want to use, already logged in: codex, claude, and/or opencode.
Review your branch against main with a short brief:
printf 'Review this change for bugs and missing tests. Report only findings backed by code.\n' | polybrief -C ~/my-repo -b main -Ask any read-only question, with a cross-check round:
echo "Compare the two caching layers in this project. Cite files." | polybrief -C ~/my-project -p crosscheck -A brief is the task in plain text. Pass a file path, or - to read it from stdin.
A run takes a few minutes. The first line of output, OUT <dir>, is the folder with every
prompt and answer. One WORKER line per answer gives its status and path. RESULT says
complete, partial, stale, or failed; then every answer is printed in full between
<answer-…> tags, so your agent reads them without opening files. A worker that failed or
is not installed is named on stderr with the path of its log.
Four skills, one job each, in folders you copy into your agent's skills directory. The skills are general. Polybrief runs under them.
| Skill | Job | Call it | Runs |
|---|---|---|---|
| code-review | review a change before merge | /code-review [base] [focus] |
parallel, Codex + OpenCode |
| research | answer a question about the code with sources | /research <question> [in paths] |
crosscheck, Claude + Codex |
| done-check | does the change do what the task asked? | /done-check [base] <task> |
parallel, Codex + Claude |
| grooming | refine a backlog item before work | /grooming <item> [in paths] |
its own pattern file, Codex + Claude |
/code-review origin/develop
/done-check PROJ-142
Each folder has a SKILL.md, a sample brief and a guide to the answers. Its
README shows the same run by hand. See examples/README.md.
A pattern is a small Markdown file that says who answers and in which order. You are already working in a main agent, such as Codex or Claude Code. It sends the brief to Polybrief, checks the worker answers, and replies to you. Each worker is a separate read-only agent session, even if it uses the same CLI as the main agent.
parallel (default): Codex and Claude answer independently. Add OpenCode, or pick
any agents, with -w: -w codex,claude,opencode.
flowchart LR
U([You]) --> H[Your agent]
H -- brief --> P[Polybrief]
P --> X[Codex worker] & C[Claude worker]
X -- answer --> J[Your agent reviews results and replies to you]
C -- answer --> J
twice: each agent answers twice, independently.
flowchart LR
U([You]) --> H[Your agent]
H -- brief --> P[Polybrief]
P --> X1[Codex 1] & X2[Codex 2] & C1[Claude 1] & C2[Claude 2]
X1 --> J[Your agent reviews results and replies to you]
X2 --> J
C1 --> J
C2 --> J
crosscheck: independent answers, then each agent checks the other's answer.
You get both answers and both checks. The default pair is Codex and Claude;
the research example chooses them explicitly.
flowchart LR
U([You]) --> H[Your agent]
H -- brief --> P[Polybrief]
P --> C[Claude analyzes] & X[Codex analyzes]
C -- answer via Polybrief --> XC[Codex checks]
X -- answer via Polybrief --> CC[Claude checks]
C --> J[Your agent verifies evidence and replies to you]
X --> J
XC --> J
CC --> J
Choose one with -p NAME. The three named patterns are built into the binary.
In parallel and crosscheck, -w chooses the agents: -w opencode runs
OpenCode alone. twice names Codex and Claude in its run: lines; to use
OpenCode there, copy the pattern file and change those lines.
OpenCode needs -o opencode.model=provider/model.
Task-fit checks use parallel with a row-format override; see the
done-check skill. Role-based review is a
custom panel example, with caller-supplied
security and test checklists; see code review.
Existing -p intent calls need -p parallel and the done-check -o expect=…
setting. Existing -p panel calls need a path to a caller-owned panel file.
In a pattern file, run: <worker> at base runs that participant on a copy of the
base commit's tree, without the diff; it needs -b.
See CONTRIBUTING.md. polybrief is released under the MIT License.
polybrief [-C DIR] [-b GIT_BASE] [-p PATTERN] [-w AGENTS] [-c FILE]... [-o KEY=VALUE]... BRIEF|-
Use polybrief patterns to list the built-in patterns, polybrief plan -p NAME to
see stages and the call count without starting a worker, polybrief config to see
every setting with its source, and -p ./my-pattern.md for your own pattern (keep
it outside the reviewed project). Each worker call uses your CLI subscription or
API key. Read-only permissions do not hide files the user account can read; check
findings before acting on them.
