forked from Mike/freno-dev
DO NOT MERGE OR DEPLOY THIS BRANCH. It is the held half of FRE-997, split out of a336a6c at the Code Review Engineer's changes-requested verdict and the Chief of Staff's 2026-11-03 launch hold (comment 2ccad154), and it is stacked on `freno-dev/FRE-997-count-18` so its own diff stays remote-only. The copy it restores was pulled by FRE-323 (c1c498e,c718370). FRE-997's argument is that those removals were checked against claims the copy never made: hosts come from `~/.ssh/config` and Tailscale (`RemoteHostDiscovery`), the one-time `ssh-copy-id` is a prerequisite the row hands the user as a command (`RemoteHostStatus.fixCommand`), the per-host credential is minted and copied over (`RemoteMirror`), and a remote host mirrors this Mac's integrations (`RemoteMirrorReconcile`). Two things in the old copy were genuinely wrong and are fixed rather than restored: the "every hooked agent" overstatement (Muse, Cline and Amp are `.unsupported` for remote and are named) and the count. It may land only when all of these are recorded on FRE-997: 1. a CTO verdict that the one-click flow was run on the shipping build; 2. footage of a remote agent joining the island; 3. the Chief of Staff revising the FRE-346 §3 launch gate and taking the public-claim call to the sponsor. Until then the live site keeps the FRE-323 state. The restore condition this commit deletes (`marketing/drafts/remote-ssh/copy.md`) is the gate being cited: FRE-205 is todo/unassigned, FRE-320 is a verdict task, and no recording exists. - The Remote collage tile and its mock. - The "Any SSH box, one click away" breakdown with its RemoteHostDemo. - The "One-click SSH setup" chip. - The /agents remote paragraph and the Cline/Amp "this Mac only" rows. - The approvals bullet names the three local-only agents instead of claiming every hooked agent. - remote-claims.test.ts guards the restored copy plus the two overstatements that must not return. - positioning.md moves remote SSH to publishable with its backing. Gate on this branch, this run: `bun test src/routes/nook` 17 pass / 0 fail; `bun run build` succeeds. Green tests do not lift the hold.
162 lines
10 KiB
Markdown
162 lines
10 KiB
Markdown
# The Nook — Positioning (source of truth)
|
||
|
||
Every drafted asset draws its voice, claims, and constraints from this file. If an
|
||
artifact invents its own framing, fix the artifact or fix this file — never both
|
||
silently diverging.
|
||
|
||
**Reconciled 2026-10-29**, and again **2026-11-03** for the FRE-997 correction,
|
||
against the CTO's verdicts ([FRE-315], [FRE-322], [FRE-354], [FRE-997]), the Chief
|
||
of Staff's price decision (2026-10-29 04:01), the Plan B launch route ([FRE-346] →
|
||
[FRE-203] `plan-b`), and `The-Nook` master (app floor is **14.2**, not 14.0 —
|
||
`freno-dev` `881190d`, site merge `134f41e`). The previous version of this file
|
||
named an upstream `the-nook/docs/marketing-strategy.md` that no longer exists; the
|
||
verdicts below are the source of truth it was pointing at.
|
||
|
||
[FRE-315]: https://paperclip.freno.me/FRE/issues/FRE-315
|
||
[FRE-322]: https://paperclip.freno.me/FRE/issues/FRE-322
|
||
[FRE-354]: https://paperclip.freno.me/FRE/issues/FRE-354
|
||
[FRE-320]: https://paperclip.freno.me/FRE/issues/FRE-320
|
||
[FRE-346]: https://paperclip.freno.me/FRE/issues/FRE-346
|
||
[FRE-203]: https://paperclip.freno.me/FRE/issues/FRE-203
|
||
[FRE-997]: https://paperclip.freno.me/FRE/issues/FRE-997
|
||
|
||
## The sentence
|
||
|
||
There is no single approved public sentence yet, and saying otherwise is the one
|
||
mistake this file exists to prevent. What exists is a **launch claim set** — two
|
||
sentences, both from one 15-second take, recorded as the chosen route by the Chief
|
||
of Staff on 2026-10-29 ([FRE-346] `decision` §2–§4):
|
||
|
||
| Slot | Exact sentence | Status today |
|
||
|---|---|---|
|
||
| Launch line | **"Every agent you're running reports into one notch, and the one waiting on you pins above the rest."** | Verified by code ([FRE-322] §3). Needs the one-Mac take before it is publishable. |
|
||
| Second line, same take | **"Approve an agent's tool call from your Mac's notch, and the agent carries on."** | Needs the demo ([FRE-322] §1). The same take settles it. |
|
||
|
||
Working line for internal writing, not for publication:
|
||
|
||
> **Your Mac and your agents, under control.** One notch for the whole fleet: you
|
||
> see what is running, you unblock what is waiting, and the machine stays cool
|
||
> while it works.
|
||
|
||
## The wedge
|
||
|
||
The thing to say over and over, in every channel, in slightly different words:
|
||
|
||
> **An agent blocked on a permission prompt is the most expensive kind of idle.**
|
||
> You pay for the model, you pay for the wait, and you get neither.
|
||
|
||
It is acute, quantifiable, and true — and it is the demo: a card appears, you tap
|
||
Allow, work resumes. Ten seconds, no explanation needed.
|
||
|
||
## The consolidation reframe
|
||
|
||
Three audiences (agent herders, hardware tinkerers, glanceable-widget users) in one
|
||
app reads like a grab bag. Reframe as consolidation, which is the honest story:
|
||
|
||
> One app instead of a notch toy, a fan utility, a battery limiter, a menu-bar stats
|
||
> strip, and a notification hack. One purchase, no subscription.
|
||
|
||
**No price, no discount and no future price in copy.** The price is $10, it stays
|
||
$10, and the dated rise to $15 is withdrawn (Chief of Staff, 2026-10-29 04:01). A
|
||
price change is a Chief of Staff + sponsor call; it is never a marketing decision
|
||
and never a launch asset.
|
||
|
||
## Hard rules
|
||
|
||
### 1. Category nouns, never product nouns
|
||
|
||
`freno-dev/AGENTS.md` forbids naming any competitor in user-facing copy — landing
|
||
pages, marketing copy, comparison tables, meta descriptions, emails, FAQs, all of it.
|
||
|
||
- Use **category nouns**: "notch app", "menu-bar monitor", "fan control utility",
|
||
"battery charge limiter", "agent notification hack". These carry the same search
|
||
intent and are fully compliant.
|
||
- Compare against **the status quo, not a competitor**: "vs. a terminal bell you
|
||
don't hear", "vs. four utilities in your menu bar", "vs. finding out an hour later."
|
||
- The rule does not reach App Store–external review replies, direct email, and
|
||
community replies written by a human, where quoting what a user said about another
|
||
tool is normal conversation.
|
||
|
||
### 2. A claim needs a verdict, not just a test
|
||
|
||
Copy that says "every agent", "13 agents", "no data leaves the device" must point at
|
||
both a test **and** a CTO verdict naming the exact sentence. A passing test is not a
|
||
verdict; a verdict is not a recording. If a sentence cannot be traced to a row in the
|
||
tables below, it does not go in copy.
|
||
|
||
### 3. Honest privacy scoping
|
||
|
||
Telemetry and the licence check **do** leave the device: Sentry runs on **every
|
||
launch, unconditionally** (with the Mac's IP address via `sendDefaultPii`), and the
|
||
trial check sends `IOPlatformUUID` and the device name to `freno.me` ([FRE-322]
|
||
§2.4, corrected by [FRE-354] `(b)`). Never publish, in any wording:
|
||
|
||
- "no data leaves the device" / "local-only" / "no telemetry" / "no account"
|
||
- "nothing leaves your Mac"
|
||
|
||
The one favourable engine sentence — about the **hook and bridge only**, never
|
||
"The Nook" — as corrected by [FRE-354] `(j)`: the hook and bridge **are not a cloud
|
||
service**. Do not write "talk to nothing but your Mac" (too absolute: the
|
||
`NOOK_PORTS` fan-out resolves `host.docker.internal` and the default gateway, and
|
||
`defaultGateway()` opens a no-packet UDP socket to `8.8.8.8:80`), and do not narrow
|
||
it to "over SSH" (a tailnet peer dials directly).
|
||
|
||
It is verified as a code fact ([FRE-322] §2, [FRE-354] `(j)`), and it is still
|
||
**held** until the disclosures land: Sentry gated behind a preference or removed,
|
||
and `/privacy` + `/faq` corrected against the egress inventory (patch on branch
|
||
`faq/from-objections-2026-10-29`, verified by [FRE-354]). A true sentence next to
|
||
false ones is worse than no sentence.
|
||
|
||
### 4. Sell what works today
|
||
|
||
An iPhone + Apple Watch companion **is** in users' hands as a TestFlight beta
|
||
(`ios-v0.3.2`, 2026-10-22; [FRE-354] open question). That makes one thing true and
|
||
one thing forbidden: say "TestFlight beta" when the phone exists in a sentence at
|
||
all, and never claim approvals-from-phone as a shipped capability without its own
|
||
CTO verdict — no "(coming soon)" parentheticals either way.
|
||
|
||
Remote SSH is **publishable**, and the site sells it again ([FRE-997]). The
|
||
copy that was pulled on 2026-10-29 had been checked against claims it never made:
|
||
hosts come from `~/.ssh/config` and Tailscale (`RemoteHostDiscovery`), the
|
||
one-time `ssh-copy-id` is a prerequisite the row hands the user as a command
|
||
(`RemoteHostStatus.fixCommand`), the per-host credential is minted and copied
|
||
over (`RemoteMirror`), and a remote host mirrors this Mac's integrations
|
||
(`RemoteMirrorReconcile`). Two things in the old copy were wrong and were fixed
|
||
rather than restored: the "every hooked agent" overstatement, and a count that
|
||
said thirteen against a registry of eighteen. Muse, Cline and Amp are
|
||
`.unsupported` for remote in `AgentSpec.remote`, and the copy names them.
|
||
|
||
### 5. Humans hold every account
|
||
|
||
No agent authenticates, posts, upvotes, or DMs. No sock puppets, no self-mention
|
||
without disclosure. `approved/` **is the only thing a human ever publishes from** —
|
||
nothing posts itself.
|
||
|
||
## Claims: status at 2026-11-03
|
||
|
||
Each row names the evidence, not a feeling. Re-read the verdict before using a row.
|
||
|
||
| Claim | Status | Evidence / next step |
|
||
|---|---|---|
|
||
| Approve an agent's tool call from the notch, and it carries on | **Needs demo** — not publishable | [FRE-322] §1. `AgentLiveTurnTests` has never run on a signed-in host; one observed local run settles it. Say "an agent", never "any agent", never "always". |
|
||
| Every agent you're running reports into one notch; the blocked one pins above the rest | **Verified by code, gated on the take** | [FRE-322] §3. Same one-Mac take as above. No count in the sentence. |
|
||
| The hook and bridge are not a cloud service | **Verified code fact, held on disclosure** | [FRE-322] §2, wording corrected by [FRE-354] `(j)`. Held until Sentry is gated/removed and `/privacy` + `/faq` land. Never widen to "The Nook", never "nothing but your Mac". |
|
||
| Fan, thermal and charge control | **No claim verdict yet — do not lead with it** | Backed by `helper/` (privileged helper, SMC, no kext), but no CTO sentence exists for it. Documentary, not launch. |
|
||
| One-time purchase, no subscription | **Publishable fact, price not a launch asset** | $10, held at $10. No dated rise, no discount framing, no pricing copy. |
|
||
| Agent coverage numbers ("eighteen agents", "18 agents") | **Publishable at 18** | [FRE-997]: the /agents table now lists every row of `AgentSpec.all` and `agents.test.ts` asserts equality with the 18-name registry in registry order, so the landing bullet, the marquee chip and the /agents copy say 18. No other number is publishable, and `every` / `all` are still banned without naming the three local-only agents. |
|
||
| macOS 14.2 or later | **Publishable fact** | The app cannot start below 14.2 (`freno-dev` `881190d`, site `134f41e`). "macOS 14+" is false and was fixed on the site. |
|
||
| Remote agents over SSH, one click to install | **Publishable, with the three local-only agents named** | [FRE-997]: `RemoteHostDiscovery` (ssh config + tailnet), `RemoteMirror` (hook push, credential, mirroring), `RemoteMirrorReconcile`, `RemoteHostStatus.fixCommand` (the one-time `ssh-copy-id` the row shows). `AgentSpec.remote` is `.unsupported` for Muse, Cline and Amp — the landing bullet and /agents paragraph name them; never say "every hooked agent". |
|
||
| "Nothing leaves your Mac", "no telemetry", "local-only", "no account" | **False today — banned** | Sentry unconditional, licence check with hardware fingerprint ([FRE-322] §2.4). |
|
||
| Approvals from the iPhone or Apple Watch | **No verdict — not a launch claim** | The companion is a TestFlight beta ([FRE-354]); the approval-from-phone claim has no CTO verdict and stays out of launch copy. |
|
||
|
||
## Voice
|
||
|
||
- Short, concrete, no hype adjectives. Numbers over adjectives — the only count
|
||
that ships is eighteen, and it is the registry's own size (see the coverage row
|
||
above).
|
||
- The notch is the product's home; agents are the product's point.
|
||
- Never apologize for being a utility. The utility is the point.
|
||
- Banned phrasings: competitor names (see rule 1), "AI-powered", "revolutionary",
|
||
"game-changer", "seamlessly", any unverifiable superlative — and the specific
|
||
banned sentences in rule 3 and the table above.
|