I pay for Claude, ChatGPT, and Gemini. The best answers I get come from making them check each other — and the worst workflow I had was copy-pasting between three tabs to do it.
auto-browser is my fix: an MCP server that attaches to a Chrome session I'm already logged into (over the DevTools Protocol — no API keys) and drives all three chat UIs in parallel. Claude Desktop orchestrates it through MCP tools.
Consensus with actual structure
Same prompt to all three; then cross-pollination rounds — each model sees the others' answers and revises. Rounds end with a line-anchored VERDICT: AGREE | DISAGREE vote. Consensus requires at least two unhedged AGREEs and zero DISAGREEs among models that succeeded. The edge cases got the real engineering: dissent stays sticky if the dissenter times out the next round, peer verdict lines are stripped before embedding (so a model quoting another can't cast its vote), and a timeout is never shown to the other models as if it were an answer.
To be precise about what this measures: convergence, not correctness. Three models agreeing can still be wrong — but where they disagree is reliably where I should be paying attention.
The new part: multi-provider deep research
v3.2.0 adds a research pipeline: hand it a batch of research prompts, and it routes each across providers, runs the providers' own deep-research modes, waits out the long runs, harvests the reports, and synthesizes a final per-task report from all of them.
Three provider quirks made harvesting genuinely fun to build:
- ChatGPT renders deep-research reports inside a sandboxed cross-origin iframe. The main DOM shows zero assistant messages while a finished report sits right there on screen — naive scraping concludes the run failed. The fix is frame-aware extraction.
- Claude puts the full report behind an expandable Document artifact; the message DOM only carries a preview. Harvest opens the artifact and takes the full text.
- Gemini wants its research plan confirmed before it starts; the runner clears that gate automatically.
Deep research costs real money and real quota, so spend-safety is a design invariant, not a feature: a task that sent is never re-sent, chat URLs are preserved so a completed report can always be re-harvested for free, and a persisted quota ledger (e.g. Gemini's daily cap) plus cooldown detection means the queue waits instead of burning.
Model selection, because defaults are expensive
Every send resolves an explicit model — per-call → per-task → configured default — and never silently inherits whatever the tab last used. I learned that one the expensive way. Tests pin each provider's cheapest model by design.
Honest status
MIT. macOS is live-proven end to end; Windows/Linux Chrome paths exist but are untested. A 22-file Chrome-free unit suite runs in CI (Node 20/22); the live e2e gates need your own logged-in Chrome and never run in CI. And plainly: this automates provider web UIs, which may be restricted by their terms of service — it's built for your own personal, paid accounts, at your own risk. UI automation breaks when UIs change; there's a selector-registry override file for exactly that day.
Repo: https://github.com/mythicalhacker/auto-browser
Release notes: https://github.com/mythicalhacker/auto-browser/releases/tag/v3.2.0

Top comments (0)