All selected work
Permanent Clipboard HistoryLocal data & native software

A searchable clipboard history for macOS

A searchable macOS clipboard archive designed to keep old entries useful without keeping the entire archive in memory.

Personal macOS app · Private source

Durable entry filesFind something…Rebuildable index
Architecture illustration

The problem

A clipboard history grows continuously. Loading all of it into memory makes a long-lived tool less useful, while treating a search database as the only copy makes recovery and replication harder.

What I built

I built the native capture and search app, separating permanent entry files from the temporary indexes that make them fast to find.

  • A SwiftUI and AppKit application that captures clipboard entries and makes them searchable.
  • Immutable per-entry archive files, a recent in-memory window, and a local SQLite index for older history.
  • Optional file replication through Syncthing, while keeping the derived search database local to each device.

The engineering decision

Keeping the archive separate from the index

An entry file is the durable record. The SQLite database is a derived view that can be rebuilt. That separation makes the archive easier to recover and avoids trying to synchronize an actively written database.

The app keeps a recent window in memory and uses its on-disk index for older entries. The important boundary is between keeping information and accelerating access to it: the second should be replaceable without sacrificing the first.

Interactive model · synthetic data

Find an old idea.

Try “typography” in All time, then rebuild the lookup index.

Entry filesFour invented snippets
Derived lookup index

Past 60 days, plus pinned entries.

Palette notes

4 days ago

Sea glass, ink, and a small apricot accent.

Text

Release checklist

12 days ago

Review the diff. Verify the build. Keep the previous release.

Text

Layout sketch

Pinned

Make the hierarchy clear before adding motion.

Text

The model is ready. Sample files are separate from the lookup index.

An in-memory explanation of the design, not the macOS app or a running SQLite database.

What I checked

  • The personal app implements entry-file storage, bounded recent history, and a separate SQLite archive index.
  • Search and release history record fixes to cached archive lookup and atomic application updates.
  • The app can rebuild its local search index from the saved entry files.

Limits

  • This case study covers my personal macOS application.
  • The interactive example uses invented snippets and illustrates the storage decision. It does not access your clipboard.

Tools and foundations

I built the application, archive model, and search integration. AppKit supplies clipboard access, SQLite supplies the index, and optional cross-device file replication is provided by Syncthing.