opencues / opencues

Listed

Turn any text field into a two-way LLM channel: it reads what you write and fills what you ask. Flags a slip as you type, answers anything you end with _. Claude Code, OpenCode, Gemini CLI, shell, Chrome, DeepSeek Harness. Model-agnostic, open standard, no chat window.

masterModelTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:opencues/opencues

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit d2b356bSynced Aug 18, 2026
OpenCues



OpenCues



Associations:Mod of r/ClaudeAIOpenSourceIRLAnthropic AmbassadorCerebras Ambassador




Turn any text field into a two-way LLM channel. It reads what you write and fills what you ask: catching a slip as you type, or answering the moment you end a line with _. A drop-in for Claude Code, OpenCode, Gemini CLI, your shell, and Chrome. Model-agnostic, output you review before it sends, an open standard with no chat window.

The model comes to your cursor, both ways. Cues react to what you've already written and surface a fix or a sharper line inline, unprompted. Blanks act on demand: end a line with _ and the model fills in the rest. No chat window, no copy-paste, no context switch.

Video placeholder — hero demo

OpenCues is platform, model, and provider agnostic, engineered from the ground up to enable native inline AI.

You typeYou get
let's ship it Thursday the 19th↳ the 19th is a Friday
we should probably go ahead and refactor this↳ we should refactor this
hey can u send me that report when u get a sec make this formal _Could you please send me that report at your earliest convenience?
4 + 4 = _4 + 4 = 8
hello world translate to japanese _こんにちは世界
draft an email to my landlord asking for a rent reduction _(the email, written)
ffmpeg command to convert a video to web-ready mp4 _ffmpeg -i input.mov -c:v libx264 -preset slow -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4

Rows with _ are blanks: you ask, the model fills in. Rows without are cues: the model speaks up on what you wrote, no prompt.

Apache-2.0 LicenseOpen StandardBlanks.mdCues.md





Quickstart

npm install -g opencues              # needs Node 22+ and git
opencues set-key cerebras csk-...    # cerebras.ai — free tier, lowest latency
opencues install claude-code         # or: opencode | gemini-cli | chrome | shell | dsh
claude-cues                          # launch — native `claude` is untouched

Full walkthrough, prerequisites, and per-host detail: docs/install.md. opencues doctor diagnoses anything that looks wrong.

Video placeholder — quickstart walkthrough

OpenCues CLIFeatures





Integrations

HostStatusInstall
Claude CodeAvailableopencues install claude-code
OpenCodeAvailableopencues install opencode
Gemini CLIBetaopencues install gemini-cli
ChromeBetaopencues install chrome
ShellBetaopencues install shell
DeepSeek HarnessBetadsh plugin --profile web add @opencues/dsh

Each pins its own upstream fork and never touches your native host install. DeepSeek Harness is the exception: it has a real plugin system, so there is no fork to pin and no OpenCues CLI step — see integrations/dsh/README.md.

⚠️ Windows: not supported natively, run inside WSL2 (see docs/install.md).

Supports:OpenCodeClaude CodeGemini CLIChromeShell





What you get

FeatureWhat it does
BlanksType _ for free-form generation, translation, formatting, full rewrites, or keyword-bound system actions (volume _, weather _).
Sentence rewritesCycle a whole sentence to a different register (formal, concise, ...) seamlessly, no _ needed.
Word cuesNavigate to a single word and cycle a smaller LLM-suggested alternative.
Live actuatorsvolume _ reads the real level and leaves a knob you can turn: Ctrl+Alt+↑/↓ or a bare _ moves it, and the device follows.
Dismissing a cueA cue that only tells you something can be silenced from its own note: _ once quiets it for a while, _ again forgets it for good. opencues dismissals lists what you forgot and turns any of it back on.
Session-contradiction cues (opt-in)Flags a draft that goes against a decision made earlier in the same coding session, on any host with a transcript.
Ask-cues (opt-in)Turns a vague sentence into an inline question with cyclable answers, using the assistant's own clarifying prompt.
Personal + ambient context (opt-in)my email _ substitutes your real address; fluid lookups can read the page you're on.
Hot-reloadEvery .md config picks up edits in ~2s, no restart.

Full feature catalogue (44 concepts): docs/features/README.md. Running a lot of these at once? opencues usage prices every LLM call your hosts have made, across features, so the total isn't a guess.

Video placeholder — feature tour





Configuration & LLM providers

OpenCues

Config lives at ~/.cues/ — one OPENCUES.md for runtime settings, plus per-surface source folders. Seven providers supported; set an env key or opencues set-key and you're done.

Full reference: docs/configuration.md · docs/guides/llm-providers.md (switching provider/model, free mode, failover).

Providers:Cerebras SystemsGroqGeminiAnthropicOpenAI





Security

OpenCues has no tool handlers or exec layer for LLM output — no MCP-tool execution, no agentic actions, no side-effect channel. Worst-case, an LLM response lands as user-visible text in the buffer you review before submitting. That single invariant is what keeps prompt injection a UX failure instead of a data-exfiltration channel, across every surface below.

23 of 27 tracked attack classes closed, 3 closed-with-caveat, 1 tracked for the future pack registry (full audit table).

DefenseWhat it covers
Sandbox isolationThird-party blank JS runs in a real V8 isolate (isolated-vm) — its own realm, own intrinsics, no sandbox-escape via constructor-chain pivots
Capability gatesA blank only gets network/llm/storage/secrets access if declared; secrets without a matching host binding are refused at load time
Resource quotasSliding-window caps on fetches, LLM calls, and storage writes — no polling hammer, no runaway LLM burn
Output sanitizationBlank output is stripped of HTML/script tags, zero-width chars, and bidi overrides before it reaches the buffer

Check a pack before trusting it:

opencues review ./untrusted-pack/

Full threat model: docs/architecture/security-audit.md. Reporting a vulnerability: SECURITY.md.





Contributing

OpenCues

WhatWhere
New host integrationdocs/guides/adding-an-integration.md
New cue/blankdocs/guides/adding-a-cue-blank.md
Working on the reference runtimeCONTRIBUTING.md
New to the termsdocs/glossary.md

Join the community — questions, feedback, and the people building alongside you. We're also part of OpenSourceIRL, a community for people building in the open.

Community:ContributorsX / TwitterRedditInstagram





License

Apache License 2.0.





DesignAuthor

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

Plugin manifestDetected
TestsDetected
Security policyDetected
Contributing guideDetected
DocumentationDetected
ExamplesDetected

Repository information

Language
TypeScript
License
Apache-2.0
Latest release
v0.7.0
Last updated
Aug 18, 2026, 2:12 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.