Observed since 20 Oct, 15:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Second Opinion: a cross-referencing debate CLI where two frontier models debate, a cheaper judge rules, orchestrates, and synthesizes.
A cross-referencing debate CLI. Two frontier debater models (e.g. Opus 4.8, GPT 5.2) independently answer your question, then debate it — critiquing and rebutting each other with evidence and live web search. A separate, cheaper judge model (e.g. Sonnet 4.6) rules on each round, asks clarifying questions when needed, and synthesizes the final answer with a stated confidence and any unresolved disagreement.
Every question debates by default. For a simple lookup where you don't need a
second opinion, prefix it with ! (or pass --direct) to get a single direct
answer from the judge — one cheap call, no debate.
Agreement is the stop condition, not a correctness proof. Two models can be confidently and identically wrong, and the judge is a single point of bias — so every ruling is rationale-backed and the final answer states its confidence.
Requires Python 3.12+.
uv tool install 2nd-opinion-cli # recommended — isolated, global `2op`
pipx install 2nd-opinion-cli # same idea, via pipx
uvx --from 2nd-opinion-cli 2op # run once without installing
Set your keys (ANTHROPIC_API_KEY / OPENAI_API_KEY) in the environment, or run
2op apikey to store them.
Run 2op to open an interactive session. Type a question to run a full debate,
prefix it with ! for a direct single-judge answer (no debate), or use a slash
command — type / for an autocompleting palette:
| Command | Description |
|---|---|
/help | List commands |
/models | Choose the debater/judge models and save them |
/apikey | View (masked) and add/update API keys |
/status | Show current models, keys, and flags |
/clear | Clear the screen |
/exit | Leave the session (or Ctrl-D) |
For scripting, 2op -q "your question" runs a single debate and exits (as does
any piped/non-TTY run). Set slots inline:
2op --debater-a opus-4.8 --debater-b gpt-5.2 --judge sonnet-4.6 -v -q "…"
Model selection is saved after the first run to ~/.config/secondop/config.json
and reused silently. Re-choose with /models (or -m at launch), or override a
single slot with --debater-a / --debater-b / --judge.
API keys are read from the environment or a .env file first, then from the
config file (set via /apikey). Environment/.env values take precedence.
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # then add your keys
pytest
Model rates live in src/secondop/config.py and are verified against the 2026
catalog captured in pricing/*.json. Provider prices change — re-confirm
against the live pricing pages before relying on cost figures.
pypistats · 46 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-10-18 – 2026-10-18 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-10-13 – 2026-10-13 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-10-09 – 2026-10-09 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-10-07 – 2026-10-07 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-30 – 2026-09-30 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-28 – 2026-09-28 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-27 – 2026-09-27 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-23 – 2026-09-23 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-20 – 2026-09-20 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-18 – 2026-09-18 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-16 – 2026-09-16 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-09 – 2026-09-09 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-07 – 2026-09-07 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-05 – 2026-09-05 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-04 – 2026-09-04 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-09-01 – 2026-09-01 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-31 – 2026-08-31 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-28 – 2026-08-28 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-24 – 2026-08-24 | 9 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-23 – 2026-08-23 | 8 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-21 – 2026-08-21 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-20 – 2026-08-20 | 3 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-19 – 2026-08-19 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-18 – 2026-08-18 | 20 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-17 – 2026-08-17 | 5 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-16 – 2026-08-16 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-15 – 2026-08-15 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-14 – 2026-08-14 | 5 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-13 – 2026-08-13 | 6 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-09 – 2026-08-09 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-06 – 2026-08-06 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-04 – 2026-08-04 | 4 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-03 – 2026-08-03 | 6 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-07-29 – 2026-07-29 | 11 | 2026-10-20T19:32:02.7698367Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T19:32:02.7698367Z |
| 2026-07-25 – 2026-07-25 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-07-23 – 2026-07-23 | 2 | 2026-10-20T19:32:02.7698367Z |
| 2026-07-22 – 2026-07-22 | 7 | 2026-10-20T19:32:02.7698367Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 17 Jun 2026 | 8 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 15:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:21a0f7d304317087b5bd5fcf46b338493cb273ab340d26c4505f6b4707593108