karnstack

flue

2026 · MIT

Your Claude Code sessions and terminals, in one place

flue is a daemon that keeps terminal sessions alive, and a web app that lists every one of them across your machines. Claude Code, Codex, Pi, builds, SSH. Name them, tag them, pin them, find them, open them from any screen you own.

curl -fsSL https://flue.sh/install.sh | sh

or brew install karnstack/tap/flue

127.0.0.1:7717

flue

Sessions

Search sessionsNew session
Alltaggedagents

macbook2 running

  • claude: relay handshake/bin/zsh -lagent~/code/flue2m ago
  • pnpm vitest --watch/bin/zsh -lweb~/code/flue/web14m ago

studio2 running

  • go test ./.../bin/zsh -lci~/code/flue1m ago
  • ssh prod-1/bin/zsh -l~3h ago

pi-41 running

  • tail -f /var/log/syslog/bin/zsh -l~6h ago

vps1 exited

  • docker compose up/bin/zsh -l~/srv/media2d ago
9:41

flue-relay.you.workers.dev

claude: relay handshake

macbook

Read relay/handshake.go, relay/reaper.go and the two tests around them.

Handshake fails when the reaper fires mid-pairing. The pairing side never sees the ack. Add the guard?

> yes, with a test

Added TestReaperSkipsPairing. Running it now.

$

esctab

What it does

  • Sessions outlive the tab. Close it, the agent keeps working. Reopen it, the scrollback replays.
  • Sessions outlive flue. Each one runs in its own holder process. Update or crash the daemon, nothing stops. After a reboot, each comes back with its history and the command that resumes the conversation.
  • One list, every machine. Group by machine or by tag. Name, tag, pin, search. Drag a row onto a group to retag it. Save a view.
  • One keystroke to any of them. ⌘K or Ctrl+Shift+K lists every session on every machine, and the highlighted row shows its last 14 lines. Ctrl+Shift+1 to 9 jumps to a pinned one.
  • Splits and tabs. ⌘D splits right, ⇧⌘D splits down, ⌥⌘T opens a tab. ⌘/ lists every chord, spelled for the keyboard you are on. Linux and Windows use Ctrl.
  • Agent history. Every Claude Code, Codex and Pi conversation from every machine. Search it, see tokens and cost per day, read the transcript, resume it in a terminal.
  • Files. Select a path in a terminal, peek at the file, open it in a tab.
  • Phone and tablet. Pair once with a QR code. A key bar with Esc, Tab, arrows and Ctrl. Two devices can mirror one session.

The switcher below is wired up. Press either chord and type.

Pinned

  • claude: relay handshake~/code/fluemacbook⌃⇧1
  • go test ./...~/code/fluestudio⌃⇧2

Recent

  • pnpm vitest --watch~/code/flue/webcurrentmacbook
  • ssh prod-1~studio

All sessions

  • tail -f /var/log/syslog~pi-4
  • docker compose up~/srv/mediavps
↑↓moveopen⌃⇧1-9pinned⌃⇧[ ]prev / nextescclose

Remote access

The daemon listens on loopback and nothing else. One command deploys a relay Worker and this web app into your own Cloudflare account, on the free plan. Every machine you own shares that relay.

your machine               your Cloudflare account         your phone
daemon, holds the key      relay, holds no key             browser, pins the key
127.0.0.1:7717  ─────────► flue-relay.you.workers.dev ───► paired once, by QR

Everything crossing it is end-to-end encrypted with Noise IK. The middle box forwards bytes it cannot read. There is no flue account, no flue server and no billing. flue.sh serves docs and downloads and is never part of the data path.

$ flue relay setup  token verified  worker deployed: flue-relay  web app uploaded  reachable at https://flue-relay.you.workers.dev  fleet key minted (Cloudflare never sees it)  this machine joined as laptop (laptop-9f3a-3f9a12cd)   to add another machine, run this on it:    flue relay join wss://flue-relay.you.workers.dev --secret … --fleet …

What it deploys, and what it costs

Facts

LicenseMIT
BinaryOne static Go binary
PlatformsmacOS, Linux, WSL
Hosted serviceNone
AccountNone
Remote accessYour Cloudflare account, free plan
EncryptionNoise IK, end to end
Version0.x. Commands and config can still change.

Install

$ curl -fsSL https://flue.sh/install.sh | sh$ flue enable

flue enable installs a login service, starts the daemon and opens the UI. Everything after that happens in the browser. More than one machine: read the setup guide. There is a recording of the whole setup (8:51) on that page.

Setup guide

Source