Skip to content

Commit e123b32

Browse files
frahlgclaude
andauthored
docs(readme): demo GIF + viral hero (badges, tagline, the magic moment) (#50)
A vhs-rendered demo GIF (assets/demo.tape + assets/demo.sh, illustrative) shows the whole story: mir up serves a machine; from a laptop mir list auto-discovers it by name (B2) and mir attach drops into its real shell — peer-to-peer, Noise-encrypted end-to-end, no SSH. Rework the README hero with shields badges, a punchy SSH-less tagline, the centered GIF, and Features rows for zero-config discovery + LAN-direct. Refresh the version pin example to v0.6.0. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 8260918 commit e123b32

4 files changed

Lines changed: 93 additions & 16 deletions

File tree

README.md

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,30 @@
11
# Miranda
22

3-
> **A peer-to-peer, end-to-end-encrypted remote terminal.** Reach the shell on any
4-
> machine you own — from your laptop, another box, or your phone's browser —
5-
> authenticated by a passkey. No SSH keys to juggle, no ports to forward, and a
6-
> relay you don't have to trust.
7-
8-
**Miranda** is a cross-machine terminal multiplexer: one workspace that spans every
9-
machine you own. Terminal traffic flows **directly peer-to-peer** over a WebRTC
10-
DataChannel, end-to-end encrypted with the Noise `KK` handshake. A small relay only
11-
introduces the two ends and then steps aside — it sees ciphertext and routing
12-
metadata, never your keystrokes or output. The relay, in other words, has **the
13-
right to remain silent**.
14-
15-
It's `tmux` for terminals that live on different machines: tmux owns the
16-
windows/panes and persistence on each host; Miranda owns *which machine you're
17-
looking at*.
3+
[![Release](https://img.shields.io/github/v/release/srcfl/miranda?sort=semver&color=000000&label=release)](https://github.com/srcfl/miranda/releases)
4+
[![License: MIT](https://img.shields.io/badge/license-MIT-black.svg)](LICENSE)
5+
[![Platforms](https://img.shields.io/badge/macOS%20%C2%B7%20Linux-black)](#install)
6+
[![Go](https://img.shields.io/badge/Go-1.26-00ADD8?logo=go&logoColor=white)](go/go.mod)
7+
[![Data plane](https://img.shields.io/badge/data%20plane-P2P%20%2B%20Noise%20KK-9cf)](#how-it-works)
8+
9+
**SSH-less, peer-to-peer, end-to-end-encrypted shells on every machine you own** — reach a
10+
real terminal from your laptop or your phone's browser, authenticated by a passkey, brokered
11+
by a relay you **never have to trust**.
12+
13+
<p align="center">
14+
<img src="assets/miranda-demo.gif" width="900"
15+
alt="mir up serves a machine; from a laptop, mir list auto-discovers it by name and mir attach drops into its real shell — peer-to-peer, Noise-encrypted end-to-end, no SSH">
16+
</p>
17+
18+
<p align="center"><sub>Serve a machine, then reach its real shell from anywhere — P2P + Noise, the relay never sees a keystroke.</sub></p>
19+
20+
Terminal traffic flows **directly peer-to-peer** over a WebRTC DataChannel, end-to-end
21+
encrypted with the Noise `KK` handshake. A small relay only introduces the two ends and then
22+
steps aside — it sees ciphertext and routing metadata, never your keystrokes or output. The
23+
relay, in other words, has **the right to remain silent**.
24+
25+
It's `tmux` for terminals that live on different machines: tmux owns the windows/panes and
26+
persistence on each host; Miranda owns *which machine you're looking at* — and your machines
27+
**find each other by wallet**, so a new one shows up everywhere the moment it comes online.
1828

1929
## Features
2030

@@ -28,6 +38,11 @@ looking at*.
2838
survive the browser sleeping or the network dropping.
2939
- **Cross-machine multiplexer** — attach several machines at once and switch focus
3040
with a hotkey.
41+
- **Zero-config discovery** — your machines self-publish a wallet-signed, *encrypted*
42+
record; every device of yours lists them by name automatically — no `add-machine`, no
43+
pairing between your own machines. The relay holds only opaque blobs it can't read.
44+
- **LAN-direct** — on the same network, `mir attach` finds the machine over mDNS and
45+
connects straight over QUIC: no relay round-trip at all, automatic fallback if it's remote.
3146
- **Browser or CLI** — the `mir` CLI in your terminal, or any browser including
3247
iPhone Safari.
3348
- **Self-hostable, blind relay** — run your own, or use the hosted one; either way it
@@ -48,7 +63,7 @@ curl -fsSL https://raw.githubusercontent.com/srcfl/miranda/main/install.sh | sh
4863
```
4964

5065
The installer verifies each download against the release `checksums.txt` before
51-
installing to `~/.local/bin`. Pin a version with `MIR_VERSION=v0.1.0`, or change the
66+
installing to `~/.local/bin`. Pin a version with `MIR_VERSION=v0.6.0`, or change the
5267
target with `INSTALL_DIR=/usr/local/bin`. Prefer building from source? See the
5368
[Quickstart](#quickstart) below.
5469

assets/demo.sh

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env bash
2+
# Illustrative Miranda demo for the README GIF — scripted (not a live capture) so the
3+
# story is tight and reproducible. Rendered via assets/demo.tape with charmbracelet/vhs.
4+
set -u
5+
6+
C=$'\033[0m'; DIM=$'\033[2m'; B=$'\033[1m'
7+
G=$'\033[32m'; CY=$'\033[36m'; YL=$'\033[33m'; MG=$'\033[35m'; GY=$'\033[90m'
8+
PR="${DIM}~${C} ${MG}\$${C} " # local prompt
9+
RP="${CY}macmini${C}:${DIM}~${C} ${MG}\$${C} " # "remote" prompt
10+
11+
printf '\033[H\033[2J' # wipe the `bash assets/demo.sh` invocation line — start clean
12+
13+
# cmd <text> — render a prompt and a typed command, with a beat before output.
14+
cmd() { printf "%b%b%b\n" "$1" "$B" "$2$C"; sleep 0.55; }
15+
out() { printf "%b\n" "$1"; sleep 0.18; }
16+
17+
sleep 0.4
18+
cmd "$PR" "mir up"
19+
out " ${G}${C} serving ${B}macmini${C} ${DIM}·${C} wallet ${YL}G4XC6h…k4kN${C} ${DIM}·${C} relay.sourceful-labs.net"
20+
out " ${G}${C} LAN-direct on ${DIM}(mDNS + QUIC)${C} ${DIM}·${C} persistent tmux ${DIM}·${C} ${DIM}the relay never sees your shell${C}"
21+
sleep 0.7
22+
printf "\n%b\n\n" "${GY}── from your laptop, anywhere ───────────────────────────────${C}"
23+
sleep 0.3
24+
25+
cmd "$PR" "mir list"
26+
out " ${MG}📣${C} new device ${B}\"macmini\"${C} joined your wallet"
27+
out " ${B}macmini${C} ${DIM}a1b2c3d4…${C} ${G}online${C} ${DIM}· LAN-direct${C}"
28+
out " ${B}linux${C} ${DIM}d4e5f6a7…${C} ${G}online${C} ${DIM}· relay${C}"
29+
sleep 0.7
30+
31+
cmd "$PR" "mir attach macmini"
32+
out " ${DIM}[mir]${C} ${B}macmini${C} — peer-to-peer, ${CY}Noise-encrypted end-to-end${C} ${DIM}(no SSH, no port-forward)${C}"
33+
sleep 0.5
34+
cmd "$RP" "uptime"
35+
out " 14:32:07 up 3 days, 2:11, load average: 0.11, 0.09, 0.05"
36+
sleep 0.3
37+
cmd "$RP" "whoami && hostname"
38+
out "fredrik"
39+
out "macmini"
40+
sleep 0.4
41+
printf "%b%b" "$RP" "${B}${C}"
42+
sleep 1.6

assets/demo.tape

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# vhs tape for the Miranda demo GIF. Render with: vhs assets/demo.tape
2+
# Produces assets/miranda-demo.gif from the illustrative assets/demo.sh.
3+
4+
Output assets/miranda-demo.gif
5+
6+
Set Shell "bash"
7+
Set FontSize 20
8+
Set Width 1200
9+
Set Height 680
10+
Set Padding 26
11+
Set Theme "Dracula"
12+
13+
Hide
14+
Type "clear"
15+
Enter
16+
Type "bash assets/demo.sh"
17+
Enter
18+
Sleep 600ms
19+
Show
20+
Sleep 12s

assets/miranda-demo.gif

105 KB
Loading

0 commit comments

Comments
 (0)