docs: Miranda is the reach layer — positioning and the moat, stated with evidence - #108
Conversation
…ith evidence herdr owns "keep your coding agents alive" on the machine. Miranda's old tagline — "terminal continuity for long-running development and AI sessions" — sat on the same sentence and named the wrong layer. The line is now reach: a multiplexer keeps the session alive on the machine, Miranda gets you to that machine, from whatever device is in your hand, with a passkey. The old non-goal becomes the position — we do not build a multiplexer, we make yours reachable — so engine-agnostic reach reads as a feature, with the herdr seam named as direction (#107), never as a shipped claim. The README moat block states five claims and links where each is checked: passkey-derived identity with no account, a relay that cannot read and persists only owner-signed revocations, direct-by-default with the current netsim numbers, signed and expiring shares enforced at the agent, and the published gaps. BETA.md's lab numbers were also stale against netsim/results/results.md and now match it. Prose and one CLI line only; no behaviour changes. Closes #106 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeiotDVE94wEzvc7wcvm1y
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b720e89b01
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - **Your passkey is the identity, and there is no account.** No signup, no | ||
| password, no user record. The owner identity is derived from the passkey PRF | ||
| output, so the browser re-derives it for each session and stores no private | ||
| key; the relay and every machine you pair hold public IDs only. Pair once, |
There was a problem hiding this comment.
Scope the passkey identity claim to browser clients
For users following the documented native mir pair/mir attach flow, this claim is false: client.LoadOrCreateIdentity generates a random 32-byte root and SaveIdentity stores it in the OS keychain, without any passkey ceremony. The previous wording correctly limited WebAuthn PRF derivation to browser identity; please retain that qualification so CLI users are not given incorrect identity and recovery expectations.
Useful? React with 👍 / 👎.
| `machine_id`, and routing metadata. Discovery records are owner-encrypted blobs | ||
| it never opens, held only while your agent is online — a restart loses every | ||
| one. The single thing it persists is an owner-signed revocation. |
There was a problem hiding this comment.
Qualify revocation persistence as configuration-dependent
When a self-hoster starts the relay with the command shown later in this README, no --revocations-file is supplied, and mir-signal explicitly reports that revocations are memory-only; a restart therefore loses the tombstones as well as the registry. This categorical durability claim can cause operators to assume revoked machines remain revoked across restarts, so state that revocations are persisted only when durable storage is configured or update the self-hosting command accordingly.
Useful? React with 👍 / 👎.


Why
herdr (~33k stars) is an agent-aware tmux replacement: a server that owns terminals and knows which are AI agents. It owns the sentence "keep your coding agents alive," and its remote story stops at SSH into your own box. Miranda's CLI tagline — "terminal continuity for long-running development and AI sessions" — sat on that same sentence and named the wrong layer.
The line
A multiplexer keeps the session alive on the machine. Miranda gets you to that machine — from whatever device is in your hand, with a passkey. No VPN, no copied SSH key, no open inbound port, no account.
The old non-goal is now the strongest sentence: we do not build a multiplexer; we make yours reachable. Engine-agnostic reach is a feature, not a gap. tmux is the engine today; carrying others is named as direction (#107) and never as a shipped claim. "Leave your desk. Keep your terminal." stays as the promise.
The moat, with evidence
The README block states five claims and links where a reader checks each one:
go/internal/identity/owner.go, B1 spec;go/internal/signal/server.go, SECURITY.md;netsim/results/results.mdnumbers (12 ms LAN host pair, 17 ms open agent, ~1.0 s TURN, resume 2.35 s direct / 2.77 s over TURN), rerunnable withmake netsim;Changed
## Installsection is untouched.netsim/results/results.mdand now match it. No gap weakened.guide()tagline:mir — tmux keeps your session alive; mir gets you to it from any device.No test pinned the old wording.Prose plus one CLI line. No behaviour changes.
go test ./...andnpm test(167 tests) pass;gofmt -l .is empty.Closes #106
🤖 Generated with Claude Code
https://claude.ai/code/session_01KeiotDVE94wEzvc7wcvm1y
Note
Low Risk
Documentation and CLI help text only; no changes to authentication, networking, or session handling.
Overview
Reframes product messaging from “terminal continuity” to the reach layer: multiplexers keep sessions alive on the machine; Miranda gets you to that machine with a passkey. Docs now draw a clear line vs
tmux/herdr, name engine-agnostic reach as direction (#107) without claiming it ships, and treat “we don’t build a multiplexer” as core positioning rather than a footnote.README rewrites the hero, expands “P2P tmux?” into a multiplexer comparison (table + herdr link), replaces “Why it feels simpler” with Five claims you can check (passkey identity, blind relay, measured NAT/
netsim, sharing, honesty posture) each linked to code/specs, and leads non-goals with the multiplexer stance.docs/product.md,BETA.md,docs/naming.md, andweb/manifest.jsonalign on the same thesis;BETA.mdlab attach/resume numbers are updated to matchnetsim/results/results.md.mir’sguide()welcome and tagline strings echo the new split: tmux keeps your session alive; mir gets you to it from any device. No runtime or crypto behavior changes.Reviewed by Cursor Bugbot for commit b720e89. Bugbot is set up for automated code reviews on this repo. Configure here.