Second Opinion
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.
Install
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 installingSet your keys (ANTHROPICAPIKEY / OPENAIAPIKEY) in the environment, or run 2op apikey to store them.
Usage
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 "…"Configuration
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.
Develop
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # then add your keys
pytest