{"slug": "show-hn-tab-council-turn-your-ai-tabs-into-a-model-council", "title": "Show HN: Tab Council – turn your AI tabs into a model council", "summary": "A new Chrome extension called Tab Council allows users to turn their existing AI browser tabs into a structured model council for cross-checking important prompts. The tool orchestrates independent answers, critiques, and a judge synthesis across providers like ChatGPT, Claude, Gemini, Perplexity, Merlin, and Grok, using only local Chrome storage and no API keys. Designed for launch reviews, product decisions, and research synthesis, the extension aims to provide safer, multi-model verification by running a full council workflow directly within users' open tabs.", "body_md": "Turn the AI tabs you already use into a structured model council.\n\nTab Council is a Chrome MV3 extension for cross-checking important prompts across ChatGPT, Claude, Gemini, Perplexity, Merlin, and Grok. Create a tab group named `tab-council`\n\n, place your provider tabs inside it, and run one prompt through an independent answer, critique, judge synthesis, and optional Ratify/Veto flow.\n\nNo API keys. No backend. Your accounts, your tabs, your local Chrome storage.\n\n[Watch the v0.1.0-alpha demo video](https://github.com/vaddisrinivas/tab-council/releases/download/v0.1.0-alpha/tab-council-demo.mp4)\n\nOne model answer is useful. A small council is safer.\n\nThere are already browser extensions that send one prompt to many AI tools and show the answers side by side. Tab Council is trying to do something narrower: run the full model-council workflow over the AI tabs you already have open.\n\nIt is built for launch reviews, product decisions, architecture checks, research synthesis, policy drafts, and any question where you want independent reasoning plus visible dissent before you trust the answer.\n\n**Uses existing AI tabs**: no OpenRouter setup, no provider API keys, no copied model roster.** Starts from a Chrome tab group**: the tabs you group under`tab-council`\n\nare the council.**Runs council rounds, not just broadcast**: independent answers, critique, disagreement check, optional final positions, synthesis.** Has explicit roles**: Member, Judge, Validator, Observer, Exclude.** Handles structured output**: JSON parsing, one repair pass, and loud failures instead of silent bad transcripts.** Adds final review**: Ratify/Veto lets non-judge tabs challenge the synthesized verdict.\n\nThis alpha focuses on extension-based orchestration:\n\n- Detects the active Chrome tab group named\n`tab-council`\n\n. - Uses each grouped AI tab as an explicit model seat.\n- Reads visible model labels where the provider UI exposes them.\n- Lets every tab take a role:\n**Member**,** Judge**,** Validator**,** Observer**, or** Exclude**. - Runs Round 1 independent answers, Round 2 polite critique, optional Round 3, synthesis, and optional Ratify/Veto.\n- Requires structured JSON from every phase.\n- Runs one JSON repair pass when a provider returns almost-JSON instead of valid JSON.\n- Stores run state and history only in\n`chrome.storage.local`\n\n. - Exports a local Markdown transcript.\n\n- ChatGPT:\n`chatgpt.com`\n\n,`chat.openai.com`\n\n- Claude:\n`claude.ai`\n\n- Gemini:\n`gemini.google.com`\n\n- Perplexity:\n`perplexity.ai`\n\n,`www.perplexity.ai`\n\n- Merlin:\n`getmerlin.in`\n\n,`www.getmerlin.in`\n\n,`extension.getmerlin.in`\n\n- Grok:\n`grok.com`\n\n,`x.com`\n\n,`*.x.ai`\n\n- Local/dev generic AI pages:\n`localhost`\n\nand`127.0.0.1`\n\nUnknown public web pages are not broadly enabled in the store-safe manifest. Known adapters fail visibly when a provider UI changes.\n\n- Open the AI provider tabs you want.\n- Select the model inside each provider tab, such as Claude Sonnet, a ChatGPT model, Gemini, Perplexity, or Grok.\n- Group those tabs in Chrome.\n- Name the group\n`tab-council`\n\n. - Open the Tab Council side panel.\n- Assign roles and choose a mode.\n- Enter one prompt.\n- Review the rounds, final verdict, Ratify/Veto results, and export.\n\n**Member** participates in debate rounds and can be selected as judge.**Judge** participates as a member and is preferred for synthesis.**Validator** skips debate and only ratifies or vetoes the final verdict.**Observer** appears in the roster but is never automated.**Exclude** is ignored for the run.\n\n**Quick**: faster pass using current threads.** Balanced**: fresh threads, critique, judge synthesis.** Thorough**: forces final statements before synthesis.** Rigorous**: forces final statements and Ratify/Veto.\n\nManual controls let you override the mode: force Round 3, choose judge mode, enable Ratify/Veto, include raw export, and select output views.\n\nEvery provider is asked to return strict JSON for each phase. That makes the side panel reliable: confidence scores, disagreements, verdicts, and vetoes can be parsed instead of scraped from prose.\n\nJSON repair means this: if a model returns almost valid JSON, for example markdown fences, trailing comments, or malformed quote escaping, Tab Council sends that same tab a repair prompt and asks for valid JSON only. The repaired response is marked in the UI. If repair fails, the tab fails loud instead of silently corrupting the transcript.\n\nTab Council has no extension-owned server, analytics, or tracking pixels.\n\n- Prompts are pasted into the provider tabs you selected.\n- Later rounds intentionally share successful model outputs across selected provider tabs.\n- Local run state lives in\n`chrome.storage.local`\n\n. - Exports are generated locally by your browser.\n- Clear Local removes stored extension run data.\n\nProvider websites still receive the content sent into their own tabs. See [PRIVACY.md](/vaddisrinivas/tab-council/blob/main/PRIVACY.md) for the exact boundary.\n\nDownload the `v0.1.0-alpha`\n\nrelease zip from GitHub:\n\n[github.com/vaddisrinivas/tab-council/releases](https://github.com/vaddisrinivas/tab-council/releases)\n\nThen:\n\n- Open\n`chrome://extensions`\n\n. - Enable\n**Developer mode**. - Click\n**Load unpacked**. - Unzip the release and select the folder containing\n`manifest.json`\n\n. - Sign into your AI providers in Chrome.\n- Put those tabs in a group named\n`tab-council`\n\n. - Click the Tab Council extension icon.\n\n```\nnpm install\nnpm run check\n```\n\nRun the deterministic fake provider harness:\n\n```\nnpm run fake-ai\n```\n\nOpen `http://localhost:4173/`\n\nin two or more tabs, put them in a `tab-council`\n\ngroup, grant localhost permission, and run a council. The page returns structured JSON for every phase.\n\n`manifest.json`\n\n: MV3 permissions, side panel, service worker, provider host allowlist.`src/background.js`\n\n: tab-group discovery, permissions, run state machine, prompt orchestration.`src/contentScript.js`\n\n: provider page automation adapters.`src/sidepanel.*`\n\n: operator UI, roles, run controls, transcript, export.`src/prompts.js`\n\n: structured prompt builders and Markdown export.`src/shared.js`\n\n: provider registry, settings, parsing, helper contracts.\n\nRead more in [docs/ARCHITECTURE.md](/vaddisrinivas/tab-council/blob/main/docs/ARCHITECTURE.md).", "url": "https://wpnews.pro/news/show-hn-tab-council-turn-your-ai-tabs-into-a-model-council", "canonical_source": "https://github.com/vaddisrinivas/tab-council", "published_at": "2026-05-29 15:02:25+00:00", "updated_at": "2026-05-29 15:17:25.492037+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-safety"], "entities": ["Tab Council", "ChatGPT", "Claude", "Gemini", "Perplexity", "Merlin", "Grok", "Chrome"], "alternates": {"html": "https://wpnews.pro/news/show-hn-tab-council-turn-your-ai-tabs-into-a-model-council", "markdown": "https://wpnews.pro/news/show-hn-tab-council-turn-your-ai-tabs-into-a-model-council.md", "text": "https://wpnews.pro/news/show-hn-tab-council-turn-your-ai-tabs-into-a-model-council.txt", "jsonld": "https://wpnews.pro/news/show-hn-tab-council-turn-your-ai-tabs-into-a-model-council.jsonld"}}