FAQs

What is OpenCues?

OpenCues brings AI wherever you type. Just type _ and AI will fill in the blank. Anywhere. Full guide: what is OpenCues?

How do I set up OpenCues?

npm install -g opencues, then opencues install <host>. Full instructions on the OpenCues repo. Or ask AI to read it for you. Step-by-step guide: installing OpenCues.

How do I use OpenCues?

Just type _ and AI will fill in the blank. If you don’t like what AI did, Ctrl+Alt+←/→ to select the changed text, then Ctrl+Alt+↑/↓ cycles through other things it could have said, or right back to exactly what you typed. Your original text is always one cycle away.

Is OpenCues open source?

Yes, OpenCues is fully open source. The source code is public on GitHub under the Apache-2.0 License, meaning anyone can use, modify, or contribute to its development. We are trying to grow a community that files issues, submits pull requests, and extends functionality.

What is the OpenCues mission?

To explore and advance the frontier of human to AI interfaces.

Why use OpenCues?

No context switching, no copy-paste loop, sub-second inline answers, your choice of model, and per-word revertability. Full guides: why use OpenCues and what OpenCues can do.

Can I use my existing AI subscriptions with OpenCues?

Yes. Bring an API key from Cerebras, Groq, OpenAI, Anthropic, Gemini or OpenRouter, connect through your existing Claude or OpenAI subscription, or run local models via Ollama.

Do I need extra AI subscriptions to use OpenCues?

No. OpenCues works with what you already have: an existing API key, or an AI subscription you already pay for.

Where can I use OpenCues?

You can use OpenCues almost anywhere in Chrome, Claude Code, OpenCode, Gemini CLI, and in your terminal via the standalone oc-shell app. Full guide: AI in any text field.

How much does OpenCues cost?

OpenCues itself is free and open source. It plugs into whatever AI service you choose, so the only cost is your model usage with that provider (several, like Cerebras, have free tiers). More: is OpenCues free?

What about data and privacy?

OpenCues has no servers and collects nothing. Your text goes directly from your machine to the model provider you configured, on your own key or subscription. Config lives in local files, and the optional identity feature keeps personal values on your machine by default. More: is OpenCues safe?

Concepts#

What does the underscore trick do?

The _ you saw in a demo is OpenCues: type an underscore where you want an answer and the system reads the surrounding text and fills it in place, in any host. Full guide: the underscore trick.

What is inline AI?

Assistance that lives inside the text you're writing rather than in a separate chat panel: answers, rewrites, and suggestions landing in place, before you submit. Full guide: what is inline AI?

What is inline prompting?

Requesting AI help by placing a _ in your text: the system reads the context and responds in place, inverting autocomplete. Full guide: inline prompting.

What is prompt steering?

Shaping a prompt while it is being written instead of after submission: cues steer the user, and the _ lets the user steer the system, inline. Full guide: prompt steering.

Cues vs blanks: what is the difference?

Cues flow system-to-user: dimmed words with alternatives as you type. Blanks flow user-to-system: you place a _ to request a fill. Opposite directions. Full guide: cues vs blanks.

What is an inline cue?

A system-to-user signal layered onto the text you are typing: a word dims to say alternatives exist, and navigation surfaces the tip. No popup. Full guide: what is an inline cue?

What is continuous onboarding?

Teaching users inside the work itself: cues that surface what a feature does while it is being used, so docs can never go stale. Full guide: continuous onboarding.

What is a HAII (Human-to-AI Interface)?

The interface layer between a human and an AI system: the harness, prompt scaffolding, and rendering that determine how much value a person extracts from a model. Full guide: what is a HAII?

What is the 3-axis framework?

An HCI evaluation lens borrowed from fighting games: start-up frames, active window duration, and end-lag measure an interface before, during, and after use. Full guide: the 3-axis framework.

What is the modality rule?

Any cue between a user and an AI system should use a different modality from the user's primary input channel: steer without blocking. Full guide: the modality rule.

Using blanks#

How do I do math in any text field?

Type the expression and a blank: 4 * 12 = _ resolves to 4 * 12 = 48. Unit conversions work the same way: 5 miles in km _. See what a blank is. Full guide: math in any text box.

How do I translate text without leaving my input?

Write your text, then translate to japanese _ and it's rewritten in place. Quick lookups work too: the word for love in japanese _. Full guide: translating inline.

How do I look up a fact while typing?

Ask and place a _: the capital of japan is _ fills in Tokyo. Only the _ itself is replaced, so the sentence you typed stays intact. The shipped dictionary and countries blanks answer definitions and country facts instantly, no key needed.

Can I control volume or brightness from a text input?

Yes. volume _ shows the live value and cycling it changes the actual system volume; brightness _ works the same. Details: controlling your system from text, the volume blank, and the brightness blank.

How do I get stock or crypto prices while typing?

Popular tickers are keyword-bound blanks: nvda _, tesla stock _, and crypto equivalents show live prices inline, with no LLM in the loop. Stock prices come from Finnhub (needs a free API key); crypto prices are keyless. Full guides: checking stocks while typing, the stocks blank, the crypto blank.

How do I check the weather from a text field?

weather london _ (or forecast, temp, temperature) returns current conditions for any city, in place. Full guide: the weather blank.

How do I look up a place or address while typing?

Type location <place> _ or address <place> _ for a one-line address, or map <place> _ for a rich card (name, hours, phone, website) - from OpenStreetMap, no API key. Full guide: look up a place while typing.

Can I pull live data like Hacker News or GitHub into my text?

Yes: hn _ fills the top Hacker News story, gh-issues owner/repo _ fills a repo's open-issue count, and is claude down _ answers from Anthropic's status page. Guides: the Hacker News blank, the gh-issues blank, the claude-status blank.

Can I save and recall snippets?

Yes: type note add fix mp4: <command> _ once, then note ffmpeg _ recalls it anywhere, ready to tweak. A deterministic snippet store in ~/.cues/NOTES.md; notes never reach an LLM. Full guide: the note blank.

Can I draft emails inline?

Yes: type draft an email to my landlord _ in the compose box and the draft lands there, signed via identity context. Rewrites, tone fixes, and grammar ride along. Full guide: drafting emails with AI, inline.

What else can I type with a blank?

Math, conversions, live data, rewrites, styling, settings, agent tasks, and identity fills. Full gallery: 50 things to type with a blank.

What happens if OpenCues can't fill my blank?

The _ simply stays in your text. There is no silent failure state: you see the gap, and you can rephrase it or delete it.

Can I use several blanks in one input?

Yes. Each _ is dispatched independently to its own source: "London weather _ is warmer than Paris weather _" binds each blank to its nearest keyword.

How do I undo what a blank did?

Navigate to the filled text with Ctrl+Alt+←/→ and cycle with Ctrl+Alt+↑/↓ to see other answers or return to your original text. Once resolved, a blank's result is locked: no other suggestion can overwrite it until you edit it yourself.

Why isn't my blank firing?

Three common causes: a keyword-bound blank only fires when its keyword leads the sentence your _ ends (mid-sentence mentions don't trigger); if blank-trigger-mode is set to spaced, the _ waits for a confirming space (so _italic_ formatting can complete); and LLM-backed blanks need a provider key configured. More: why is my blank not firing? and blank-trigger-mode.

How do I write my own blank?

A custom blank is a folder with a BLANK.md: declare trigger keywords, bind a script, a runtime class, or a static value list, and your own _ command hot-reloads into every host. Guide: write your own blank.

Cues & cycling#

How do I see alternatives for a word?

Words with alternatives appear dimmed. Ctrl+Alt+←/→ moves the selection between them; Ctrl+Alt+↑/↓ cycles the alternatives in place. Your cursor stays where you were typing. More: the keyboard model.

Can I change the shortcut keys?

Partly: the nav-keymap setting switches the modifier between Ctrl+Alt (the default) and Ctrl+Shift, for terminals that don't forward Ctrl+Alt. There's also an opt-in cursor-navigate mode where the highlight follows your cursor instead of being navigated separately. More: the keyboard model.

How do I add my own cue?

Drop a CUE.md file into ~/.cues/cues/<name>/ declaring a match: regex or keywords: list, with a prompt or a static dictionary as the body. It hot-reloads within a couple of seconds (how); no restart, no build. Guides: write your own cue and writing better cue prompts.

How do I stop OpenCues cueing certain words?

Add them to the ignore: list in CUES.md (user-level, or per project in <project>/.cues/). A project-level disable: can also switch off a whole source without deleting it. Full guide: disabling a cue; see also project config for teams and per-site scoping.

Which cue wins when several could match a word?

Each word goes to exactly one source: the highest priority: whose trigger matches, ties broken by declaration order. Catch-alls sit at low priority, so specialist cues (legal, medical) claim their words first. The shipped spelling cue is the catch-all at priority 10.

Do my choices survive editing?

Yes. Cycle state stays attached to the word, not the position, so inserting text before it doesn't reset your choice, and words you've settled aren't re-queried. Editing a word itself clears its cue and starts fresh. More: how OpenCues keeps your place.

Can OpenCues rewrite whole sentences?

Yes: sentence cues offer alternative rewrites of each full sentence, cycled in with the same keys you use for words. Off by default; one config file to add your own. Guides: sentence cues and the more-formal cue.

Can OpenCues catch my own mistakes as I type?

With contradiction-cues-mode: on (off by default), OpenCues flags a claim that doesn't add up - a weekday that doesn't match its date, wrong split-the-bill maths, a meeting on a bank holiday, an outdoor plan vs the forecast. A passive tip, never an auto-rewrite; the correction is computed data, never a guess. Full guide: catch mistakes as you type.

What is the secondary display?

Where tips render, outside your text: navigate to a cued word and it shows the cue-tip (what the word means, why an alternative was suggested), plus the active agent task when one is running. Each host picks its own - Claude Code's status line, a small status bar in Chrome. More: the secondary display.

Inline agents#

How do I get continuous grammar correction?

Start the inline agent with any task (agentically correct spelling _) and continuous grammar correction, enabled out of the box, rides along every pass: clear errors are fixed as you pause, dimmed so you can spot and revert each one. See fixing grammar as you type.

How do I start and stop an agent task?

Four phrases: agentically <task> _ starts, add task <more> _ stacks another concern, stop task _ stops (existing edits stay), current task _ prints what's running. See what is an inline agent?

Will the agent overwrite what I'm typing?

No. Rewrites are merged against your live buffer, and any edit that overlaps text you typed while the model was generating is dropped. The prompt also tells the model to leave your in-flight sentence alone.

Can OpenCues send my message by itself?

Never. Everything OpenCues writes lives in your unsent draft; you are the one who presses Enter. That boundary is the core of the security model.

What does OpenCues offer writers?

Continuous grammar correction, sentence-level register rewrites, one-shot transforms, and word alternatives, layered inside the text field and all revertable. Full guide: inline AI for writers.

Does it help non-native English writers?

Yes: continuous grammar correction fixes errors as you type, translation works inline in three shapes, and identity context reuses your details. Full guide: inline AI for non-native English writers.

Katas#

What is a kata?

A guided, hands-on lesson you work through in the host you're already using ("enter plan mode, ask for a plan, commit to git"). A live coach in the secondary display tells you the next micro-action and detects your progress from what you type and press; you never announce completion. Full guide: what is a kata?

How do I start, advance, and stop a kata?

start kata 1 _ starts by id, start kata git-basics _ by name, and a bare start kata _ starts the first installed one. Progress is detected automatically; next _ or done _ advance manually, skip _ skips a stuck step, and stop kata _ exits. An unknown id lists the installed catalogue.

Which katas ship with OpenCues?

Nine, spanning levels: opencues-basics and git-basics for fundamentals, an email kata for browser writing, and a Claude Code series (claude-code-basics, claude-code-power, first-session, fix-a-bug, custom-command). A kata can name a next: kata, so they chain into a curriculum.

Can a kata do anything on my behalf?

No. Coaching is display-only by spec: a kata never writes into your buffer, executes anything, or changes settings. It starts only when you ask, and pressing Esc three times always exits - deterministically, with no model involved (three presses, not two, so Claude Code's normal double-Esc can't exit one by accident).

What happens to normal cues during a kata?

Kata mode is modal: LLM-driven features pause while the lesson runs so nothing races it, while local features a kata might teach (navigation, cycling, keyword blanks) keep working. Stopping restores everything instantly; nothing is written to your settings.

Do katas need an API key?

No. Without a working model a kata degrades to a labelled self-guided checklist: the secondary display says the coach is offline and you advance with next _ as you complete each step. Writing one is just as simple: a katas/<name>/KATA.md with one ## heading per step.

Install & platforms#

How do I install OpenCues in Claude Code?

npm install -g opencues, then opencues install claude-code. It patches a separate copy, so your normal claude is untouched. Full guide: AI suggestions in Claude Code.

What is the Claude Code tips pack?

A shipped cue pack teaching Claude Code inside Claude Code: 37 tip groups over 128 terms, from /compact to ultrathink, dimming as you type them, with zero LLM calls. Gated by tips mode, on by default. Full guides: the Claude Code tips pack and tips mode.

How do I get inline AI in Chrome?

Install the OpenCues Chrome extension; it works in regular inputs and rich editors (including claude.ai and LinkedIn) with your own model key. Details: inline AI in Chrome.

Does OpenCues work in OpenCode and Gemini CLI?

Yes: opencues install opencode and opencues install gemini-cli. Both share the same ~/.cues/ config as every other host. Guides: OpenCode, Gemini CLI.

Does OpenCues work in my terminal?

Yes. oc-shell wraps your interactive shell so blanks and cues work at the command line, with an input box summoned via a hotkey. It's a standalone app, no host to patch. Guides: AI in your terminal and inline AI for terminal users.

Which operating systems are supported?

macOS (Intel and Apple Silicon) and Linux natively; on Windows, run everything inside WSL2. The Chrome extension itself runs in Windows Chrome, built from WSL. Full list: system requirements.

Can OpenCues run offline with local models?

Yes: point it at Ollama and every LLM feature runs against models on your own machine, so your text never reaches a cloud model. Live-data blanks (weather, stocks) still call their public APIs when you use them. More: Ollama vs cloud and a self-hosted writing assistant.

Can I add OpenCues to my own editor or app?

Yes: integrations are a thin adapter over the shared runtime. In the lightest shipped integration the host-contract implementation is about 160 lines of TypeScript, with under 300 more of boot wiring. The open standard plus the porting guide in the repo cover the contract.

Where is OpenCues installed on my machine?

Config lives in ~/.cues/, per-host artefacts in fork dirs like ~/claude-code-cues/, vendored tools in ~/.opencues/vendor/, logs in /tmp. opencues which shows all of it. Full map: where is OpenCues installed?

Models & privacy#

Which LLM providers are supported?

Cerebras (recommended), Groq, OpenAI, Anthropic, Gemini, OpenRouter, OpenCode Zen, and local models via Ollama. Your own keys, no middleman. Full breakdown: LLM providers; model by model: supported models.

Which provider should I pick?

Cerebras: it serves the open-weight gpt-oss-120b family with the lowest latency on the free tier, and inline assistance is latency-sensitive. You can route cues and blanks to different providers independently. Full guides: the best model for inline AI, Cerebras vs Groq, and gpt-oss-120b.

How fast is it?

Static tip cues are local and effectively instant. LLM word cues typically return in 200-500ms; lookups and rewrites are typically sub-second on fast providers, though long generative fills (write a poem _) can take a second or so. The background agent fires after a 1s pause by default (configurable). The engineering: how OpenCues stays fast.

How good are the results?

Internal benchmarks: the fluid blank scores 100% on a 137-case suite (on Cerebras), and sentence cues hit 100% precision across 5 providers, with honest caveats throughout. Full evidence: how good is OpenCues?

How do I see which model OpenCues is using?

Type whats my model _ in any field, or run opencues models, to see the exact provider and model each surface (cues, blanks, auditors) actually routes to - read from dispatch truth, not just config. Full guide: see which model you're using.

What is max-thinking?

A setting that trades reasoning depth for speed on reasoning-capable models: on (the default) lets each model think to its ceiling, off drops to the lightest level. Full guide: max-thinking.

Is my personal data sent to the model?

The optional identity feature defaults to safe mode: the model only sees tokens like [FIRST NAME], stored values you type yourself are swapped for their tokens before dispatch, and real values are substituted on your machine after the response, so PII stays out of provider logs.

Does OpenCues train on my input?

OpenCues itself stores nothing and has no servers; text goes only to the provider you configured. Providers that train on input are refused for prose-bearing features by design.

Is it safe to install third-party cues and blanks?

Third-party JavaScript blanks run in a capability-restricted sandbox (no filesystem, hostname-exact network allow-list, namespaced storage), scripts are local-or-shipped only, and LLM output is never wired to any action. Full picture: the security model.

The open standard#

What is the OpenCues open standard?

The file formats (CUE.md, BLANK.md) and runtime contracts are specified openly so anyone can implement them in any editor, browser, or app. Full page: the open standard; background: what is an open standard for AI?

What are CUES.md and BLANKS.md?

The master files, one per surface, at a config root. They hold surface-wide settings: enable flags, ignore: lists, and disable: to subtract a source per project without deleting it. Deep dives: CUES.md, BLANKS.md.

Can another app implement OpenCues?

Yes, that's the point. An executable conformance suite (valid/invalid fixtures, wire-format cases, routing scenarios) defines what a second implementation must pass, surface by surface. Walkthrough: implementing the OpenCues standard.

How is this different from Anthropic's SKILL.md?

They extend different things, on opposite sides of the Enter key. A SKILL.md extends an AI agent: the model reads its description and decides to invoke it after you submit (or you call it explicitly). OpenCues' files extend the text field itself: they act on your draft while you type, and fire deterministically (a match: regex or keyword literally hits your text), never by LLM choice. Full comparison: OpenCues vs SKILL.md.

How do features get into the standard?

Proposals are drafted in spec/proposals/ (modelled on MCP SEPs), and a runtime-specific feature is only promoted once a second independent runtime adopts it, which keeps the spec lean.

What version is the standard on?

Draft 0.7. Field names and behaviour can change between minor versions; production interop guarantees begin at 1.0.

Comparisons#

OpenCues vs GitHub Copilot?

Copilot autocompletes code in your editor; OpenCues adds AI to any text input and you choose where it responds by placing the _. Full comparison: OpenCues vs GitHub Copilot; see also is there a free Copilot alternative?

OpenCues vs Grammarly?

Continuous grammar correction covers the same ground, but on your own model, in more surfaces, as readable config files you control. Full comparison: OpenCues vs Grammarly; see also an open-source Grammarly alternative.

OpenCues vs autocomplete?

Autocomplete chooses when and where to interrupt; blanks invert that, so you place the _ and the system only decides what goes there. Full comparison: OpenCues vs autocomplete.

OpenCues vs Anthropic's SKILL.md?

Skills extend an agent and fire after you press Enter, usually chosen by the model; OpenCues files extend the text field and fire deterministically while you type. Full comparison: OpenCues vs SKILL.md.

OpenCues vs MCP?

MCP connects agents to tools so models can act; OpenCues standardises the draft side, where model output is never allowed to become an action. Different layers that compose. Full comparison: OpenCues vs MCP.

OpenCues vs Apple's Writing Tools?

Menu-driven rewrites on Apple devices vs typed, per-word-revertable edits in any host with any model. Full comparison: OpenCues vs Apple Writing Tools.

OpenCues vs Smart Compose?

Smart Compose predicts your next words inside Google's products; blanks are requests you place, anywhere. Full comparison: OpenCues vs Smart Compose.

OpenCues vs a text expander?

Expanders replay stored snippets, instantly and offline; OpenCues computes its fills (live data, LLM answers, rewrites). They coexist fine. Full comparisons: OpenCues vs text expanders and OpenCues vs espanso.

OpenCues vs a chat panel or AI sidebar?

Panels cost two context switches per question; OpenCues answers inside the text you're writing and never submits anything itself. Full comparison: OpenCues vs chat panels; see also stop copy-pasting from ChatGPT.

OpenCues vs Cursor Tab?

Cursor Tab autocompletes code edits inside the Cursor editor with its own models; OpenCues adds AI to any text input, and you place the _ where you want it. Full comparison: OpenCues vs Cursor Tab.

OpenCues vs Raycast AI?

Raycast AI lives in a summoned launcher window: ask, get an answer, paste it where you work. OpenCues answers inside the text field you are already typing in. Full comparison: OpenCues vs Raycast AI.

OpenCues vs Clicky?

Clicky reads a screenshot of your Mac and answers by voice or runs an agent across your apps; OpenCues answers inside the text field you are typing in, from the text itself, with no screenshot. Full comparison: OpenCues vs Clicky.

OpenCues vs Acti?

Acti puts AI agents in your phone keyboard, locked to Gemini; OpenCues is the open-source inline layer for the desktop, on any model including local. Full comparison: OpenCues vs Acti.

OpenCues vs Wispr Flow?

Flow turns speech into polished text in any app; OpenCues computes on typed text: fills, rewrites, live data. They pair well. Full comparison: OpenCues vs Wispr Flow.

OpenCues vs Superwhisper?

Superwhisper dictates with local models and your own keys on a Mac; OpenCues generates and transforms typed text on any provider. Full comparison: OpenCues vs Superwhisper.

OpenCues vs VoiceInk?

Both are open source and local-capable; VoiceInk turns speech into text on macOS, OpenCues works on what you type, everywhere it integrates. Full comparison: OpenCues vs VoiceInk.

OpenCues vs Windows Click to Do?

Click to Do is a screen overlay for Copilot+ PCs acting on rendered text; OpenCues works inline in the field on any Windows machine via Chrome and WSL. Full comparison: OpenCues vs Windows Click to Do.

OpenCues vs Kerlig?

Kerlig opens a bring-your-own-key panel over any Mac app; OpenCues removes the panel: the text field itself is the interface. Full comparison: OpenCues vs Kerlig.

OpenCues vs BoltAI?

BoltAI's gpt: inline command is the closest UX to a blank; OpenCues makes the trigger a full grammar with fills, transforms and live data, open source. Full comparison: OpenCues vs BoltAI.

OpenCues vs WritingTools?

WritingTools is an open-source hotkey rewriter for selected text; OpenCues collapses selection, hotkey and popup into the act of typing. Full comparison: OpenCues vs WritingTools.

OpenCues vs Typilot?

Typilot types fix:-style prefixes on local models only; OpenCues offers the same inline trigger on ten providers, open source. Full comparison: OpenCues vs Typilot.

OpenCues vs Compose AI?

Compose AI pioneered inline // commands in Chrome; OpenCues is that idea rebuilt open source, model agnostic, and beyond the browser. Full comparison: OpenCues vs Compose AI.

OpenCues vs Monica, Sider or Merlin?

The sidebars bundle models behind their own credit plans, in a panel; OpenCues answers inline and bills nothing: your keys, your plan, or a local model. Full comparison: OpenCues vs AI browser sidebars.

OpenCues vs Gmail's Help me write?

Help me write drafts with Gemini inside Google's apps; OpenCues works in Gmail too, then everywhere else, on any model. Full comparison: OpenCues vs Gmail's Help me write.

OpenCues vs Warp?

Warp is a new AI terminal you switch to; OpenCues adds inline AI to the shell and terminal you already use. Full comparison: OpenCues vs Warp.

OpenCues vs Cotypist?

Cotypist offers passive local autocomplete on macOS; OpenCues adds the explicit half: place a _ and summon answers, rewrites and live data. Full comparison: OpenCues vs Cotypist and KeyType.

OpenCues vs ChatGPT?

ChatGPT is a destination you visit; OpenCues is a layer where you already type, and it can even run on your ChatGPT plan. The measured copy-paste loop is 6 to 9 steps against one. Full comparison: OpenCues vs ChatGPT.

Setup & troubleshooting#

How do I uninstall OpenCues?

opencues uninstall <host> (or --all) reverts each host: Claude Code's patched copy is restored from backup, OpenCode's patched files are checked out, Chrome's bundle is removed. Your configs in ~/.cues/ are deliberately kept; delete that folder too for a full wipe. Full guide: uninstalling OpenCues.

How do I update OpenCues?

One command: opencues update pulls the latest code and re-runs every detected installer. opencues run also self-heals stale installs before every launch. Full guide: updating OpenCues.

Something broke - how do I debug it?

Run opencues doctor first: read-only diagnostics across every host, with suggested fixes. Then opencues logs --tail for the runtime log, and opencues debug on for verbose logging (hot-reloads in ~2s). Checklists: OpenCues not working? and seeing the logs.

What does opencues doctor check?

Missing keys, stale patch state, unbuilt artefacts, node-version mismatches, per-platform feature backends, and install boundaries - findings come with their fixes. It never modifies anything. Full guide: opencues doctor.

Where do my API keys live?

Either as environment variables (CEREBRAS_API_KEY, GROQ_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, OPENROUTER_API_KEY) or stored with opencues set-key <provider> <key>, which writes ~/.cues/.env. Ollama needs no key; the subscription providers log in via their own CLIs. More: opencues set-key.

Can different features use different models?

Yes: per-feature bucket settings in OPENCUES.md - cues-llm-*, blanks-llm-* - each with a provider/model pair. A common setup is a fast cheap model for word cues and a stronger one for rewrites. Full guide: switching models.

What happens when a provider rate-limits me?

Set both CEREBRAS_API_KEY and GROQ_API_KEY and OpenCues fails over automatically on 429s and 5xx errors - both serve the same open-weight model, so quality doesn't shift. Genuine request errors are never retried. More: how OpenCues handles rate limits.

What if I have no API key at all?

You aren't left guessing: with no key configured, a _ substitutes a visible hint telling you where to add one. There's also a free blanks-only mode via OpenCode Zen - with the trade-offs that it trains on input (that's why it's blanks-only, where typing _ is the consent gate) and is slow. More: the missing key hint.

Can I turn off the loading animation?

Yes: blank-loading-animation: off in OPENCUES.md. You can also change its frames and colours with the blank-loading-* settings (hand-edited, not in the menu).

Can I change settings without leaving the text field?

Yes: type config _ and cycle through every setting inline - a selector picks the setting, a satellite shows and writes its value. Or just type enable debug logging _. Full guide: changing settings from your text field.

What is the .cues folder?

It holds OpenCues config: cues, blanks, settings. Three layers (env override, project, user) merge additively, and project wins name conflicts. Full guide: the .cues folder.

What commands does the OpenCues CLI have?

The five you'll use most: install, run, set-key, doctor, update. Full reference: the CLI reference; deep dives on list, run, validate, and seed-configs.

What are the OpenCues best practices?

Field-tested defaults: seed the shipped configs, set both failover keys, commit your project's .cues/, and stay on the safe modes. Full list: OpenCues best practices.

Personalisation & context#

Can OpenCues fill in my own details?

Yes: my email _ resolves once you've stored your details. Safe mode is the default: the model only ever sees tokens like [EMAIL], and real values are substituted on your machine after the response. Full guide: identity context.

How do I store my details?

Two ways: the opencues identity CLI (interactive interview, plus set/remove/list), or inline while typing: set sentinel phone +44... _. Both go through the same validator (key shape, size caps, 64 fields max). More: IDENTITY.md, opencues identity, and the sentinel blank.

Can lookups adapt to the field I'm typing in?

With ambient-context-mode: on (off by default, Chrome only), a _ lookup also sees the field's label, placeholder, and page title - so paris _ in an airport-code box answers CDG instead of a fact about Paris. Full guide: context-aware lookups.

Can inline AI use my calendar?

With calendar-context-mode: on and a feed added (opencues calendar add), _ answers am i free thursday _ / next event _ and a cue flags prose that clashes with your schedule. Event times reach the model; titles stay local. Full guide: calendar-aware inline AI.

Can blanks feed context without typing their keyword?

With blank-context-mode (safe by default), a blank that opts in via as-context: exposes its live value as an ambient token - so do i need a jacket _ can use current weather without you typing weather.

Can OpenCues read tips aloud?

Yes: voice-mode: active speaks tips on navigation, using the platform's engine (macOS say, Linux espeak-ng/spd-say, Windows via PowerShell). No engine installed means it's silently skipped. More: voice mode.

Can I add my own words and tips without an LLM?

Yes: a CUE.md body can be a static dictionary of word to tip + alternatives, resolved locally and instantly, with no API call. The shipped per-host tip packs work exactly this way. Guide: write your own cue.

Platforms & limits#

Does OpenCues run on native Windows?

No - everything runs inside WSL2 on Windows (the installers are bash, and the package refuses native win32 up front). The one cross-boundary piece is Chrome: it builds in WSL and deploys to Windows-side Chrome.

Does it work in Firefox or Safari?

Not today - Chrome (MV3) is the only browser integration. The runtime is host-agnostic, so other browsers are an integration away rather than a rewrite.

Does OpenCues work on Gmail?

Yes, fully. Gmail compose is a generic contenteditable, the extension's most reliable surface: cues, blanks, cycling, one-entry undo, and bold that really renders. Full guide: OpenCues on Gmail.

Does OpenCues work on ChatGPT and claude.ai?

Yes, both are verified sites: their ProseMirror composers get blanks, transforms, and cues with one-entry undo. Bold styling stays plain text on both; the markers are stripped. Full guides: OpenCues on ChatGPT and OpenCues on claude.ai.

Does OpenCues work on LinkedIn?

Yes, verified, with caveats: the share composer gets blanks and transforms (one-entry undo) but not the inline agent; comments get everything; messaging works. Full guide: OpenCues on LinkedIn.

Does OpenCues work on Google Docs or Notion?

Google Docs: no - it renders text to a canvas with no DOM text nodes, so there is nothing for OpenCues to attach to. Notion: not a tested or verified site today. Details and what works instead: Google Docs, Notion.

Is there a VS Code extension?

Planned, not yet available. Today's hosts are Chrome, Claude Code, OpenCode, Gemini CLI, and the oc-shell terminal wrapper; full list: AI in any text field.

Does it work on mobile?

Not yet - there is no mobile host today. The _ primitive was chosen partly because it's typeable on every mobile keyboard, so the door is deliberately open.

Does it support non-English text?

Yes, with honest caveats: sentence handling understands CJK punctuation and spaceless scripts dim by span, but the sentence splitter is deliberately simple (a regex, not a full segmenter), and very long passages in dense scripts (Japanese, Chinese, Korean, Arabic) cost more tokens per character, which can slow long rewrites. Full guide: supported languages.

Why doesn't bold formatting land on some sites?

In Chrome, styling uses the browser's editing commands, which some rich editors ignore: reliable in Gmail-style editors, best-effort on Lexical, usually a no-op on ProseMirror or Draft.js composers. The literal ** markers are still stripped either way, so you never see raw markdown. Full honesty table: making text bold inline.

Contributing & the project#

How do I contribute?

Three areas: the standard's .md formats, integrations for new hosts, and the core libraries. Keep PRs focused, test what you ship, and don't break hot-reload. Full guide: contributing to OpenCues.

What's the easiest first contribution?

A new word source: one cues/<name>/CUE.md file, zero code. It's auto-discovered, routed per-word, and hot-reloads in a couple of seconds. Issues labelled good first issue collect more of these.

How do I propose a change to the standard?

Copy the template in spec/proposals/, fill in concrete before/after examples, and open a PR. Accepted proposals must ship conformance fixtures - a proposal without them is structurally incomplete. The process is modelled on MCP's SEPs.

How do I report a bug?

Open a GitHub issue - and paste your opencues doctor output, which carries the install-state detail that makes most bugs reproducible.

Does OpenCues phone home?

No. There are no OpenCues servers and no telemetry; the only network traffic is your text going to the LLM provider you configured, and whatever live-data blanks you invoke.

Why is it called OpenCues?

From non-verbal cues in human conversation: the nudges and signals people exchange without interrupting each other. OpenCues applies the same idea to text - the system cues you (dimmed alternatives), and you cue the system (_) - as an open standard.

Who made OpenCues?

OpenCues was invented by Wilfred Kasekende, Jake Brandford, and Damon Millar, HCI designers and inventors, and is maintained as an open-source community project under Apache-2.0. More: who made OpenCues?

Where is the documentation?

Three places: the repo's docs/ tree (overview, glossary, ~40 feature files, guides), the spec/ folder for the open standard, and this FAQ. Full map: the OpenCues documentation.

Where are the release notes?

Two places: this site's changelog for release summaries, and the repo's CHANGELOG.md for every per-package change. More: the OpenCues release notes.

Glossary#

OpenCues

An open-source system that gives real-time guidance as you type in any text input. It mirrors how humans give non-verbal cues during conversation - nudges, indications, context - applied to text. Works on top of any text input: LLM prompts, word processors, mobile keyboards, more.

Cue

A word, or a whole sentence, that OpenCues has enriched with alternatives, a tip, or other functionality. When someone says "I added a cue for ultrathink," they mean the word now appears indicated and has OpenCues functionality behind it. Full guide: what is a cue?

Indicated cue

The visual signal in your text that a cue exists. A word appearing dimmed signals that alternatives and other information are available. The indicated cue is what you see; the cue is the full data behind it.

Alternatives

The set of values a word can be replaced with when you cycle (e.g. "happy" → "sad", "excited", "content"). The original word is always at index 0.

Cue-tip

Hint text shown in the secondary display when a word is highlighted. Provides context about what the word means or why an alternative was suggested.

Multi-word group

An alternative made of multiple words (e.g. "Sundar Pichai"). Tracked as a single unit that cycles together.

Blank

An underscore (_) you place as a cue to the system: "fill this in." Think of blanks as user-placed autocomplete - you decide where the completion appears.

Cue-blank

A blank bound to a keyword via blankKeywords. Leading the sentence that ends in _ with a keyword (e.g. volume _) auto-populates the blank with the current value, and Ctrl+Alt+↑/↓ changes the actual system state.

Blank shape

The anchored phrase grammar a blank declares via blankShapes (a blankKeywords list is shorthand that desugars into shapes). A blank claims a _ when its shape matches the sentence the _ ends, and the shape also decides what gets cleared: a captured argument or command phrase is consumed (weather oslo _ leaves just the report), while a bare keyword lookup keeps its label. Full guide: blank shapes.

Transform blank

A blank that takes an imperative instruction and rewrites the surrounding text - or generates new content when there's no target. Triggered by inputs like fix the grammar _, make this past tense _, translate to japanese _, write a poem _. See transform vs fluid blank.

Local cue

An alternative computed locally on your machine, returning near-instantly. The tips file is a local cue source - it provides both alternatives and cue-tips, no LLM needed.

Remote cue

An alternative computed by an LLM. Each cues/<name>/CUE.md sends a prompt and parses the response. Typical latency 200-500ms.

Fluid blank

Free-form _ lookup with no keyword binding. A single LLM call segments the surrounding text into a question and answers it - handles math, factual queries, translation, unit conversion, code lookups, and more without per-mode classification. Fires when no keyword-bound blank claims the slot.

Sentence cue

A cue with scope: sentence: the whole sentence highlights and cycling swaps in alternative rewrites of it. Outranks word cues inside its span; off by default behind sentence-cues-mode.

Agent task

A continuously-running rewrite loop declared in plain English (agentically correct spelling _). Every pause in typing re-checks the draft against the task; edits land dimmed and individually revertable. Stopped with stop task _.

Selector + satellite

One _ that expands into two navigable words: a selector (the setting being configured) and a satellite (its current value). Cycling the selector changes which setting; cycling the satellite writes the value. The mechanism behind config _.

Identity context

Optional injection of your own details (~/.cues/IDENTITY.md) into _ lookups, so my email _ resolves. Safe mode (the default) sends only tokens like [EMAIL] to the provider, and stored values you type yourself are swapped for their tokens before dispatch; real values are substituted on your machine after the response.

Ambient context

Optional (off by default, Chrome only): a _ lookup also sees the focused field's label, placeholder, and page title, so paris _ in an airport-code field answers CDG.

Dim

The faint visual state marking a word as navigable (it has alternatives or a pending fill). Rendered with the terminal's faint attribute or a CSS blend, so it composes with the host's existing colours instead of replacing them.

Hot-reload

Config .md edits take effect within a couple of seconds, no restart: native hosts re-check on input plus a background poll; Chrome gets bundles pushed live by the native-messaging host.

Voice mode

The voice-mode setting: when active, tips marked for speech are read aloud on navigation via the platform's TTS engine (macOS say, Linux espeak-ng, Windows via PowerShell). A silent no-op if no engine exists.

Kata

A guided, in-editor scenario defined in katas/<name>/KATA.md: ordered steps a coach in the secondary display walks you through in your real editor, detecting progress from what you type and press. Started only by you (start kata 1 _), always escapable (Esc ×3), display-only by spec. See What is a kata?

Host

One OpenCues integration: claude-code, opencode, gemini-cli, chrome, or shell. All hosts read the same .md config; they differ in what they can render and execute.

CUES.md / BLANKS.md

The master config files at the project root - one per surface. Hold surface-wide settings: enable flags, ignore: lists, and disable: to subtract a named source without modifying the user-level library.

cues/<name>/CUE.md

One folder per cue source - the folder name is the source id. Body is either a JSON tip-group block (static, instant) or a prompt the LLM uses to generate alternatives (or both). Full guide: the CUE.md file.

blanks/<name>/BLANK.md

One folder per blank. Declares a trigger (blankKeywords or blankShapes) plus at most one binding profile: stepValues (static cycle list), blankScript (sibling script), or impl (runtime class or sandboxed JS; omitted, it resolves implicitly from the blank's name).

OPENCUES.md

Runtime system-settings file (user-level only). Holds runtime scalars like voice-mode, transform-blank-mode, debug-mode, llm-provider, plus numeric tunables. Specific to the OpenCues runtime - other conformant runtimes may park their config elsewhere. Full guide: OPENCUES.md.

Response parser

How an LLM response is interpreted. Set via the parser field. Two built-ins: alternatives (INDEX:alt1,alt2,alt3 - the default) and raw (verbatim). Math and factual lookups don't need their own parser - the fluid blank handles them.

Secondary display

Where additional information (cue-tips, status hints) is shown. Not in the text input itself. The integration decides what this is - a status bar, tooltip, hover panel, sidebar.