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 | shor brew install karnstack/tap/flue
127.0.0.1:7717
Sessions
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
flue-relay.you.workers.dev
claude: relay handshake
macbookRead 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.
$
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
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.
--- PASS: TestReaperSkipsPairing (0.02s)
ok github.com/karnstack/flue/relay 0.31s
$
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
| License | MIT |
|---|---|
| Binary | One static Go binary |
| Platforms | macOS, Linux, WSL |
| Hosted service | None |
| Account | None |
| Remote access | Your Cloudflare account, free plan |
| Encryption | Noise IK, end to end |
| Version | 0.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.