Comparison

How OpenCues compares with the tools closest to it: AI keyboards, dictation apps, system-wide writing assistants, browser assistants and developer tools. Reviewed July 2026. Traction figures are public reports or vendor claims.

Capability comparison#

integrated partially integrated absent
Product Open source Extensible Blankstyped fill-in-field Transformsrewrite in place Cuespassive inline suggestions Live data into text Voice dictation Agent actions Custom commands Fully local Reuses Claude/ChatGPT plan BYOK Revertable in-place edits PII kept off providers Per-feature model routing Team / project config Mobile Native desktop appsintegration mechanism 6 Hot-reload config Context awareness Guided lessons
OpenCues Apache-2.0 cues, blanks, scripts stateful blanks, scripts TTS out only 1 agent tasks on text 2 original one cycle away safe mode tokens per-surface buckets project .cues Windows, system-wide via UIA 4 ~2s, no restart field, ambient, calendar katas
Acti Skill Builder hold bar 100+ APIs Skill Builder preview before apply skill hub iOS + Android mobile only field text
Wispr Flow custom transforms spoken commands transform slots, snippets zero-retention mode team dictionary (Enterprise) types into focus per-app style
Superwhisper custom modes shapes dictation modes per-mode models enterprise admin iOS clipboard paste window, selection, clipboard
VoiceInk GPL-3.0 custom modes via local Claude/Codex CLIs 12+ providers per-mode models iOS paste into focus screen + clipboard
Grammarly Go agent store widget prompt underlines Go agents keyboard STT, iOS Superhuman Go per-suggestion apply style guides keyboards accessibility overlay document
Apple Writing Tools Compose via ChatGPT selection OS-level, separate 3 own ChatGPT account revert to original on-device 5 OS text views selection
Raycast AI extensions only extension store window extensions Dictation per-command model Teams plan companion app selection + paste selection
Kerlig custom actions panel macOS dictation per-action model selection + paste selection + app capture
BoltAI plugins, MCP gpt: in field Inline Whisper agents, MCP tools sensitive data redaction per-command model iOS/Android beta keystroke monitor selection
Clicky old repo MIT, app closed talks to the agent, not field dictation computer-use across apps screenshots to cloud macOS only screen capture + agent screen + active app live on-screen tutoring
WritingTools GPL-3.0 hotkey popup per-command, macOS clipboard + paste selection
Typilot custom commands fix: prefixes ghost text unlimited custom local only accept-first ghost text local only 5 per-command model keystroke monitor selection + img:
Compose AI // trigger ghost text accept-first ghost text browser only reply context
Monica / Sider / Merlin custom prompts Monica compose toolbar browsing saved prompts credits model picker Merlin team projects iOS/Android Monica desktop, selection page-aware
espanso GPL-3.0 packages, scripts snippets + script output shell scripts undo backspace no LLM calls shared packages keyboard hook reload on save
GitHub Copilot Chat extension MIT MCP servers code comments inline chat, IDE code ghost text VS Code Speech agent mode prompt files VS Code chat accept-first ghost text chat model picker repo instructions chat in mobile app IDEs only IDE context
Warp client AGPL, backend closed MCP, skills NL box command suggest voice input skills, slash commands embedded Claude Code/Codex per-hunk revert opt-in secret redaction model picker Warp Drive, WARP.md mobile remote control own terminal session context
Cotypist / KeyType unaffiliated KeyType MIT custom instructions autocomplete accept-first ghost text local only 5 accessibility + overlay buffer

1. OpenCues voice-mode is text-to-speech output (it reads tips aloud), not voice input. Dictation tools pair well with OpenCues: they put text in the buffer, OpenCues works on whatever is there.

2. Agent tasks (agentically X _) operate on your text buffer rather than commanding external apps.

3. Apple and Windows ship OS dictation separately from their writing tools; capabilities are counted per product.

4. Terminal integrations are native apps; this column tracks arbitrary GUI apps such as mail clients and editors. OpenCues reaches these system-wide on Windows through UI Automation (Notepad, WordPad, the browser address bar, Explorer, Win32 / WinForms / WPF fields), integrated into each field's text pipeline rather than coarse OS injection (see 6), so cues, cycling and revertable edits keep working.

5. Fully local tools avoid sending PII by never calling a cloud provider; this column tracks redaction on cloud calls.

6. "Any app" reach comes from OS-level injection: clipboard swap and paste, synthetic keystrokes, accessibility APIs, OS text views, or screen OCR. Those routes offer coarse insert and replace verbs with no durable model of the buffer, which is why the per-word columns (cues, revertable edits) stay empty on the same rows. OpenCues integrates inside each host's text pipeline instead: richer state, narrower coverage.

The landscape in charts#

Placements are qualitative, derived from the verified capability grid above. Hover any point for its name.

Reach vs depth#

How much of your computer a tool covers, against how deeply it holds your text. OS injection buys breadth with coarse verbs; in-pipeline integration buys per-word state.

better ↗ deep but narrow deep + everywhere everywhere, but shallow ← single surface works everywhere → ← pixels and paste full buffer model → OpenCues OpenCues Warp Warp GitHub Copilot GitHub Copilot Gmail Help me write Gmail Help me write Monica / Sider Monica / Sider Compose AI Compose AI Acti Acti Click to Do Click to Do Raycast AI Raycast AI Kerlig Kerlig VoiceInk VoiceInk Cotypist Cotypist Superwhisper Superwhisper Typilot Typilot WritingTools WritingTools espanso espanso Wispr Flow Wispr Flow Apple Writing Tools Apple Writing Tools Grammarly Grammarly
Voice Desktop assistants Built-ins Mobile keyboards Browser Dev tools OpenCues

Model freedom vs where the answer lands#

Whether you choose the model (keys, your existing plan, local), against how close the answer lands to where you were typing. espanso and Click to Do sit out: no model in one, no text edit in the other.

better ↗ inline, their model inline, your model ← locked to one vendor any model, your plan, local → ← separate window lands in your text → OpenCues OpenCues BoltAI BoltAI Kerlig Kerlig WritingTools WritingTools VoiceInk VoiceInk Superwhisper Superwhisper Warp Warp Raycast AI Raycast AI Typilot Typilot GitHub Copilot GitHub Copilot Monica / Sider Monica / Sider Cotypist Cotypist Apple Writing Tools Apple Writing Tools Acti Acti Wispr Flow Wispr Flow Compose AI Compose AI Grammarly Grammarly Gmail Help me write Gmail Help me write
Voice Desktop assistants Built-ins Mobile keyboards Browser Dev tools OpenCues

Asking cost vs unasked help#

Horizontal position is measured: the average of the two explicit-task step counts from the table below, fewer steps further right. Vertical is the passive-layer tier: nothing volunteers, ghost text proposes next words, underlines flag problems, cues offer revertable alternatives to what you already wrote. espanso sits out: no model behind it.

better ↗ surfaces help, slow to ask instant ask + unasked help slow to ask, silent fast to ask, silent ← many steps to a result one step → ← never volunteers volunteers revertable help → OpenCues OpenCues BoltAI BoltAI Typilot Typilot Wispr Flow Wispr Flow GitHub Copilot GitHub Copilot Gmail Help me write Gmail Help me write Grammarly Grammarly Kerlig Kerlig WritingTools WritingTools Raycast AI Raycast AI Monica / Sider Monica / Sider Apple Writing Tools Apple Writing Tools ChatGPT web, alongside ChatGPT web, alongside
Voice Desktop assistants Built-ins Browser Dev tools Baseline (ChatGPT web) OpenCues

Positioning#

ProductSurfaceTrigger UXOS integrationModelsOpen sourcePriceTraction
OpenCuesClaude Code, OpenCode, Gemini CLI, Chrome, Windows (system-wide), any terminal via oc-shelltyped _ inline; in-place overlay marks on Windows native surfacesin-host adapters inside the text pipeline; UI Automation on Windows10 providers, BYO subscriptions, Ollama localApache-2.0freebeta
ActiiOS / Android keyboardhold Acti Bar, Skill Keyskeyboard extensionGemini onlynofree (premium planned)$5.3M seed
Wispr FlowMac / Win / iOS / Androidhold hotkey + speaktypes into the focused fieldfixed cloud pipelineno$15/mo~$700M valuation (reported)
SuperwhispermacOS / Win / iOShotkey + speakclipboard paste into the focused fieldlocal Whisper + BYO cloudno$8.49/mo or $250 lifetimeindependent
VoiceInkmacOShotkey + speakpaste into focus; accessibility for contextlocal-firstGPL-3.0$25 one-time200k downloads (self-reported)
Grammarlyeverywherepassive underlines + widgetaccessibility overlay (desktop), DOM (browser)fixed cloudnofree / $12/mo40M daily users
Apple Writing ToolsmacOS / iOSselect + popoverbuilt into OS text viewsApple models (+ChatGPT opt-in)nofree with OSdefault install base
Windows Click to DoCopilot+ PCs onlyWin+click screen overlayscreen capture + OCRPhi Silica / Copilotnofree with OSNPU hardware gated
Raycast AImacOS (Win beta)hotkey windowselection capture + pasteRaycast-hosted multi + Ollamano$8-16/mo$45M raised
KerligmacOShotkey panel on selectionselection capture + pasteBYOK 350+ models + localno$49 one-timeindependent
BoltAImacOS/gpt typed inline + hotkey chatkeystroke monitor + injectBYOK 300+ models + localno$79-99 one-timeindependent
ClickymacOS (Windows waitlist)hold hotkey + speakscreen capture + accessibility, agent controlfixed cloud pipelineold repo MIT, app closedfree / $20/mo$10.1M raised (YC S26)
WritingTools (theJayTea)Win / Linux / Macselect + hotkey + popupclipboard swap + pasteBYO incl. OllamaGPL-3.0free2.3k stars
TypilotWin / Mac / Linuxfix: typed prefixes + voicekeystroke monitor + injectOllama local onlynoone-timenew
Compose AIChrome onlyghost text + // triggerbrowser DOMfixed cloudno$9.99/mo300k users, last updated Jan 2025
Monica / Sider / Merlinbrowser sidebarhotkey sidebar / menubrowser DOM (sidebar)credit resale, multi-modelno$8-25/momillions of installs
Gmail Help me writeGmail / Docs onlybutton + prompt boxnative to the web appGemini onlynofreedefault install base
espansoWin / Mac / Linuxtyped :trigger snippetskeyboard hook + synthetic typingnone (no LLM engine)GPL-3.0free14.1k stars
GitHub CopilotIDEs onlypassive ghost textIDE extension APIsGitHub-managed, BYOK in VS Codechat ext MIT$10/mo20M+ users (vendor claim)
Warpown terminalNL input box + agentis the terminalWarp credits or BYOKclient AGPL$20/mocredit-metered plans
Cotypist / KeyTypemacOSpassive inline autocompleteaccessibility read + caret overlaylocal onlyno / MIT (unaffiliated)free / paidindependent

OpenCues is the only row that is simultaneously multi-surface, overlay-free typed trigger, model-agnostic including subscription reuse and local inference, and permissively open source.

Steps to a result#

How many user actions each tool's documented happy path takes. A step is one discrete action: a selection, hotkey, click, typed prompt (one step regardless of length), app switch, paste, or confirm. Automatic insertion counts zero. Counted from each product's official documentation, July 2026. The third column is the asymmetry the first two hide: a passive layer surfaces problems and alternatives on its own, at zero asking cost. Without one, you either run the rewrite flow on suspicion or ship the weakness without knowing. The next table splits the same journeys at the moment the result first exists. Step counts measure the cost of one interaction, not its range: two tools can pay the same steps for very different capability, which is what the grid above measures.

Product Answer into your textinsert a generated answer where you type · fewer is better Rewrite what you wrotetransform existing text, ending in place · fewer is better Adjust what you never asked abouta suggestion surfaces on its own; steps to apply it · fewer is better
OpenCues 1type the query ending with _ 1type the instruction + _ after your text 2cue appears dimmed as you type; arrow to it, cycle
espanso 1 1type a saved trigger, it expands n/aexpanders replay snippets, no transform n/anothing surfaces unprompted
BoltAI 2type gpt: query → trigger hotkey 2 2type gpt: instruction → trigger hotkey n/anothing surfaces unprompted
Typilot 2type gen: prompt → trigger key 2select → Polish key 1ghost text appears; Tab 6
Wispr Flow 2 3hold shortcut → speak, release 3select → hold shortcut → speak, release n/anothing surfaces unprompted
GitHub Copilot 2 4type code, ghost text appears → Tab 5select → Cmd+I → type prompt → Enter → Keep 1ghost text appears; Tab 6
Grammarly 4click icon → type prompt → submit → Accept 4select → click icon → click quick prompt → Accept 2underline appears; click it, accept
Kerlig 4hotkey → type prompt → submit → click Insert in… 4select → hotkey → click action → click Insert in… n/anothing surfaces unprompted
Gmail Help me write 4click Help me write → type prompt → Create → Insert 3click Refine → click Formalize → Insert 1Smart Compose ghost text; Tab 6
Raycast AI 4hotkey → type question → Tab → Enter pastes back 5select → hotkey → search command → Enter → paste from result n/anothing surfaces unprompted
WritingTools 5hotkey → type in chat window → Enter → copy → paste 3select → hotkey → click preset, replaces in place n/anothing surfaces unprompted
Apple Writing Tools 6Control-click → Show Writing Tools → Compose → type → Return → Done 5select → Control-click → Show Writing Tools → click tone → Done n/anothing surfaces unprompted
ChatGPT web, alongside 6switch tab → type prompt → send → copy → switch back → paste 9select → copy → switch tab → type instruction → paste → send → copy → switch back → paste n/anothing surfaces unprompted
Monica / Sider 6open sidebar → type question → send → copy → refocus field → paste 4 5select → click toolbar action → copy → paste n/anothing surfaces unprompted

1. espanso expands a snippet you saved earlier, not an ad-hoc AI answer.

2. BoltAI documents the trigger reading the field's content; rewrite-in-place of existing text is not explicitly documented.

3. Wispr Flow's Command Mode is a paid-plan feature enabled once in settings.

4. Copilot's two-step path is code completion inside an IDE.

5. Monica's toolbar does not document reinsertion; counted as copy then paste.

6. Ghost text proposes the next words before they land (accept-first); cues propose revertable alternatives to words already written. Both count as applying one automatic suggestion.

Steps back to work#

The same fourteen journeys from the table above, split at the moment the result first exists. The left column is the ask; the right column is the end-lag: every gesture between the result existing somewhere and you being back at your caret with it in place. The two columns sum to the totals above.

Product Before the result existsthe ask · fewer is better After it existsend-lag: gestures until you are back writing · fewer is better
OpenCues 1type the query ending with _ 0the answer is already where you were typing
espanso 1type the saved trigger 0expands in place
BoltAI 2type gpt: query → trigger hotkey 0inserted in place
Typilot 2type gen: prompt → trigger key 0inserted in place
Wispr Flow 2hold shortcut, speak 0lands at your cursor
GitHub Copilot 1type code; ghost text appears 1Tab to land it
Grammarly 3click icon → type prompt → submit 1click Accept
Kerlig 3hotkey → type prompt → submit 1click Insert in…
Gmail Help me write 3Help me write → type prompt → Create 1click Insert
Raycast AI 3hotkey → type question → Tab 1Enter pastes into the previous app
WritingTools 3hotkey → type in chat window → Enter 2copy → paste into your app
Apple Writing Tools 5Control-click → menu → Compose → describe → Return 1click Done
ChatGPT web, alongside 3switch tab → type prompt → send 3copy → switch back → paste
Monica / Sider 3open sidebar → type question → send 3copy → refocus field → paste

Start-up against end-lag#

Both axes measured from the split above: steps to ask, and steps back to work. Clustered dots share exact coordinates. espanso is plotted from its snippet flow; there is no model behind it.

better ↗ slow to ask, instant landing one step in, zero steps back a journey both ways quick ask, long way back ← more steps to ask one step → ← long return zero end-lag → OpenCues OpenCues GitHub Copilot GitHub Copilot WritingTools WritingTools Apple Writing Tools Apple Writing Tools BoltAI Typilot Wispr Flow BoltAI · Typilot · Wispr Flow Grammarly Kerlig Gmail Help me write Raycast AI Grammarly · Kerlig · Gmail · Raycast ChatGPT web, alongside ChatGPT web Monica / Sider Monica / Sider
Voice Desktop assistants Built-ins Browser Dev tools Baseline (ChatGPT web) OpenCues

Taking back a bad edit#

What it costs to reject an AI change you did not want, before it lands and after. The after column is the one that matters: once a paste is plain text, undoing one part of it without losing the rest is manual work everywhere except where edits stay individually owned.

Product Before it lands After it landstake back one change, keep the rest
OpenCues ignore it, it is only dimmed 2 keys: arrow to the word, cycle back to your original; every other change stays
Grammarly dismiss the suggestion card the app's undo, linear: later edits unwind first
Apple Writing Tools Use Original while the popover is open app undo, the whole replacement at once
GitHub Copilot keep typing or Esc, the ghost fades editor undo, the whole suggestion
Gmail Help me write discard before Insert editor undo, the whole insertion
Kerlig close the panel before Insert app undo of the paste, wholesale
Raycast AI dismiss the window app undo of the paste, wholesale
WritingTools n/a: the paste replaces on action ctrl+z, the whole replacement
BoltAI n/a: inserts on trigger app undo of the insertion
Typilot n/a: inserts on trigger app undo of the insertion
Wispr Flow n/a: inserts on release app undo; keeping part of it means re-editing by hand
Monica / Sider ignore the sidebar app undo of the paste
ChatGPT web, alongside do not copy it app undo of the paste
espanso n/a: expands instantly backspace reverts the last expansion, only the last

What it adds to your screen#

Seamless means no side-effects on the workflow you already have: nothing new to look at, dismiss, or learn per platform. A count of the surfaces each tool introduces during the flows above.

Product New surfacespanels, popups, overlays introduced · fewer is better
OpenCues nonedimmed words in your own text; tips ride the host's existing secondary display (Chrome adds one movable status bar)
espanso none in the flowexpansions are typed keystrokes
GitHub Copilot 1-2ghost text in the buffer; inline-chat box on demand
Typilot 1ghost-text layer
Wispr Flow 1on-screen recording indicator
Gmail Help me write 1the Help me write dialog inside compose
Apple Writing Tools 2context-menu entry, then the popover panel
Kerlig 1the Kerlig panel over your app
Raycast AI 1the launcher window over your app
WritingTools 1-2hotkey popup; separate chat window
BoltAI 1-2inline output in the field; separate chat and command windows
Grammarly 3-4floating widget button, underline overlay, suggestion cards, generative panel
Monica / Sider 2the sidebar, plus a floating icon on every page
ChatGPT web, alongside its own tabthe destination is the surface