Project Breakdown
This project should still be built in parts so clipboard ingestion stabilizes before UI polish or advanced agent integration is attempted, but phase 1 already delivered more than storage alone. The breakdown below reflects the current implementation order and what remains.
Part 1: Foundation baseline
Status:
- merged
Goal:
- prove the data model, local store, config layer, and repo automation before real clipboard ingestion exists
Delivered:
blip-coredomain and SQLite-backed storage- numbered DB migration baseline
- transactional write paths for state plus audit events
- persisted-data validation for stored enum and JSON values
blip-configconfig discovery and persistenceblip-apishared response modelsblip-clipboardplatform placeholdersblip-clibootstrap commands for workspaces and demo blipsblip-daemonbootstrap binary- GitHub Actions quality gates
Questions answered in this phase:
- what is a
blip - what is a
workspace - what is an
audit event - how should the local store be initialized
- how does active workspace state behave
Part 2: Daemon and clipboard ingestion
Goal:
- make
blipdthe runtime owner for clipboard observation and persisted inbox ingestion
Deliverables:
- daemon lifecycle and long-running runtime loop
- platform abstraction for clipboard reading and watching
- ingestion pipeline into
inbox - dedupe policy for repeated copies
- clear ownership boundary between
blipd,blip-clipboard, andblip-core - daemon-facing local API or IPC surface
Questions answered in this phase:
- how reliable is cross-platform clipboard observation
- what should polling vs evented behavior look like
- what metadata can we capture consistently
- where should the daemon/client boundary live
Constraint:
blipdowns clipboard observation; the CLI and desktop app should not watch the clipboard directly- this phase is text-first; non-text payloads should remain unsupported or represented as no readable text until the rich clipboard phase defines storage, previews, and access policy
Part 3: CLI as a daemon client
Goal:
- keep the system usable from the terminal without bypassing daemon policy
Deliverables:
blipCLI wired through the daemon boundary- shell-friendly output modes
- human-readable table output
- routing, search, bundle, and workspace commands
- clear errors on stderr and stable data output on stdout
Questions answered in this phase:
- what is the minimum command set that makes the tool useful
- how should active workspace selection behave in scripts
Implementation note:
- direct
blip-coreaccess is acceptable for early bootstrap/admin commands while the daemon API is incomplete - commands that represent agent reads, policy-sensitive reads, or long-running
runtime behavior should go through
blipd
Part 4: Workspace routing and policy
Goal:
- allow user-controlled separation of concurrent tasks with explicit read policy
Deliverables:
- create/delete/list workspaces
- assign blips to workspaces
- sticky workspace capture mode
- policy gates for agent visibility
- read audit trail
Questions answered in this phase:
- should
inboxalways exist - how should sticky mode interact with manual routing
- how do users recover misrouted items
- should agents ever read
inbox
Part 5: Desktop App
Goal:
- create the main visual management experience
Deliverables:
- Tauri app
- React UI
- inbox/workspace views
- detail panel for individual blips
- audit panel
- settings view
Questions answered in this phase:
- what should the routing UX look like visually
- do users prefer quick route, drag/drop, or picker overlay
Part 6: Hotkeys and Fast Routing UX
Goal:
- make workspace routing fast enough for real multitasking
Deliverables:
- global hotkey support
- latest-blip routing shortcuts
- workspace picker overlay
- sticky workspace toggle
Questions answered in this phase:
- should routing be explicit or mostly sticky
- should the overlay appear after every copy or only on demand
Part 7: Classification and Redaction
Goal:
- make blips safer and more useful
Deliverables:
- deterministic type detection
- secret-like pattern detection
- token estimation
- content tags
- optional redaction transforms
Questions answered in this phase:
- which redactions should be automatic vs opt-in
- what metadata is useful enough to display in UI
Part 8: Rich Clipboard Content
Goal:
- make screenshots, copied images, files, and formatted clipboard payloads usable as first-class blips without turning the clipboard layer into storage, policy, or UI code
Why this is separate from phase 2:
- text clipboard ingestion can use
Stringpayloads and simple previews - screenshots and images require binary storage, thumbnails, hashing, metadata, retention, and stricter privacy defaults
- copied files and rich text formats have platform-specific clipboard semantics that need deliberate API boundaries
- agent access to binary payloads needs explicit policy because screenshots often contain secrets, private messages, browser tabs, terminal output, and customer data
Subphases:
- Payload model and schema design
- replace the text-only event shape with a typed payload model
- represent text, image, file list, HTML, RTF, and unknown platform formats
- add MIME type, original platform format, size, hash, and preview metadata
- decide which metadata belongs in SQLite and which belongs beside blob files
- preserve compatibility with existing text blips during migration
- Blob storage and lifecycle
- choose a local blob directory layout under the configured data directory
- store binary payloads by content hash or stable blob id
- keep SQLite records transactional with blob writes and cleanup
- add retention, garbage collection, and orphan recovery behavior
- ensure backups and migrations can reason about blob references
- Platform capture
- detect image clipboard formats on macOS, Linux, and Windows
- support common screenshot flows, including clipboard screenshots and copied image data from browsers/editors
- detect copied file lists without eagerly importing large files
- capture HTML/RTF as formatted payloads while preserving plain text fallback
- expose platform capability metadata so callers can explain unsupported types
- Preview and inspection
- generate bounded thumbnails for images and screenshots
- show stable summaries in CLI output without dumping binary data
- show image/file/rich-text previews in the desktop detail panel
- record width, height, MIME type, and byte size where available
- avoid rendering untrusted HTML directly in privileged UI contexts
- Policy, privacy, and agent access
- default rich binary payloads to no direct agent access until explicitly routed or allowed by policy
- audit preview, export, and raw payload reads separately from list views
- add workspace-level controls for capturing screenshots and images
- add redaction hooks for screenshots without requiring OCR in this phase
- make accidental capture easy to delete from both SQLite and blob storage
- CLI, daemon API, and export
- add daemon APIs for metadata list, thumbnail fetch, and raw payload fetch
- add CLI commands to inspect metadata and export payloads by id
- keep full binary retrieval explicit and policy-checked
- make shell output predictable for non-text content
- ensure desktop and CLI use the same daemon API
- Dedupe and reliability
- dedupe image payloads by content hash
- separate repeated copy events from duplicate payload storage
- test crash recovery around partially written blob files
- test large payload limits and backpressure in the daemon loop
- verify behavior across supported OS clipboard implementations
- maintain a manual rich payload reliability checklist for macOS, Linux X11, Linux Wayland, and Windows in rich-payload-reliability.md
Deliverables:
ClipboardPayloador equivalent typed payload API inblip-clipboardblip-coreschema migration for rich payload metadata and blob references- blob store abstraction with tests for write, read, delete, GC, and recovery
- platform image/screenshot detection for macOS, Linux, and Windows
- file-list and rich-text detection with plain-text fallback
- daemon ingestion path for rich payloads
- desktop previews and CLI metadata/export commands
- privacy controls, audit events, and policy checks for rich payload reads
- migration and compatibility tests for existing text-only blips
Questions answered in this phase:
- which clipboard formats are first-class product surfaces
- which rich payloads are captured by default and which require opt-in
- how should screenshots be previewed without exposing sensitive content too casually
- how should file-list clipboard entries differ from imported file content
- what size limits should the daemon enforce
- how should duplicate payload storage differ from duplicate copy events
- what metadata can be captured consistently across macOS, Linux, and Windows
Non-goals:
- OCR as a requirement for screenshot ingestion
- cloud storage, cloud thumbnailing, or remote media analysis
- making the CLI or desktop app independent clipboard watchers
- rendering untrusted HTML as active desktop UI
Part 9: Packaging and Distribution
Goal:
- make it installable and stable
Deliverables:
- runtime-first distribution model
- desktop bundles for macOS, Linux, Windows
- daemon install/start behavior
- CLI install docs
- platform config, data, blob, IPC, log, first-run, and uninstall expectations in runtime-distribution.md
- desktop sidecar, signing, installer, package, update, and smoke-check expectations in desktop-bundles.md
- upgrade strategy
Packaging rule:
- desktop bundles must include daemon + CLI
- CLI-only installs are supported
- desktop-only installs are not supported
Part 10: Documentation Site and Public Docs
Goal:
- publish the repository's documentation in a browsable site so product, architecture, and developer guidance are easy to navigate and maintain
Why this is its own part:
- the repository already uses Markdown for technical notes and roadmap docs
- a docs site adds navigation, search, layout consistency, and a stable entry point for users and contributors
- the docs surface should stay aligned with implementation phases instead of becoming a disconnected marketing site
Subphases:
- Site scaffold and information architecture
- choose the docs site generator and theme, with Docusaurus as the default recommendation unless another static docs stack proves materially better
- define the sidebar and top-level navigation
- decide what belongs in the public docs site versus raw repository Markdown
- wire local dev preview and build commands
- Content migration
- move existing architecture and roadmap docs into site pages
- preserve links between phases, design notes, and reference material
- clean up duplicated or stale sections as content is migrated
- maintain source-of-truth references for repository-only notes
- Product and architecture docs
- document the problem statement, runtime model, and data flow
- document daemon ownership, clipboard boundaries, and workspace policy
- document phase definitions in a user-friendly way
- document security and privacy defaults clearly
- Reference docs
- document CLI commands and expected outputs
- document daemon startup, health checks, and operational expectations
- document config, data, and log locations
- document common troubleshooting and backup/recovery steps
- Contributor workflow docs
- document branching, PR review, and issue workflow
- document coding standards and test expectations
- document how to update the docs when implementation phases move
- document release and versioning conventions
- Publishing and maintenance
- add CI checks for docs build correctness
- add a publish workflow or deployment target
- decide whether docs are versioned alongside releases
- keep docs and roadmap phases in sync over time
Deliverables:
- docs site scaffold with navigation and local preview
- imported architecture, roadmap, and reference content
- CLI/daemon/user workflow pages
- contributor and release workflow docs
- docs build and publish automation
- maintenance guidance for keeping docs aligned with implementation phases
Questions answered in this phase:
- which docs belong in the browsable site versus raw repo Markdown
- should the docs stack be Docusaurus or another static site generator
- how much versioned documentation is needed for the project lifecycle
- how should docs updates be reviewed alongside code changes
Success condition:
- documentation is easy to browse, searchable, and versioned well enough that a new contributor or user can orient themselves without reading the repository Markdown tree directly