macOSLinuxarm64 · x64MIT
Your clipboard,
everywhere.
Peer-to-peer clipboard sync over encrypted SSH. Copy here, paste there — text, images, files, rich content, native formats intact. Written in Rust ackchyually.
then run ssh-clipboard — that's the whole setup
0 relays·0 accounts·0 open ports·∞ machines
* native
macOS pasteboard plus Linux Wayland and X11 — real system clipboards, not terminal escape tricks.
* private
Persistent peer-to-peer SSH. No relay, no account, no open port, no new encryption key to manage.
* faithful
Preserves every available clipboard representation — rich text, images, files — not just text or PNG.
* invisible
Raycast and other clipboard managers see ordinary system clipboard writes. Nothing to configure.
* fast
Raw bytes over persistent connections, with deduplication and newest-value queues.
* self-updating
Daemons gossip verified versions peer-to-peer and converge on the latest stable release — no coordinator.
# Install
One package, two commands. The npm package is just the installer — the thing that runs is a native Rust binary with a per-user background service (launchd on macOS, systemd on Linux).
$ npm i -g ssh-clipboard
$ ssh-clipboard
You'll need:
- macOS or Linux (Wayland or X11), on arm64 or x64
- Node ≥ 18 — only for
npm install; the daemon has no Node dependency - Passwordless SSH between your machines — Tailscale SSH is perfect, plain old
~/.sshkeys work too
# Quick start
Run ssh-clipboard with no arguments. The first-run TUI offers compatible online machines from Tailscale when it's installed, or accepts any passwordless SSH destination. For each peer it:
- verifies the connection actually works,
- installs the right native binary for that platform over SSH,
- starts the per-user background service on both ends.
That's it. Copy on one machine, paste on another. After setup it just feels like one clipboard — there is no step two.
$ ssh-clipboard status
running as macbook (node-a1, pasteboard, version 0.2.0)
connected: fedora
connected: macbookserver
# Commands
ssh-clipboard- First run: setup TUI. After that: the live monitor dashboard.
ssh-clipboard setup- Add, verify, or repair peers. Re-runs installation where needed.
ssh-clipboard monitor- Watch clipboard values and peer health in a Ratatui dashboard. --plain streams readable lines, --json streams NDJSON.
ssh-clipboard status- Daemon and connection status. --json for automation.
ssh-clipboard update- Install the latest stable release. --check compares versions without installing.
ssh-clipboard service- Manage the per-user background service: install, start, stop, restart.
Everything human-readable has a machine-readable twin: status --json for health checks, monitor --json for a newline-delimited event stream you can pipe into whatever you're building.
# How it works
┌──────────────┐ encrypted SSH ┌──────────────┐ │ macbook │ ◀═══════════════════════════▶ │ fedora │ │ pasteboard │ persistent · deduplicated │ wayland/x11 │ └──────────────┘ newest-wins └──────────────┘
A small Rust daemon on each machine watches the system clipboard through native backends — the macOS pasteboard, or Wayland/X11 on Linux. When the clipboard changes, it ships the raw bytes of every available representation to its peers over persistent SSH connections and writes them back natively on the other side.
There's no relay server, no cloud account, and no new cryptography — transport security is exactly the SSH trust you already have between your machines. Values are deduplicated, and per-peer queues always deliver the newest value rather than replaying history.
# Updates
Every daemon independently checks npm for the latest stable release and gossips its verified desired version to connected peers, so any online machine can trigger the whole mesh to converge — there is no permanent update coordinator.
Packages are accepted only after the npm SHA-512 integrity hash, the bundled SHA-256 manifest, the executable target, and the reported binary version all agree. Updates keep the previous executable around, swap the live binary atomically, and let launchd/systemd restart the daemon.
$ ssh-clipboard update --check
current: 0.2.0
latest: 0.2.0
From the team behind FormKit, Tempo, dmux, AutoAnimate, and Drag and Drop — Standard Agents is an open standard for creating domain-specific agents you can distribute and compose together to form safe, efficient, and effective agents. Join the early access waitlist below.