Claude Desktop extension · Claude Code plugin

A second and third opinion, inside Claude.

Kirat lets Claude convene a council with ChatGPT and Gemini. Three model families take positions independently, then vote. The majority decides, and the dissent stays on the record. If there is no majority, Kirat says so instead of forcing agreement.

Claude Desktop (macOS/Windows) and Claude Code; Claude Code cloud sessions with a one-time setup — not the browser or mobile chat (where it runs)
Your own OpenAI and Gemini keys — no server, no account with us
One-time purchase — no subscription, 256 automated tests

Exploded view of Kirat Five stacked layers, each drawn with its function: the tool surface with nine tools Claude calls, seven paid and two free; the vote engine turning three positions into one verdict; the budget guard with its reservation threshold; failure handling with an interrupted path and a retry route; and the background waiting room queue. 01 Tool surface Nine tools Claude calls 02 Vote engine Majority, tie-break, round cap 03 Budget guard Reserves worst case, daily cap 04 Failure handling Breaker, per-provider timeouts 05 Waiting room Long runs return a ticket FIG. 1 — EXPLODED VIEW, ALL PARTS INCLUDED
01 — The problem

One model, one blind spot.

Self-review flatters

A model checking its own work finds itself convincing. A second pass by the same model is not an independent check.

More rounds aren't the fix

Kirat caps debate at two rounds, in code, not in a prompt. A model can't talk its way past the limit. If there is still no majority, you are told so.

Different families fail differently

Kirat puts Claude, ChatGPT and Gemini on the same question and shows you the split — including who disagreed, and why.

02 — How it works

Three positions. One vote. Every objection kept.

Fig. 2.1

Independent positions

ChatGPT and Gemini each take a position without seeing the others. Claude submits its own position as the third voter. No anchoring, no consensus theater.

Fig. 2.2

One recorded vote

A two-thirds majority decides. If members drop out and the rest split, a designated domain owner breaks the tie. With no majority, the result says needs_human. Dissent comes back with the result.

Fig. 2.3

Built to survive the APIs

Budget guard, two-round cap, circuit breaker, per-provider timeouts derived from measured throughput, background tickets for long runs. All in code, not in prompts.

You ask in plain language. Claude makes the call:

// a real call and a real answer — nothing staged
kirat_vote({
  question: "Cap the coupled effort default, or leave it at maximum?",
  options: ["cap at high", "decouple", "leave as is"],
  ownPosition: { position: "cap at high", reasoning: "…", confidence: 72 }
})
→ outcome:       "completed"
  decision:      "cap at high"
  decisionPath:  "unanimous"
  rounds:        1
  votes:         openai 94, gemini 92,
                 claude 72
  cost:          $0.021

Other outcomes: needs_human (no majority — you decide), domain_decision, limited, budget_exhausted. Confidence values are each model's own self-report.

Fig. 2.4 — Parts list

Nine tools Claude calls

7 paid · 2 free
Pos.ToolWhat it doesCost
01kirat_voteDecision by vote: each member takes a position, then a two-thirds majority, the domain owner, or needs_human.paid
02kirat_reviewCode review. Every finding is verified by the other model family.paid
03kirat_createCritique your draft, let a member draft, or rank short variants.paid
04kirat_brainstormDivergent ideas in three tracks — within brief, neighbor, rule breaker — ranked anonymously.paid
05kirat_decideDelegated decision for reversible work choices, with veto and a daily limit.paid
06kirat_askAsk exactly one member. No council.paid
07kirat_imageImage generation by both providers, rated by an anonymous jury.paid
08kirat_resultFetch background jobs and recent results.free
09kirat_statusBudget, spend, available members, settings.free
Paid tools use your OpenAI and Google keys; you pay the providers directly. kirat_image and image input work with files on your computer, so they suit Claude Code best.
02b — Getting started

Two keys, one install, one question.

Kirat is not a service you sign up for. It runs on your computer (or in your own Claude Code cloud environment), inside Claude, with your own API keys. There is no Kirat server and no account with us. Everything you give Kirat goes directly to OpenAI and Google, under your accounts — from your computer, or in Claude Code cloud sessions from your own cloud environment through Anthropic's network proxy for that environment. We never see your keys or your questions.

Step 1 · the slow part

Two API keys

One OpenAI API key and one Google Gemini API key, both with billing enabled. What takes time here is the providers' signup and billing forms. A separate provider project with a spending limit is a good idea.

Already have both keys? Go to step 2.

Step 2

Install

Claude Desktop: unzip the download. Open Settings → Extensions → Advanced settings → Install Extension… and pick the .mcpb file. Enter both keys in the dialog. Desktop ships its own Node, so there is nothing else to install.

Claude Code: unzip the download and move the extracted kirat folder into your home folder, so that ~/kirat/claude-code exists. Then run the commands below. Needs Node.js 20 or later.

Claude Code cloud sessions: a one-time setup of your cloud environment, with limits — see below.

Step 3

Ask

Check the install: Use the Kirat extension and call kirat_status.

Then ask a real question: Ask the Kirat council: Postgres or SQLite? Give your own position too.

# in Claude Code, once ~/kirat/claude-code exists
/plugin marketplace add ~/kirat/claude-code
/plugin install kirat@kirat
# enter both keys when asked; to change them later:
/plugin configure kirat@kirat

Claude Desktop will warn that the extension is not verified by Anthropic. That warning is expected for every extension installed from a file — see the FAQ.

Fig. 2.5 — Where it runs

Check this before you buy.

Kirat is a program, not a service. It works only where Claude runs tools on a machine that has Kirat installed: your computer, a remote machine over SSH, or a Claude Code cloud environment you set up once.

Works in

  • Claude Desktop chats on macOS and Windows Uses the .mcpb extension.
  • Claude Code in a terminal or VS Code Uses the Claude Code plugin. Needs Node.js 20 or later; installing it needs the claude command-line tool once.
  • Local sessions in Claude Desktop's Code tab Also the Claude Code plugin. The .mcpb extension is made for chats, not for Code tab sessions.
  • SSH sessions The plugin, installed on the remote machine.
  • Claude Code cloud sessions — limited, with a one-time cloud environment setup Code tab cloud sessions, Claude Code on the web or in the mobile app. Once per cloud environment:
    1. Paste the block from the download (cloud/setup.sh) at the top of the environment's setup script.
    2. Add your two keys as environment variables. We recommend the names KIRAT_OPENAI_API_KEY and KIRAT_GEMINI_API_KEY: they don't collide with a project's own OPENAI_API_KEY. Kirat also accepts OPENAI_API_KEY and GEMINI_API_KEY.
    3. Network access: if it is Full, there is nothing to change. Otherwise set it to Custom (in newer apps: Limited) with the package-manager default list, plus api.openai.com and the Kirat download host.
    Read the cloud limits below first.

Does not work in

  • Chat in the browser (claude.ai)
  • Chat in the Claude mobile apps Claude Code in the mobile app runs as a cloud session; that works with the cloud setup.
  • Cowork tasks that run in the cloud
  • Networks on your own computer that require an HTTP proxy Claude Code cloud environments work.
  • Organizations that restrict Desktop extensions to an allowlist Manual installs are blocked; ask your admin.

Cloud limits — check before you buy

  • Everyone who uses the environment can read its environment variables — including your two keys. Don't share the environment with people who should not use them.
  • The daily budget counts per session. Every cloud session starts fresh, so Kirat's daily budget counts per session, not across all your sessions that day. Set spending limits at OpenAI and Google: in the cloud, they are your real ceiling.
  • Background jobs and recent results end with the session. They are lost when the session's machine ends.
  • Two hosts to allow. Besides api.openai.com, the environment's network access must allow the Kirat download host (Gemini is covered by the default list).
  • A failed setup can stay cached. If the setup fails, the session still starts, just without Kirat — and the failed state can stay cached for new sessions until you edit the setup script (any change makes new sessions run it again).

Why the extension never reaches a cloud session: cloud sessions run on Anthropic's servers, in a cloud environment, and cannot reach a program on your computer — even if Claude Desktop lists Kirat as switched on under "+ → Connectors" in such a session. A cloud session has Kirat only if its cloud environment has the Kirat setup.

Which kind of Code tab session is it? The environment picker in the prompt box shows it: Local, SSH, WSL or the name of a cloud environment. Local and SSH sessions use the plugin; a cloud environment needs the cloud setup.

Not tested: WSL sessions and local Cowork tasks.

This box exists because the council asked for it. When it voted on 8 October 2026 to ship Kirat as a desktop extension, one of its conditions was that these limits be clearly visible before purchase. See the decision. When it later voted to support Claude Code cloud sessions, it set the same condition for the cloud limits.

03 — Evidence

Keep the receipts.

Anyone can claim a council works. These are real council sessions about Kirat itself, measurements from production runs, and the failures that changed the design.

Historic decision, August 2026. This vote was about the earlier plan: selling Kirat as a build manual. That plan later changed, and the dissent below shaped what came next.

"Should we sell the Kirat build manual — and if so, how?"
2026-08-24 · ROUND 1 OF 2 · OUTCOME: MAJORITY, NOT UNANIMOUS · $0.033
gemini-3.6-flashconfidence 85
For: hybrid — free core, paid operations tierWithout an existing audience a paywalled launch fails on distribution. The defensible substance isn't the core code, it's the operational experience.
claude (third voter)confidence 65
For: hybrid — free core, paid operations tierThe one proven success factor we lack is an audience; the one defensible asset is the operations layer. The free core builds the first, the paid tier sells the second.
gpt-5.6confidence 88
Against: don't sell it at allTwo to four weeks plus ongoing maintenance is a poor use of time without a developer audience; free alternatives already cover the visible core. Even the base case assumes an uncertain launch and continuous marketing.Dissent, recorded

One member voted against selling the product at all. Its reasoning stayed on the record, and the dissent shaped what came next: Kirat is now a ready-to-install extension, not a build manual. That is the point of a council — you get the objection, not just the verdict.

04 — Bill of materials

One purchase. Both formats.

No subscription, no seats, no account with us. Kirat runs on your computer or in your own cloud environment; you rent no service from us.

Blueprint
$49
Documents only — for building or adapting your own council server with a coding agent. Not needed to use Kirat.
  • 01The specification: structured requirements for the tools
  • 02The architecture decisions, with the reasoning behind each
  • 03The acceptance checklist an agent can verify itself against
  • 04The benchmark data behind the numbers on this site

No code, no installable extension.

Get the Blueprint

One-time purchase · Payment via Lemon Squeezy (merchant of record), VAT handled at checkout · Refunds: see Terms

API usage is paid to OpenAI and Google directly, under your accounts — $0.02–$0.15 per council decision in our measurements.

Kirat is not for you if…

  • —you use Claude only as a chat in the browser or on your phone. Kirat runs in Claude Desktop (macOS/Windows) and Claude Code, and in Claude Code cloud sessions with a one-time setup — not in those chats.
  • —you want SaaS with a support hotline.
  • —you don't want API accounts and billing at two providers.
  • —you make a handful of decisions a month. Two browser tabs are free and serve you just as well.
  • —you expect three models to cost like one. Council runs use real API tokens — $0.02 to $0.15 per decision in our measurements.
  • —you want an answer that sounds certain. A council's job is to show you the split, and sometimes the split is the answer.
  • —your data may not go to OpenAI or Google. Everything you give Kirat goes to both, under your accounts and their terms.
  • —your organization blocks extensions or requires an HTTP proxy.

You don't have to be a developer.

If you can install a Claude extension and create two API keys, you can use Kirat. You ask in plain language; Claude calls the tools.

As for what agents can build: Kirat itself is 11,351 lines of TypeScript, source and tests, in 38 commits — every commit written by an AI agent (Claude), none by hand.

05 — Questions

Before you buy.

How is this different from llm-council or PAL MCP?

Look at both first. llm-council is an open-source web app; its author describes it as unsupported by design. PAL MCP is a free, open-source MCP server you install via the terminal; it supports many providers and has its own consensus tool. Check their current state. If one of them covers what you need, use it.

Kirat's difference is the package: it installs through Claude Desktop's own extension dialog with your keys in the operating system's secure storage, and it brings a budget guard with a daily ceiling, a two-round cap, a domain tie-break, background tickets, failure handling, 256 tests, English result fields, and plain-language use.

Do I need to be a developer?

No. If you can install a Claude extension and create two API keys, you can use Kirat. You ask Claude in plain language — Ask the Kirat council: Postgres or SQLite? Give your own position too. — and Claude calls the tools.

What do I need?

Claude Desktop on macOS or Windows. It ships its own Node, so you install nothing else. Or Claude Code with Node.js 20 or later. For Claude Code cloud sessions, a one-time setup of your cloud environment (see below).

Plus one OpenAI API key and one Google Gemini API key, both with billing enabled. Kirat also runs with one key: the council then has one external member, and every result names the missing key.

What does it cost to run, and what stops a runaway bill?

You pay OpenAI and Google directly for what you use. In our measurements one council decision costs $0.02–$0.15, depending on effort tier and input size, and takes 8 seconds to 3 minutes. Image generation is about $0.05–$0.15 per call.

The budget guard reserves the worst-case cost before every call and blocks calls that could exceed your daily budget — $5 per UTC day by default, adjustable. It is best-effort, so also set spending limits at the providers. kirat_status shows budget and spend, and costs nothing.

Where do my data and keys go?

Your data: everything you give Kirat (questions, context, code, images) goes directly to OpenAI and Google, under your accounts and their terms — from your computer, or in Claude Code cloud sessions from your own cloud environment through Anthropic's network proxy for that environment. There is no Kirat server, no account with us and no telemetry. We never see your keys or your data.

Your keys: you enter them in Claude's own install or settings dialog. Claude Desktop stores them in your operating system's secure storage (macOS Keychain, Windows Credential Manager). Claude Code stores them in the macOS Keychain; on Windows and Linux in ~/.claude/.credentials.json, readable only by your user. We recommend a separate provider project with a spending limit.

In Claude Code cloud sessions: Kirat runs in your cloud environment, and the keys are environment variables of that environment, readable by everyone who uses it.

On your computer: Kirat keeps a folder .kirat in your home folder with the daily cost counter, the cost log, the last 20 results (they contain your questions and answers), the log of delegated decisions and generated images. You can delete it any time. All Kirat sessions on the computer share it, Desktop and Code.

Where does it work? Desktop chats, the Code tab, the browser, my phone, the cloud?

In short: Claude Desktop (macOS/Windows) and Claude Code; Claude Code cloud sessions with a one-time setup — not the browser or mobile chat. Kirat is a program, not a service. It works only where Claude runs tools on a machine that has Kirat installed:

  • Claude Desktop chats on macOS and Windows — with the .mcpb extension.
  • Claude Code in a terminal or VS Code, and local sessions in Claude Desktop's Code tab — with the Claude Code plugin. It needs Node.js 20 or later, and installing it needs the claude command-line tool once. The .mcpb extension is made for chats, not for Code tab sessions.
  • SSH sessions — with the plugin installed on the remote machine.
  • Claude Code cloud sessions (Code tab cloud sessions, Claude Code on the web or in the mobile app) — with a one-time setup of your cloud environment, and with limits (see the next question).

Not supported: chat in the browser (claude.ai) or in the mobile apps, and Cowork tasks that run in the cloud. The extension on your computer never reaches a cloud session, even if Claude Desktop lists Kirat as switched on under "+ → Connectors" there. To see which kind of Code tab session you are in, check the environment picker in the prompt box: Local, SSH, WSL or the name of a cloud environment.

Not tested: WSL sessions and local Cowork tasks.

Networks on your own computer that require an HTTP proxy are not supported; Claude Code cloud environments work. If your organization restricts Desktop extensions to an allowlist, manual installs are blocked; ask your admin.

How does Kirat work in Claude Code cloud sessions, and what are the limits?

Cloud sessions — Code tab cloud sessions, Claude Code on the web or in the mobile app — run on Anthropic's servers in a cloud environment. The extension on your computer can't reach them. Instead, you set up the cloud environment once:

  • paste the block from the download (cloud/setup.sh) at the top of the environment's setup script;
  • add your two keys as environment variables — we recommend the names KIRAT_OPENAI_API_KEY and KIRAT_GEMINI_API_KEY, which don't collide with a project's own OPENAI_API_KEY (Kirat also accepts OPENAI_API_KEY and GEMINI_API_KEY);
  • network access: if it is Full, there is nothing to change; otherwise set it to Custom (in newer apps: Limited) with the package-manager default list, plus api.openai.com and the Kirat download host.

The script downloads exactly your version of Kirat, verifies its SHA-256 checksum and installs it. It is a one-time setup, not one click. We tested it in a cloud container.

The limits: everyone who uses the environment can read its environment variables, including your keys. Every cloud session starts fresh, so Kirat's daily budget counts per session — set spending limits at OpenAI and Google; in the cloud they are your real ceiling. Background jobs and recent results end with the session. Besides api.openai.com, the environment's network access must allow the Kirat download host (Gemini is covered by the default list). If the setup fails, the session still starts, just without Kirat — and the failed state can stay cached for new sessions until you edit the setup script (any change makes new sessions run it again).

The download address in the setup script is part of your purchase, like the ZIP; don't publish it. The license covers your own cloud environments. A cloud environment shared with others needs a license for each person.

Which models does it use? What if a provider retires one?

By default gpt-5.6 from OpenAI and gemini-3.6-flash from Google, with Claude as the third voter.

Model names and prices are settings. If a provider retires a model, you enter the new name and its two prices. No update needed.

Claude Desktop says the extension is not verified by Anthropic. Is that a problem?

That warning is expected. Claude Desktop shows it for extensions installed from a file, and Kirat is installed from a file — it is not verified or signed by Anthropic.

How do updates work?

In Claude Desktop, install the new .mcpb the same way as the first one. Your keys and settings are kept.

Compatibility updates are free when possible, but there is no guarantee. Larger new versions may be sold separately.

Do I get support?

For purchase, download and install problems: yes, by email — contact details are in the Imprint. There is no implementation consulting and no guaranteed response time.

What does the license allow?

One person, on any number of your own devices and in your own cloud environments. A cloud environment shared with others needs a license for each person. No resale and no redistribution. Kirat is proprietary software, not open source.

Using what the council produces in your own work, including commercial work, is fine. The full terms are in the Terms.

What is the Blueprint for? Do I need it?

You don't need it to use Kirat. The Blueprint is for people who want to build or adapt their own council server with a coding agent.

It is documents only — no code, no installable extension: the specification (structured requirements for the tools), the architecture decisions with the reasoning behind each, the acceptance checklist an agent can verify itself against, and the benchmark data behind the numbers on this site. There is no bundle price.

Kirat — $99 for the first 50 buyers (then $149) Get Kirat