diff --git a/assets/README.md b/assets/README.md index 53f9cbf..b68a681 100644 --- a/assets/README.md +++ b/assets/README.md @@ -1,12 +1,12 @@ # Tether — visual assets -Demo gifs for README embeds, social posts, and YC/grant applications. Recorded on Modal A10G with TRT EP active so the doctor checks render green; output is verbatim from the CLI in the container, only the typing animation is synthesized. +Demo gifs for README embeds, social posts, and YC/grant applications. Recorded on Modal A10G; output is verbatim from the CLI in the container, only the typing animation is synthesized. -> **Stale branding:** both gifs were recorded before the v0.12.0 rename (Reflex → Tether) and show the old `reflex` CLI commands on screen. Re-record under the `tether` CLI before using them in any new public post; the table notes which recordings are pre-rename. +> **`tether-chat-demo.gif` is still pre-rename** (v0.5.0, shows old `reflex` commands on screen) and is not embedded in the README. Re-record under the `tether` CLI before using it in any new public post. | Asset | Recorded | Version | Length / size | Use for | |---|---|---|---|---| -| `tether-tweet.gif` | 2026-05-03 | v0.8.0 (pre-rename) | 11.8 s · 152 KB · 1075×873 | X/Twitter posts, tight demo embeds. Shows `reflex --version` → `reflex doctor` (4 green ✓ on TensorRT runtime, cuBLAS, cuDNN, ORT-TRT EP) → `reflex --help` (11-verb listing). | +| `tether-tweet.gif` | 2026-06-10 | v0.12.0 | 9.8 s · 126 KB · 1075×873 | X/Twitter posts, tight demo embeds. Shows `tether --version` → `tether inspect targets` (Jetson Orin/Thor + RTX/A100/H100 support table) → `tether --help` (verb listing). | | `tether-chat-demo.gif` | 2026-04-28 | v0.5.0 (pre-rename) | 37.3 s · 197 KB · 1280×760 | YC application demo upload, longer-form embeds. Shows the `reflex chat` natural-language interface routing through CLI tools. | ## Recording recipe @@ -29,7 +29,9 @@ Cost: ~$0.30 on A10G (~10 min including image cold start). ## Refresh policy Re-record the tweet gif when: -- A minor version ships that changes `tether doctor` output, the verb listing, or the tagline. +- A minor version ships that changes `tether inspect targets`, the verb listing, or the tagline. - The README claims a number that's no longer in the gif (e.g., new architectures verified). +> The recording deliberately avoids `tether doctor`: its deploy-diagnostic checks crash on a GPU box with no exported model (`Path(ModelProto)` TypeError) — a real bug tracked separately. Restore the `doctor` panel once that's fixed. + The full experiment note for any re-record lives at `reflex_context/03_experiments/YYYY-MM-DD-tweet-gif-*.md`. diff --git a/assets/tether-tweet.gif b/assets/tether-tweet.gif index 0277da9..0f33f59 100644 Binary files a/assets/tether-tweet.gif and b/assets/tether-tweet.gif differ diff --git a/scripts/modal_record_demo_gif.py b/scripts/modal_record_demo_gif.py index 17e485d..c29ac7a 100644 --- a/scripts/modal_record_demo_gif.py +++ b/scripts/modal_record_demo_gif.py @@ -13,8 +13,8 @@ Approach justified per CLAUDE.md no-band-aid: real CLI output captured live in container, not faked. Typing animation is synthesized but every -character of output is verbatim from `tether --version`, `tether doctor`, -`tether --help` running in the container with TRT EP active. +character of output is verbatim from `tether --version`, +`tether inspect targets`, `tether --help` running in the container. """ import modal @@ -26,9 +26,9 @@ .apt_install("git", "wget", "curl", "fontconfig", "fonts-jetbrains-mono") .pip_install("uv") .run_commands( - # Install from the repo until `tether` is published to PyPI (the old - # pinned 'reflex-vla==0.8.0' / 'tether-vla' package names are dead). - "uv pip install --system 'fastcrest-tether[serve,gpu] @ git+https://github.com/FastCrest/tether'", + # Install the published artifact users actually get (dist name is + # 'fastcrest-tether'; the bare 'tether' name is reserved on PyPI). + "uv pip install --system 'fastcrest-tether[serve,gpu]==0.12.0'", "uv pip install --system 'tensorrt>=10.0,<11'", # agg = official asciinema gif renderer (Rust binary) "wget -qO /usr/local/bin/agg https://github.com/asciinema/agg/releases/download/v1.5.0/agg-x86_64-unknown-linux-gnu", @@ -66,11 +66,16 @@ def run(cmd: str) -> str: print("=== capturing real CLI output ===") out_version = run("tether --version") - out_doctor = run("tether doctor") + # `tether inspect targets` — static supported-hardware registry. Replaces + # the old `tether doctor` panel: doctor's deploy-diagnostic checks crash on + # a GPU box with no exported model (Path(ModelProto) TypeError), which is + # both a real bug (tracked separately) and a bad look in a marketing gif. + # `inspect targets` is GPU-free, narrow, and on-brand (Jetson/RTX/Thor). + out_targets = run("tether inspect targets") out_help = run("tether --help") print(f"version: {out_version!r}") - print(f"doctor first line: {out_doctor.splitlines()[0] if out_doctor else 'EMPTY'!r}") - print(f"doctor lines: {len(out_doctor.splitlines())}") + print(f"targets first line: {out_targets.splitlines()[0] if out_targets else 'EMPTY'!r}") + print(f"targets lines: {len(out_targets.splitlines())}") print(f"help lines: {len(out_help.splitlines())}") # ----- build asciinema cast programmatically ----- @@ -107,8 +112,8 @@ def show_output(output: str, lead_pause: float = 0.3, post_pause: float = 1.4) - type_command("tether --version") show_output(out_version, post_pause=1.0) - type_command("tether doctor") - show_output(out_doctor, post_pause=2.5) + type_command("tether inspect targets") + show_output(out_targets, post_pause=2.5) type_command("tether --help") show_output(out_help, post_pause=2.0)