!!! AI agent–generated app; no manual coding involved. !!!
Windows clipboard manager with stream-based history, plugin pipeline, and Markdown export.
- Win32
AddClipboardFormatListener/WM_CLIPBOARDUPDATEon a hidden host window - 100 ms debounce and sequence-number dedup
- Sticky own-write suppress: own
SetDataObjectupdates are ignored by sequence after write - Privacy filter skips password-manager / exclude formats (
Clipboard Viewer Ignore,ExcludeClipboardContentFromMonitorProcessing, zeroedCanIncludeInClipboardHistory/CanUploadToCloudClipboard) - Source process from
GetClipboardOwner(fallback: foreground window)
- Raw multi-format capture with OpenClipboard retries
- Plugin pipeline: first matching format plugin by priority, then enrichers
- Built-in formats: text, HTML, image, files, generic binary fallback
- Content-hash (SHA-256) deduplication before save
- Named streams with icons; default
inboxstream - Drag-and-drop fragments between streams
- Routing engine (regex / kind / source process / format rules) — persisted in SQLite; no rule editor UI yet (without rules everything goes to inbox)
- Main window: streams list + fragment list (kind, title, preview, time)
- Tray icon: show / exit; minimize hides to tray
- Dark / light theme (persisted in settings)
- Context actions: paste to active window, export to folder
- Editable fragment titles
- Rebuild clipboard payloads from blob store
- Paste to last external foreground window (activate + Ctrl+V)
- Export fragment or stream to a folder as Markdown with YAML frontmatter
- Optional attachments under
attachments/(content-addressed copies) - Filename from title slug with uniqueness suffixes
dotnet build ClipStream.sln
dotnet test ClipStream.sln
dotnet run --project src/ClipStream.AppPush a version tag to publish a self-contained Windows build to GitHub Releases:
git tag v0.1.0
git push origin v0.1.0The Release workflow runs tests, publishes win-x64 (self-contained single-file), zips the output, and attaches it to a new GitHub Release.
| Project | Role |
|---|---|
ClipStream.App |
WPF UI, tray, clipboard host window, themes |
ClipStream.Core |
Domain models and service contracts |
ClipStream.Clipboard |
Win32 listener, capture, privacy filter, paste |
ClipStream.Infrastructure |
SQLite, blob store, plugin loader, routing |
ClipStream.Export |
Markdown directory exporter |
ClipStream.Mcp |
Embedded HTTP MCP server (Streamable HTTP) |
ClipStream.Plugins.Abstractions |
Plugin contracts |
ClipStream.Plugins.BuiltIn |
Format plugins and paste/export actions |
| Path | Contents |
|---|---|
%AppData%/ClipStream/clipstream.db |
SQLite (streams, fragments, payloads, routing rules) |
%AppData%/ClipStream/blobs/ |
Content-addressed binary payloads |
%AppData%/ClipStream/settings.json |
UI settings (theme) and MCP (Enabled, Port, Secret) |
%AppData%/ClipStream/plugins/*.dll |
User plugins |
While ClipStream is running it can expose a local Model Context Protocol server over Streamable HTTP:
- URL:
http://127.0.0.1:17890/mcp(loopback only) - Auth:
Authorization: Bearer <secret>(orX-ClipStream-Secret) - Secret is generated on first launch and stored in
settings.json - Tray menu: enable/disable MCP, copy client config, rotate secret
Example Cursor / MCP client config (also available via Copy MCP config in the tray):
{
"mcpServers": {
"clipstream": {
"url": "http://127.0.0.1:17890/mcp",
"headers": {
"Authorization": "Bearer <secret-from-settings>"
}
}
}
}Tools cover listing/creating/updating/deleting streams and clips (text clips). Paste and Markdown export are not exposed via MCP yet.
Built-in plugins are registered via DI. Custom DLLs implementing IClipStreamPlugin can be placed in %AppData%/ClipStream/plugins/.
See Plugin API for interfaces, loading rules, and examples (format, enricher, fragment/stream actions).
