A fast, cross-platform clipboard-history service that any app can query, listen to, and drive.
Clipwell is built as a headless daemon with a thin UI on top. The daemon watches the system clipboard, stores typed history in SQLite, and exposes everything over a public API — REST, WebSocket/SSE, and MCP — so the picker UI, the CLI, editor extensions, and AI agents are all just clients of the same contract. Nothing is hidden behind a private backdoor.
The daemon, a native Avalonia picker, a Solid + Tauri web UI, the CLI, MCP (stdio + HTTP), a plugin host, and two docs sites all ship. See the ADRs under
engineering/.
The product updates page pairs dated
source changes with light and dark product captures. Film source and its
review-gated narration workflow live in media/changelog/.
- Queryable by anything — REST for one-shot calls, WebSocket/SSE to live-stream clipboard changes, MCP so Claude (and other agents) can read and act on your clipboard history.
- Cross-platform — Windows, macOS, and Linux behind one clipboard-watcher interface.
- Fast — the picker is pre-warmed and shows in single-digit milliseconds on the global hotkey (Alt+Shift+V on Windows). It runs in the background with a tray icon.
- Extensible — typed clipboard items and content-aware actions load as plugins.
daemon/ clipboard watcher + SQLite history + REST/WS(SSE)/MCP server (.NET 10)
protocol/ shared domain model + plugin contract (IClipDetector / IClipAction)
cli/ clipwell list/pin/clear — a reference API consumer
ui/ native picker (Avalonia 12, cross-platform)
webui/ web-view picker (Solid + Vite + Tailwind, Bun) wrapped with Tauri 2
mcp/ stdio MCP wrapper that proxies to the running daemon
plugins/ sample plugin (IClipDetector / IClipAction) + plugin docs
docs/ user-facing feature documentation site
engineering/ how-it-was-built engineering site (architecture, ADRs, perf)
Requires the .NET 10 SDK.
dotnet build
dotnet run --project daemon # clipboard daemon on http://127.0.0.1:8787
dotnet run --project ui # the native picker (connects to the daemon)
dotnet run --project cli -- list # reference CLI clientThe web UI (webui/) is a second picker on a web stack. Open it in any
browser at http://127.0.0.1:8787/app while the daemon runs, or build the desktop app:
cd webui && bun install
bun run tauri dev # desktop app (needs Rust + platform webview tools)The daemon exposes the same history three ways:
- REST —
GET /api/clipboard,/counts,/search,/item/{ts},/settings,/image/{ts},POST /delete,/clear,/pin,/sensitive,/rename,/edit. Machine-readable spec atGET /openapi/v1.json(also checked in atopenapi/clipwell.v1.json). List and search acceptexcludeSensitive=truefor clients that must omit flagged items. - Live —
GET /api/clipboard/stream(SSE) and/api/clipboard/ws(WebSocket) push aclipboard.changedevent on every capture. - MCP — over HTTP/SSE in-daemon at
POST /mcp, or themcp/stdio server, both exposingclipboard_recent,clipboard_search,clipboard_get_text, andclipboard_clear. Point an MCP client at the/mcpURL or the builtClipwell.Mcpexecutable (CLIPWELL_API, defaulthttp://127.0.0.1:8787). MCP list/search omit flagged sensitive items, and get-text refuses them.