Modes
A mode is a named, per-send preset. It bundles three things — which model synthesizes the answer (the primary), which models weigh in (the panel), and an optional system-prompt addition — so you can switch between recipes in one click instead of re-pointing your primary and toggling providers each time. Modes tune the consensus run; they never bypass it.
What a mode bundles
- Primary — the provider, and optionally a pinned model ID, that synthesizes the final reply. A valid mode’s primary overrides both your global primary and the per-window model pick while it’s active.
- Panel — which peers fan out. A mode’s panel is either Inherit user defaults (honor your global fan-out opt-outs) or an explicit set of providers. An explicit panel overrides your global opt-outs — only the named providers fan out, even ones you’ve opted out globally.
- System-prompt append — optional text appended after your project context on every send the mode runs. It adds to the system prompt; it does not replace project context. (To replace the system prompt for a specific model, use that model’s advanced drawer under Settings → Providers instead.)
The built-in #quick mode
Polycode ships one built-in mode, #quick — “Cheap consensus across small
models — Haiku, Gemini Flash, GPT-5 Nano. Faster and cheaper than full
consensus, still synthesized.” It pins its panel to the small-model variant of
each provider (Claude Haiku, Gemini Flash, GPT-5 Nano) and synthesizes through
Haiku, so you get a real multi-model cross-check at a fraction of the cost and
latency of your full panel. #quick is editable — you can change its
description, primary, panel, and system-prompt append — but its name is reserved
and it can’t be deleted.
Creating, editing, and deleting modes
Open Settings → Modes — “Bundle a primary, panel, and system prompt for repeated kinds of questions.”
Click + New mode to open the editor:
- Name — lowercase ASCII letters, digits, and dashes; no spaces, no
leading/trailing dash. (It’s shown with a leading
#, e.g.#review. The#is display-only — the stored name has none.) - Description — a short hint shown in the composer picker.
- Primary — pick a provider, and optionally a specific model (or leave it on Provider default).
- Panel — leave Inherit user defaults on to use your global fan-out set, or turn it off to check exactly the providers this mode should fan out to.
- System prompt append — optional text added after your project context.
Existing modes have Edit and Delete buttons (the built-in #quick shows
a disabled Delete). Polycode keeps a soft cap of ten user modes — saving an
eleventh just warns “Lots of modes can get hard to remember; consider
consolidating.”; it never blocks you.
Using a mode for a send
Modes are chosen from the mode pill in the composer, the dropdown immediately to the right of the model picker. It defaults to No mode; pick any mode to apply it to your next send. The choice is per-window and survives an app restart for restored windows — a fresh window starts at No mode.
The typed
#nameaccelerator isn’t available yet — the composer pill is the way to select a mode today.
The single-model fast path
Set a mode’s explicit panel to just its primary and the run has a single
participant, so Polycode skips synthesis entirely and shows you that one model’s
raw answer — no consensus framing, no synthesis pass to pay for. It’s the
sanctioned way to get a single model’s unmediated reply while keeping your full
panel one click away. (For a one-off without a saved mode, type !! in the
composer to target a model for a single send — see
composing prompts.)
When a mode can’t run
A mode is resolved against your currently configured providers each time it’s shown, so it can land in one of three states:
- Valid — applies fully.
- Partial (a yellow chip) — its explicit panel names some providers you haven’t configured. The mode still fires on the providers that are configured; the missing ones are silently dropped from that fan-out.
- Invalid (a red chip) — its primary provider isn’t configured, its pinned model doesn’t resolve, or every panel entry is unconfigured. Selecting an invalid mode and sending posts a warning toast (“Mode ‘#name’ is unavailable.”) and Polycode falls back to all defaults — your normal primary, your normal fan-out set, and no system-prompt append. Nothing from the broken mode leaks into the send.
What’s next
- Fan-out and consensus — what the primary and panel a mode sets actually do during a run.
- Composing prompts — the
!!one-shot model target, the@file mention, and attachments. - Setting up providers — configure the providers and per-model overrides a mode draws on.