Skip to content

Commit 3ca20d6

Browse files
karngyanclaude
andcommitted
docs(site): say what flue is, in the words people search for
The hero led with "The desk stops mattering," which is a mood rather than a description: a reader who has never heard of flue could not tell from it what the thing does or who it is for. The headline now names the job directly, and names the two agents most people arrive here running. - Hero headline and subline, the README tagline and intro, the meta title and description, and the llms.txt lede all lead with continuing a Claude Code or Codex session on another screen. - Two section headings that were being clever stop being clever: "Finding one of them is the other half" is now "One keystroke to any session on any machine," and "Install it, then close the tab on purpose" is now "Install flue on the machine that runs the work." - The hero no longer carries the builds-and-SSH claim, so the sessions section says it instead: detaching keeps the agent working, the build running and the SSH session up. Being specific in the headline should not narrow what the product is. - llms.txt still said the relay had not been through its end-to-end gate. It has, and the README has said so since v0.5.1. - FOLLOW-UPS.md speculated about a multi-tenant relay on flue.sh, which contradicts the no-hosted-service claim everywhere else. Rewritten around the only deployment that exists: one you own. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent f5e9773 commit 3ca20d6

5 files changed

Lines changed: 32 additions & 33 deletions

File tree

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<h1 align="center">flue</h1>
22

3-
<p align="center"><strong>The desk stops mattering.</strong></p>
3+
<p align="center"><strong>Continue your Claude Code and Codex sessions on any screen.</strong></p>
44

55
<p align="center">
66
<a href="https://github.com/karnstack/flue/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/karnstack/flue/ci.yml?branch=main&label=ci" alt="CI status"></a>
@@ -24,11 +24,13 @@
2424
</picture>
2525
</p>
2626

27-
Builds, agents and SSH sessions keep running on the machine that owns them.
28-
Every one of them is one tab away, on any screen you have. A small Go daemon
29-
holds the shells and their scrollback, and a web app draws them. Closing the
30-
tab does not kill a session. It only detaches it, and reattaching replays what
31-
you missed.
27+
Start on your laptop. Check in from your phone or iPad. Pick up again at your
28+
desk. The shell stays on the machine; flue moves the view.
29+
30+
A small Go daemon holds the shells and their scrollback, and a web app draws
31+
them. Closing the tab does not kill a session. It only detaches it: the agent
32+
keeps working, the build keeps running, the SSH session stays up, and
33+
reattaching replays what you missed.
3234

3335
- **Sessions outlive the tab.** Close it and the build keeps running.
3436
- **One list, every machine.** Name, tag, pin, group and search the whole

docs/FOLLOW-UPS.md

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -479,15 +479,12 @@ documented promise depends on.
479479
Distinct from item 10, which is the daemon's own outbound queue rather than the
480480
relay's.
481481

482-
**Still open, and it changes character on a hosted relay.** Self-hosted, the
483-
person streaming `yes` and the person holding the Cloudflare account are the
484-
same person, so the missing cap costs them their own free tier and nothing
485-
else. On flue.sh one Worker's allowance is shared by everybody: one account's
486-
runaway session is spent against every other account's availability as well
487-
as against the operator's bill. Nothing about a multi-tenant relay makes the
488-
cap harder to write — it makes it the first thing the scale pass has to do,
489-
and the counters that would size it now have to be read off a deployment
490-
rather than off a dogfooding month.
482+
**Still open.** Every relay is one you deployed into your own Cloudflare
483+
account, so the person streaming `yes` and the person holding the account are
484+
the same person: the missing cap costs them their own free tier and nobody
485+
else's. That is what keeps this a follow-up rather than a blocker. The
486+
counters that would size the cap come off a dogfooding month, which is the
487+
work this item is waiting on.
491488
- **`POST /api/pair` is credential-less and internet-reachable, and nothing
492489
rate limits it.** It has to be credential-less — the device presenting a
493490
pairing token is by definition a device holding no credential — and the

site/public/llms.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# flue
22

3-
> flue keeps your terminal sessions alive on the machine that owns them and hands them back on any device you have. A small Go daemon owns the shells and their scrollback, and a web app draws them. Closing the tab does not kill a session. It only detaches it, so a build, an agent run or an SSH session keeps going, and reattaching replays what was missed. One keystroke opens every session on every machine at once.
3+
> flue lets you continue your Claude Code and Codex sessions on any screen: start on your laptop, check in from your phone or iPad, pick up again at your desk. A small Go daemon owns the shells and their scrollback, and a web app draws them, so the shell stays on the machine and flue only moves the view. Closing the tab does not kill a session. It only detaches it, so a build, an agent run or an SSH session keeps going, and reattaching replays what was missed. One keystroke opens every session on every machine at once.
44

55
flue is open source (MIT), pre-1.0, and free. It installs as one static Go
66
binary on macOS, Linux and WSL, with no Node, Python or other toolchain.
@@ -13,10 +13,10 @@ the daemon's static key pinned when a browser pairs, so the Worker forwards
1313
ciphertext it holds no key for. flue.sh serves docs and downloads and is never
1414
part of the data path.
1515

16-
Status: the local terminal, the login service, the fleet-wide sessions list and
17-
the end-to-end pairing all work. The Cloudflare relay is built and deployable
18-
but has not been through its manual end-to-end gate against a real account.
19-
It is ready to try rather than ready to rely on.
16+
Status: released and in daily use. The local terminal, the login service, the
17+
fleet-wide sessions list, pairing and the Cloudflare relay all work, and the
18+
relay has been through its manual end-to-end gate against a real account. It is
19+
0.x, so commands, flags and the config file can still change between releases.
2020

2121
## Install
2222

site/src/routes/__root.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import type { ReactNode } from 'react'
44
import { SITE_URL } from '@/lib/site'
55
import appCss from '@/styles.css?url'
66

7-
const TITLE = 'flue: every terminal session you have running, one tab away'
7+
const TITLE = 'flue: continue your Claude Code and Codex sessions on any screen'
88
const DESCRIPTION =
9-
'Builds, agents and SSH sessions keep running on the machine that owns them. Every one of them is one tab away, on any screen you have. One static Go binary, no hosted service.'
9+
'Start on your laptop, check in from your phone or iPad, pick up again at your desk. A small Go daemon holds your terminals, so closing the tab detaches a session instead of killing it. One static Go binary, no hosted service.'
1010

1111
export const Route = createRootRoute({
1212
head: () => ({
@@ -25,7 +25,7 @@ export const Route = createRootRoute({
2525
{ property: 'og:image:height', content: '630' },
2626
{
2727
property: 'og:image:alt',
28-
content: 'flue: every session on every machine you own, one tab away',
28+
content: 'flue: your agent, build and SSH sessions on every screen you own',
2929
},
3030
{ name: 'twitter:card', content: 'summary_large_image' },
3131
{ name: 'theme-color', media: '(prefers-color-scheme: light)', content: '#ffffff' },

site/src/routes/index.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,17 @@ function Eyebrow() {
105105

106106
function Headline() {
107107
return (
108-
<h1 className="max-w-[24ch] text-4xl font-semibold tracking-tight text-balance sm:text-5xl lg:text-6xl">
109-
The desk stops mattering.
108+
<h1 className="max-w-[22ch] text-4xl font-semibold tracking-tight text-balance sm:text-5xl lg:text-6xl">
109+
Continue your Claude Code and Codex sessions on any screen.
110110
</h1>
111111
)
112112
}
113113

114114
function Subline() {
115115
return (
116116
<p className="mt-5 max-w-[52ch] text-lg text-pretty text-muted-foreground">
117-
Builds, agents and SSH sessions keep running on the machine that owns them. Every one of them
118-
is one tab away, on any screen you have.
117+
Start on your laptop. Check in from your phone or iPad. Pick up again at your desk. The shell
118+
stays on the machine; flue moves the view.
119119
</p>
120120
)
121121
}
@@ -205,8 +205,8 @@ function Sessions() {
205205
<p className="font-mono text-sm tracking-wide text-primary uppercase">Why it exists</p>
206206
<blockquote className="mt-6 border-l-2 border-primary/40 pl-5">
207207
<p className="max-w-[48ch] text-lg text-pretty">
208-
I wanted my 10,000 steps. Coding agents had other plans, and I am not buying a
209-
walking pad. So now I start the run on my machine, go for the walk, and read the
208+
I wanted my 10,000 steps. Claude Code and Codex had other plans, and I am not buying
209+
a walking pad. So now I start the run on my machine, go for the walk, and read the
210210
answer on my phone.
211211
</p>
212212
<footer className="mt-3 text-base text-muted-foreground sm:text-sm">
@@ -221,8 +221,8 @@ function Sessions() {
221221
</h2>
222222
<p className="mt-5 max-w-[48ch] text-lg text-pretty text-muted-foreground">
223223
A small Go daemon holds the terminals and their scrollback. Closing the tab does not
224-
kill the session. It only detaches it. Reattach and the daemon replays what you
225-
missed.
224+
kill the session. It only detaches it: the agent keeps working, the build keeps
225+
running, the SSH session stays up. Reattach and the daemon replays what you missed.
226226
</p>
227227
<p className="mt-4 max-w-[48ch] text-lg text-pretty text-muted-foreground">
228228
Two devices can attach to one session and mirror live. Size follows the view you used
@@ -236,7 +236,7 @@ function Sessions() {
236236
drawing occupies the same measure the drawing does. */}
237237
<div className="mt-20 grid grid-cols-[minmax(0,1fr)] gap-x-10 gap-y-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] lg:gap-10">
238238
<h3 className="max-w-[40ch] text-2xl font-semibold tracking-tight text-balance">
239-
Finding one of them is the other half.
239+
One keystroke to any session on any machine.
240240
</h3>
241241
<div>
242242
<p className="max-w-[48ch] text-lg text-pretty text-muted-foreground">
@@ -429,7 +429,7 @@ function Install() {
429429
<div className="mx-auto max-w-6xl px-4 sm:px-6 lg:px-8">
430430
<div className="flex flex-col items-center text-center">
431431
<h2 className="max-w-[30ch] text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
432-
Install it, then close the tab on purpose.
432+
Install flue on the machine that runs the work.
433433
</h2>
434434
<p className="mt-5 max-w-[48ch] text-lg text-pretty text-muted-foreground">
435435
<code className="font-mono text-foreground">flue enable</code> installs a login service,

0 commit comments

Comments
 (0)