Capture live UI from your terminal app and hand it to an agent. Clipboard by default, opt-in MCP queue.
Anscribe lets you press a keybinding inside an OpenTUI app, point at the live UI, type an instruction, and ship the resulting Capture to your agent — either by pasting from the clipboard or by letting the agent pull it through a local MCP server.
import { installCapture } from "@anscribe/opentui";
import { createCliRenderer } from "@opentui/core";
const renderer = await createCliRenderer({ useMouse: true });
installCapture(renderer, { keybinding: "ctrl+g" });That's the whole setup. Press ctrl+g, select a renderable, press a to add an instruction, press enter to commit. The Capture lands on the system clipboard as a markdown payload — zero configuration, zero filesystem footprint.
Clipboard mode writes via OSC52, so it works over SSH, inside dev containers, and on terminals without native bindings or permission prompts.
bun add @anscribe/opentuiFor the agent-pull loop (persistent queue + MCP server):
bun add @anscribe/mcpClipboard (default). Commit a Capture and it lands on the system clipboard as markdown. Paste into Claude Code, Cursor, opencode, or anywhere else. No daemon, no filesystem footprint.
MCP (opt-in). Install @anscribe/mcp, add import "@anscribe/mcp/sink" at the top of your entry file, and register the anscribe-mcp stdio server with your agent. Captures still land on the clipboard and in a project-local SQLite store at .anscribe/captures.sqlite; agents pull pending Captures and resolve them through MCP tools. See @anscribe/mcp for setup.
| Package | Purpose |
|---|---|
@anscribe/opentui |
installCapture for OpenTUI Core apps + headless <Anscribe /> React component |
@anscribe/react |
Cross-framework React DevTools enrichment (consumed by OpenTUI; intended substrate for future React-tree TUI adapters) |
@anscribe/mcp |
SQLite Capture Store + anscribe-mcp stdio server |
@anscribe/core |
Capture model + CaptureSink registry. Peer dependency of every adapter package — bun add @anscribe/opentui pulls it in transitively. |
MIT © msmps