Choirhelp

How to use Choir

Ask one question to many AI models at once, watch them stream side by side, see where they agree and where they split, and carry the best answers into your next question. Then make art across several image models with the same prompt. This guide walks through every path, with screenshots from the live site.

StartWhat Choir is

Choir has two workspaces, both at /swirl:

Model keys live on the server and never reach your browser. Which services receive your question, its context and your files is spelled out in Where your data goes; in short, the models you pick, plus a judge and, for a few helper actions, a rewriting model. Choir is also a free desktop app for macOS that runs with your own API keys; signed-in members can download it from the home page.

Try it without an account: open an example session, a real run that ends in a follow-up built from carried answers. Read the answers, open Metrics, see what was carried.

StartGetting in

The home page explains Choir and links to the Swirl, the Collider and (for members) the desktop app downloads.

The home page. “Open the Swirl” goes straight in; the Download section lists the macOS builds for members.
The home page. “Open the Swirl” goes straight in; the Download section lists the macOS builds for members.

Create an account

Accounts are invite-only while Choir is in testing. Each invite carries starting credits.

  1. Open /swirl and press Sign in in the top bar.
  2. Choose Create account, enter your email, a password of 10 or more characters, and the invite code you were given.
  3. You're signed in. Your name and balance appear in the top bar; click it for your account.
The sign-in dialog. “Use the site passcode instead” is for the operator.
The sign-in dialog. “Use the site passcode instead” is for the operator.
Operator only: the site passcode works in place of an account and is not billed. The very first account is created at /admin with the passcode as its invite code, and becomes the admin.

SwirlThe screen

The Swirl before the first question.
The Swirl before the first question.

SwirlAsk a question

  1. Pick who answers. Choose a profile from the Profile menu (Frontier panel, Quick & cheap, Red team, Careful reasoning, Fact check, Claude ladder, Open weights, Three minds one model, Temperature sweep, or your own), or toggle models in the Ask row. More models shows every model with a key; up to 24 can answer at once.
  2. Type your question in the box. The Ask button shows what it will likely cost (“≈ 4 cr”: medium-length answers plus the judge) and what it holds while it runs (the worst case: long answers and a long judgment), both in credits for an account, or as dollars at cost with the passcode.
  3. Press Ask (or Enter; Shift+Enter for a new line).
The composer: the context tray, the question, the profile row (with Inspect, Model wizard, Save as profile) and the Ask row. Lit dots are the models that will answer.
The composer: the context tray, the question, the profile row (with Inspect, Model wizard, Save as profile) and the Ask row. Lit dots are the models that will answer.

Watching it stream

Each model gets a lane, and left to right is time:

Mid-stream. The judge starts once every model has finished.
Mid-stream. The judge starts once every model has finished.

When it's judged

The judge (Claude Sonnet by default, falling back to the next provider if it's busy) reads every answer and then:

Done: five models split two ways on “Is a hot dog a sandwich?” Four said yes, one said no; the synthesis says why, and still names the dissent.
Done: five models split two ways on “Is a hot dog a sandwich?” Four said yes, one said no; the synthesis says why, and still names the dissent.
A model failed? Its lane is cut with an ✗ and an error label (for example a provider's quota). The others carry on, and you're not charged for the failed one.

SwirlRead the answers

The answers panel lists the Synthesis first, then one card per model, best score first. Each card shows:

The answers panel. The carry row on top picks answers for the next question; the group buttons (“Yes, sandwich (4)”) pick a whole corral.
The answers panel. The carry row on top picks answers for the next question; the group buttons (“Yes, sandwich (4)”) pick a whole corral.

The reader: flip and compare

Read opens the full answer. Use ← → (or the arrows) to flip through every answer in the turn. Compare shows two answers side by side; pick the second from its menu.

The reader on the synthesis: 1 of 6, with “Carry forward” and “Carry only this”.
The reader on the synthesis: 1 of 6, with “Carry forward” and “Carry only this”.
Compare mode: two answers side by side.
Compare mode: two answers side by side.

Copy run JSON (top of the panel) copies the turn in the Choir app's run format, which the Choir CLI (choir runs import-folder) and the choir-reports scripts read as-is.

SwirlMetrics

The Metrics tab measures the turn:

The Metrics tab for the hot dog question.
The Metrics tab: who judged, the cheapest answer that clears 7/10, and each group with its members, how it differs and a quote that shows the shared conclusion.
Metrics for the example session, with the What these numbers mean key open.
“What these numbers mean”, open: what the judge score, ✓/✗, groups, alignment and cost each do and don't tell you.
Further down: speed, output tokens and cost per model.
Further down: speed, output tokens and cost per model.

Costs use public list prices (from OpenRouter's catalog); a provider's own price can differ slightly. In a panel of perspectives (voices with assigned roles, like the skeptic and the newcomer), each voice is scored against its own assignment, Metrics says so at the top, and the cheapest route is skipped: comparing a skeptic's price with an optimist's says nothing about the models.

SwirlCarry forward and fork

Two choices shape the next question, and they are separate: which earlier answers ride along as context (the Carry as context row and the cards), and which models answer (the Who answers row at the bottom). You can carry a skeptical answer into a round with different models, or carry two conflicting answers back to the same panel and ask what evidence would settle it.

Nothing carries by default: a question with an empty context tray starts a fresh row on the map. To continue from earlier answers, pick them first:

Carried answers appear as chips in the context tray and ride along as context; models you didn't carry from are cut on the map.

The context tray with four carried answers (the “Yes” group). The next question builds on them.
The context tray with four carried answers (the “Yes” group). The next question builds on them.
The example session: a 4-to-1 split on moving sessions from Redis to Postgres, and a follow-up built from the carried minority answer.
The example session: four models said keep Redis, Claude Opus alone said yes with mitigations, and the judge scored that lone dissent highest. Carrying it into a follow-up (“what would we measure to settle it?”) produced a plan none of the majority answers would have.

SwirlMap controls

The same session in Bloom view.
The same session in Bloom view.

SwirlProfiles and the model wizard

A profile is a saved panel: which models answer, a brief they all get (Plain, Careful reasoning, Red team, Evidence first, Pragmatist), optional shared instructions, and a judge. Profiles are kept in your browser and, when you're signed in, synced to your account.

Inspect a profile

Inspect shows every voice in the selected profile: the model, its price, context window, image support, its own instructions and frame, and an estimate of what a question costs.

Inspecting “Three minds, one model”: Claude Sonnet three times, as an optimist, a skeptic hearing it from an investor, and a newcomer hearing it from a 12-year-old. “Copy and edit” starts a profile of your own from it.
Inspecting “Three minds, one model”: Claude Sonnet three times, as an optimist, a skeptic hearing it from an investor, and a newcomer hearing it from a 12-year-old. “Copy and edit” starts a profile of your own from it.

The model wizard

Model wizard builds a profile in five steps.

  1. Start: from a built-in profile, the models on now, or blank.
Step 1: where to start.
Step 1: where to start.
  1. Models: search by name, id, provider or what a model is good at; filter by provider, Sees images, ≤ $1/M out, Reasoning or In runset; sort by price or context window. Each row shows list prices per million tokens, an estimated cost per question, context, image support and a one-line description. + Add puts a model in your runset; + Again adds another copy of it.
Step 2: GPT-5.5 added twice and DeepSeek once, sorted cheapest first. The runset bar on top keeps a running cost.
Step 2: GPT-5.5 added twice and DeepSeek once, sorted cheapest first. The runset bar on top keeps a running cost.
  1. Runset: give each voice its own setup.
    • Name: how it appears on the map and cards.
    • Running instructions: extra system instructions just for this voice (presets: Optimist, Skeptic, Domain expert, Newcomer-friendly, Devil's advocate, Terse, Step by step).
    • Frame: how the question reaches it, as a template where {prompt} stands for your question (presets: As written, Skeptical investor, Curious 12-year-old, Exam question, Hostile reviewer, In Spanish).
    • Temperature: tick to set one (some reasoning models ignore it).
    • Reorder, Duplicate or Remove. Quick build adds an optimist / skeptic / newcomer trio, or a temperature sweep, from any one model.
Step 3: the second GPT-5.5 copy is a skeptic who hears the question from an investor; DeepSeek runs at temperature 1.2.
Step 3: the second GPT-5.5 copy is a skeptic who hears the question from an investor; DeepSeek runs at temperature 1.2.
  1. Brief: the shared brief, shared custom instructions, and the judge.
Step 4: brief and judge.
Step 4: brief and judge.
  1. Review: name it, describe it, check the table of voices and the cost per question (judge included), and Save profile.
Step 5: review and save.
Step 5: review and save.
After saving, the profile is selected and its copies appear in the Ask row as their own voices (“copy of GPT-5.5”).
After saving, the profile is selected and its copies appear in the Ask row as their own voices (“copy of GPT-5.5”).

A runset of voices with different instructions or frames is a panel of perspectives, not a model comparison: the judge is shown each voice's assignment and scores it against that, so a skeptic isn't marked down for being skeptical. To compare models, give every copy the same setup.

Change the selected models by hand and the profile shows modified; Save as profile keeps that as a new one. Your own profiles have Edit, and the last wizard step has Delete this profile.

A model that isn't listed

+ Custom model in the Ask row takes any model id on a provider that has a key, for models newer than the list. If the provider doesn't know the id, that lane says so.

Adding a custom model id in the Who answers row.
Adding a custom model id. In the Who answers row, “Only aligned models” asks just the models whose last answers were 80%+ aligned, and “All models” turns every model on. These pick who answers, not what is carried.

SwirlAttach files

Attach files (or drop files on the composer, or paste an image into the question box) adds files to the next question only.

A Markdown file and an image attached. The tray says which picked models can't see images.
A Markdown file and an image attached. The tray says which picked models can't see images.

SwirlHistory and export

Every finished question saves the whole session in your browser. History opens the list:

The History drawer.
The History drawer.
Your history lives in this browser. Clearing site data deletes it; export anything you want to keep.

ColliderOverview

Open the Collider tab (or go to /swirl#collider). At the top, choose how to start:

Renders land on the right, newest first.

The Collider before anything is added.
The Collider starting from a prompt: the prompt and the image models come first.

The method comes from earlier projects: keep the subject, the style and the cast apart; attach reference images rather than describe a style in words; and iterate by starring near-misses and leaving notes.

Collider1 · Inputs

Drop, paste or pick images: a photo, a sketch, a style you like. Click ★ on the ones to send as references when rendering; × removes one. Images are redrawn in your browser first, which drops their metadata.

One input image, starred as a reference.
One input image, starred as a reference.

Collider2 · Break it down

Pick vision models (Claude Sonnet, GPT-5.5 and Grok 4.7 to start) and press Break down the inputs. Each model reads the images and returns their prompt mechanics:

Three models read the same image. Each sees it a little differently; take the best field from each.
Three models read the same image. Each sees it a little differently; take the best field from each.

On each model's column:

One model's breakdown, with its Use buttons.
One model's breakdown, with its Use buttons.

Collider3 · Bibles

A bible is a reusable sheet that wraps every prompt while it's ticked:

Each bible can hold up to four reference images, which are sent with renders while it's active. Attaching plates keeps a style far better than describing it.

Editing a style bible made from a breakdown, with the input image as its reference plate.
Editing a style bible made from a breakdown, with the input image as its reference plate.
Two active bibles: a style and a character. Export and Import move them between browsers.
Two active bibles: a style and a character. Export and Import move them between browsers.

Collider4 · Prompt

The slots (subject, style, palette, composition, lighting, setting, avoid) and your active bibles are assembled into one prompt, in this order:

  1. style
  2. palette
  3. composition and lighting
  4. lock notes
  5. recurring cast
  6. setting
  7. subject
  8. avoid
  9. the no-lettering block: models draw text badly, so it's on unless you want lettering.
The slots and the assembled prompt.
The slots and the assembled prompt.

Collider5 · Generate

Pick image models, a shape (1:1, 3:2, 2:3, 16:9, 9:16, 4:3, 3:4) and, for GPT Image, a quality. Leave Send reference images ticked to include up to four references: starred renders first, then starred inputs, then active bibles' plates. Thumbnails under the checkbox show exactly which images go, numbered, and which models take only #1, so two renders that differ because they got different references are easy to spot. The button shows the estimated cost.

Three models picked, 3:2, GPT Image at low quality. Grok Imagine takes only the first reference.
Three models picked, 3:2, GPT Image at low quality. Grok Imagine takes only the first reference.
ModelGood forAbout per imageReferences
GPT Image 2Long prompts, layout, lettering; quality low / medium / high$0.006 / $0.05 / $0.20up to 4
Grok ImagineFast and cheap; comics, sketch, crayon$0.021
Grok Imagine QualitySlower, more detailed$0.051
Grok Imagine 2.0The newest Imagine model$0.061
Gemini 3.1 Flash ImageKeeping a character or house style from references$0.07up to 4
Gemini 3.1 Flash Lite ImageThe cheap Gemini$0.035up to 4
Gemini 3 Pro ImageThe most careful Gemini; slower$0.14up to 4
Gemini 2.5 Flash ImageThe original “nano banana”$0.04up to 4

These are provider prices; signed-in accounts pay them in credits at the site's rate (see Credits). Each render is charged what the provider actually billed; a failed or refused render costs nothing.

One prompt, three models, side by side, each with its exact cost and time.
One prompt, three models, side by side, each with its exact cost and time.
A render row: the prompt it used, then the results. “Use this prompt” puts that prompt back in step 4.
A render row: the prompt it used, then the results. “Use this prompt” puts that prompt back in step 4.

ColliderIterate

A render opened large.
A render opened large.
A note on a render: re-roll this model with the render as a reference.
A note on a render: re-roll this model with the render as a reference.
The re-roll: the note became part of the prompt (dusk, fireflies) and the scene kept its composition.
The re-roll: the note became part of the prompt (dusk, fireflies) and the scene kept its composition.

ColliderExport and import

The renders toolbar.
The renders toolbar.
Nothing is stored on the server. Renders, bibles and inputs live in this browser; export what you want to keep.

ColliderTips

AccountCredits and buying

A credit is the unit Choir charges in: one credit pays for 1¢ of model use at public list price, and models are charged at twice list price (the hosted version's margin; the Mac app with your own keys has none). Charges happen per answer, judge pass and image, as they finish. Click your name in the top bar for your balance, packs and recent activity.

The account dialog: balance, packs and the ledger.
The account dialog: balance, packs and the ledger.

Reservations

Before a question starts, Choir reserves its worst case: every model reading your prompt, context and files and writing a long answer, plus the judge. The reservation is released when the answers settle, and you're charged only what was used. If you don't have enough for the reservation, nothing is sent and the buy dialog says exactly how much is needed. Images reserve their worst case the same way.

Not enough credit for the reservation: the buy dialog opens with the numbers.
Not enough credit for the reservation: the buy dialog opens with the numbers.

Buying a pack

  1. Pick a pack. What a credit costs you depends on the pack: Taste $5 for 400 credits (1.25¢ each), Regular $10 for 1,000 (1¢ each) and Value $25 for 3,000 (about 0.83¢ each, 20% more credits per dollar).
  2. Pay on Stripe's checkout page.
  3. You come back to the Swirl and the credits are added; Stripe's confirmation also arrives separately, so they're added even if you close the tab.

A refund removes the refunded credits. The question counts on each pack are rough: a typical question on the Frontier panel costs a few credits.

AccountWhere your data goes

Everything Choir sends anywhere, in one table.

WhatGoes toKept where
Your question, carried context and attached filesEach model in Who answers, through its providerYour browser's history; Choir's server passes it through and doesn't store it
The question and every answer, for judgingThe judge you picked, or automatically Claude Sonnet 5.5, then GPT-5.5, Gemini 3.5 Flash Lite, Grok 4.7 and DeepSeek Chat, in that order, until one succeeds. The judge's name is shown on every resultYour browser
Your prompt, for Apply a note, Names → visual terms and note re-rolls (Collider)A rewriting model: Claude Sonnet 5.5, or GPT-5.5 or Claude Haiku 5.5 if that's unavailableYour browser
Collider input images, for Break it downThe vision models you pick in step 2Your browser
Image prompts and reference imagesThe image models you pick (Gemini images go through OpenRouter)Your browser; the server never keeps an image
ProfilesYour account, when you're signed inYour browser and your account
Email, password (hashed), credits and chargesChoir's database; each charge names the model, not your questionYour account
Downloads of the Mac appChoir's database: which account downloaded which version, when, and from which country, so we can reach you if a build needs fixingYour account
PaymentsStripe, with your account email; Choir never sees your cardStripe
Page viewsChoir's page-view counter: path, referring page, countryThe counter (opt out below)

History, Collider renders, bibles and inputs live only in the browser you used. Signing in elsewhere won't bring them along: export them (History → Export all; Collider → Export session) and import them there.

AccountCosts, troubleshooting

What does a question cost?
It depends on the models and how long they write. A short question to the Frontier panel is a few cents at list price; Quick & cheap is a fraction of a cent. The Ask button shows the likely charge and the hold before you ask, the wizard estimates per question, and Metrics shows what each turn actually cost.
Where are my keys, history and images?
See Where your data goes: keys stay on the server; history, renders and bibles stay in your browser; profiles sync to your account.
Do you track me?
Only page views: each page load records its path, the referring page, the site and your country, with no cookies and nothing you type. To opt out, run localStorage.smsNoTrack = 1 in your browser's console on this site.
A model shows an error instead of an answer.
The provider refused, timed out or hit a limit (for example “HTTP 429: quota exceeded”). The rest of the question carries on and the failed model isn't charged. Try again later, or turn that model off.
A model said it can't see my image.
That model doesn't take images, so it was told an image was attached. The wizard's Sees images filter shows which do.
“Not enough credits for this question.”
The question's worst case is more than you have available. Buy a pack, ask fewer or cheaper models, or carry less context.
An image render failed or came back empty.
Press Try again. A refusal says so; rephrase it or run Names → visual terms. You're not charged for failures.
Can I run Choir myself?
Yes. The Choir macOS app runs the same multi-model comparisons with your own API keys, free. Members can download it from the home page.