Prime Radiant
← Back to Projects

Clipfan

clipfan is one clipboard for every Mac and Linux machine you work on: copy on any of them and paste on any other, including screenshots into Claude Code and Codex CLI on a headless remote.

What you get

Every machine you work on keeps its own clipboard. The Mac has one. The Linux box you SSH into has another. tmux holds its own paste buffers on top of both. Copy a line on one machine and it exists only there. A screenshot is the worst case: Claude Code waits in an SSH session on a headless server, the picture sits on your Mac, and no clipboard connects them. So you copy the file over by hand, or you wire up OSC 52 and learn that Apple Terminal ignores it, or you give the server a fake X display to move one picture. (README § Copying from a remote, README § Codex CLI image paste)

clipfan removes the boundary. Your machines share one clipboard as a fleet.

Using it

Day to day you press the keys you already press: ⌘C where the text is, ⌘V or prefix-] where you want it, ⇧⌘V when you want something from earlier.

The same clipboard is scriptable. clipfan copy reads stdin and sends it to the fleet; clipfan paste prints the current clip; the daemon answers a plain health check on its loopback port:

$ echo "one clipboard, every host" | clipfan copy
$ clipfan paste
one clipboard, every host
$ curl -s http://127.0.0.1:7853/v1/health
ok

Captured from a live fleet host on 2026-06-11. (ROADMAP § Done, ARCHITECTURE § Local HTTP API)

Running it

clipfan is two pieces. A Go daemon runs on every host: it watches the local clipboard, serves a signed API on loopback, and syncs with its peers. Clipfan.app, the menubar app, is the control surface on the Mac: it installs the local daemon on first launch, adds hosts over SSH, and shows fleet health. (README § How it works)

There is no central server. Clips travel between your hosts over authenticated SSH streams, encrypted with AES-GCM inside the stream, and every host relays clips onward, so machines that cannot reach each other still converge through one that can. (SECURITY § What clipfan protects, ARCHITECTURE § SSH sync payload, README § How it works)

One shared key defines the fleet. Every host holding it is a full peer: it can send clips, read clips, and call the local API. Give the key only to machines you already trust with your clipboard. (SECURITY.md)

The daemon's control surface stays on the machine. Out of the box the HTTP API binds to 127.0.0.1:7853, control endpoints take signed, replay-checked requests only, and the one unauthenticated endpoint answers ok. Config, history, and images live under your user's XDG directories as 0700 directories and 0600 files. The daemon runs as your user: a systemd user unit on Linux, a LaunchAgent on macOS. (SECURITY § What clipfan protects, ARCHITECTURE § Local HTTP API)

Adding a host is one dialog. Settings → Fleet → Add peer lists your Tailscale hosts, or takes a hostname and SSH user; the app stages the right binary for the host's architecture, installs the service over SSH, and the peer joins. Releases are Developer ID signed and notarized, the app updates itself over Sparkle, and you push daemon updates to peers from the same Fleet pane. (README § Getting started, ROADMAP § Done)

What it costs you: a daemon on every host; one trust domain per fleet, because the key is all or nothing; upgrades done together, because mixed-version fleets fail closed; and on macOS LAN fleets, the Local Network permission gate that Sequoia puts on background daemons. The app holds that grant and relaunches the daemon under it, and fleets routed over Tailscale never hit the gate. (SECURITY § What clipfan protects, README § macOS launchd vs Local Network privacy)

Who it's for and who it's not

clipfan fits a developer who works several machines at once: a Mac in front of you, Linux hosts over SSH, tmux everywhere, and AI coding tools running on the remotes. It assumes every machine in the fleet is one you already trust.

It is the wrong tool for sharing a clipboard between people or tenants: one fleet is one trust domain. It does not run on Windows. It is proprietary software with public source, so a team that requires an OSI license should pass. (SECURITY.md, README § Install, LICENSE)

Limitations

Getting started

Rendered at build time from prime-radiant-inc/clipfan docs/BROCHURE.md · claims as of 9b9970e · source on GitHub