Local Only
Raw captures, transcripts, embeddings — all on your Mac. Friend status still flows through an encrypted relay that only ever sees ciphertext.
- Zero outbound capture traffic
- Friend status works (E2EE relay)
- Agents must run on your machine
A private context home · macOS
Fisherman runs in your menu bar. It captures your screen locally, turns it into a one-line status, and shares only that — with friends, or with scoped agents. Raw frames never leave your laptop unless you say so.
Open source · Apple Silicon & Intel · No account required
How it works
Local-first by default. No account to make, no cloud to opt into, no friends required. Each step below is optional — stop at step 2 and you have a personal screen journal that never leaves your Mac.
One command. Installs Fisherman.app into
/Applications and a background daemon
into ~/.fisherman. No sudo needed.
$ curl -fsSL https://raw.githubusercontent.com/sxysun/fisherman/main/install.sh | bash
macOS will ask the first time the daemon tries to capture. After that, capture runs silently every 5 seconds — compressed, OCR'd, stored on your disk. The frames never touch the network in Local mode.
Fisherman captures what's on your screen to build your local context history.
Default is Local. Nothing leaves your Mac. You can move to Fisherman Cloud (attested, multi-tenant) or your own server later — history comes with you.
Send a friend code over Signal to see each other in the notch. Generate a scoped, expiring token to let an agent read your captures or transcripts. Revoke either without rotating your Fisherman identity.
One product · three context homes
Raw captures, transcripts, embeddings — all on your Mac. Friend status still flows through an encrypted relay that only ever sees ciphertext.
A managed backend running in a TDX-attested enclave. Multi-tenant ingest, fast queries, remote agents. Every new release must be reviewed and re-approved by your client before it gets your data.
The same server image, on your hardware. Bring your own S3-compatible storage and Postgres. Keep the official relay so you stay interoperable with friends on Cloud or Local.
Friends
A friend code is a one-line handshake. After paste, you each see each other's distilled status in the notch — one emoji, one phrase, no raw bytes. The relay only ever stores ciphertext addressed to your recipients.
Agent access
A deputy token is a capability: a list of read scopes, a ttl, an optional rate cap. Hand it to Claude Code, Cursor, an autonomous agent, or your own shell loop. The agent only sees what the token allows. Pull the token, access stops.
From Settings → Agent Access. Pick scopes (status, captures, transcripts, screenshots). Set a TTL.
Paste the resulting block into the agent's environment. Works with any HTTP-speaking runtime.
The agent reads only what the token grants. Every call is logged and visible from the menu bar.
One click. Or wait for TTL. Identity, friends, and other agents are untouched.
$ fisherman deputy create \ --scopes read.status,read.transcripts \ --ttl 24h \ --label "claude-code review loop" # share with the agent runtime → FISH_DEPUTY_TOKEN=fish:deputy:eyJhbGciOiJFZERTQSJ9... FISH_BASE=https://fisherman.teleport.computer $ curl -H "Authorization: Bearer $FISH_DEPUTY_TOKEN" \ $FISH_BASE/api/status { "status": "coding", "phrase": "wiring agent access into menubar", "in_flow": true, "updated_at": "2026-05-11T16:21:09Z" }
Privacy model
An ed25519 key in ~/.fisherman/.env signs everything. Reinstall, keep your friends. Delete the key, become a stranger.
Cloud receives data under keys you control. A new Cloud release must be reviewed and re-approved by your client before it can compute on history.
Export, import, and delete history when moving between Local, Cloud, and Self-Hosted. The on-disk format is the source of truth, not the server.
Install
Drops Fisherman.app into /Applications and the daemon into ~/.fisherman. You can read the script first — it's plain bash.
macOS · Apple Silicon & Intel · uv & Swift, no Docker
$ curl -fsSL https://raw.githubusercontent.com/sxysun/fisherman/main/install.sh | bash