dexterm-cli 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/packages/agents/src/spectator.js +28 -2
  2. package/dist/packages/agents/src/tiers.js +3 -0
  3. package/dist/packages/agents/src/tools.js +3 -0
  4. package/dist/packages/autotrade/src/backtest.js +6 -2
  5. package/dist/packages/autotrade/src/fleet.js +2 -2
  6. package/dist/packages/autotrade/src/index.js +2 -0
  7. package/dist/packages/autotrade/src/rugproof-probe.js +415 -0
  8. package/dist/packages/autotrade/src/rugproof.js +231 -0
  9. package/dist/packages/autotrade/src/runner.js +132 -17
  10. package/dist/packages/autotrade/src/service-install.js +6 -4
  11. package/dist/packages/autotrade/src/sessions.js +16 -7
  12. package/dist/packages/autotrade/src/strategy-stats.js +344 -0
  13. package/dist/packages/autotrade/src/strategy.js +12 -1
  14. package/dist/packages/classifier/src/calibrate.js +138 -0
  15. package/dist/packages/classifier/src/classify.js +107 -0
  16. package/dist/packages/classifier/src/config.js +220 -0
  17. package/dist/packages/classifier/src/dossier.js +95 -0
  18. package/dist/packages/classifier/src/hardware.js +63 -0
  19. package/dist/packages/classifier/src/index.js +18 -0
  20. package/dist/packages/classifier/src/models.js +111 -0
  21. package/dist/packages/classifier/src/providers/heuristic.js +77 -0
  22. package/dist/packages/classifier/src/providers/http.js +63 -0
  23. package/dist/packages/classifier/src/providers/jev-open.js +86 -0
  24. package/dist/packages/classifier/src/providers/llm.js +89 -0
  25. package/dist/packages/classifier/src/providers/systemone-http.js +95 -0
  26. package/dist/packages/classifier/src/questions.js +97 -0
  27. package/dist/packages/classifier/src/registry.js +42 -0
  28. package/dist/packages/classifier/src/snapshot.js +31 -0
  29. package/dist/packages/classifier/src/systemone.js +88 -0
  30. package/dist/packages/classifier/src/types.js +18 -0
  31. package/dist/packages/cli/assets/dash/dash.css +139 -0
  32. package/dist/packages/cli/assets/dash/dash.js +200 -0
  33. package/dist/packages/cli/assets/dash/icon.svg +1 -0
  34. package/dist/packages/cli/assets/dash/index.html +36 -0
  35. package/dist/packages/cli/src/app-help-gen.js +12 -0
  36. package/dist/packages/cli/src/autotrade-cmd/fleet.js +9 -2
  37. package/dist/packages/cli/src/autotrade-cmd/run.js +11 -1
  38. package/dist/packages/cli/src/autotrade-cmd/signal.js +2 -2
  39. package/dist/packages/cli/src/classifier-cmd.js +353 -0
  40. package/dist/packages/cli/src/classifier-live.js +81 -0
  41. package/dist/packages/cli/src/dash/data.js +217 -0
  42. package/dist/packages/cli/src/dash/server.js +92 -0
  43. package/dist/packages/cli/src/dash-cmd.js +113 -0
  44. package/dist/packages/cli/src/doctor.js +34 -0
  45. package/dist/packages/cli/src/live/screens/token-live.js +4 -0
  46. package/dist/packages/cli/src/live/signals.js +8 -0
  47. package/dist/packages/cli/src/main.js +98 -6
  48. package/dist/packages/cli/src/mcp-follow.js +21 -1
  49. package/dist/packages/cli/src/narratives-cmd.js +147 -0
  50. package/dist/packages/cli/src/narratives.js +114 -0
  51. package/dist/packages/cli/src/overlay/model.js +147 -0
  52. package/dist/packages/cli/src/overlay/page.js +146 -0
  53. package/dist/packages/cli/src/overlay/pnl.js +75 -0
  54. package/dist/packages/cli/src/overlay/server.js +170 -0
  55. package/dist/packages/cli/src/overlay-cmd.js +367 -0
  56. package/dist/packages/cli/src/record-cmd.js +82 -11
  57. package/dist/packages/cli/src/rules-cmd.js +2 -1
  58. package/dist/packages/cli/src/rules.js +24 -4
  59. package/dist/packages/cli/src/screens/narrative.js +154 -2
  60. package/dist/packages/cli/src/state.js +1 -0
  61. package/dist/packages/cli/src/version.js +1 -1
  62. package/dist/packages/custom/src/rules.js +5 -1
  63. package/dist/packages/mcp/assets/kb/app-help/classification-models.md +41 -0
  64. package/dist/packages/mcp/assets/kb/app-help/narratives-tracker.md +45 -0
  65. package/dist/packages/mcp/assets/kb/app-help/strategy-dashboard.md +38 -0
  66. package/dist/packages/mcp/assets/kb/app-help/streamer-overlay.md +36 -0
  67. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-rug-proof-entries-experimental.md +52 -0
  68. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-always-on-service.md +3 -1
  69. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-strategy-dashboard-dexterm-dash.md +37 -0
  70. package/dist/packages/mcp/assets/kb/docs/docs-autotrade.md +3 -1
  71. package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +2 -2
  72. package/dist/packages/mcp/assets/kb/docs/docs-beginners-copy-and-paste-without-surprises.md +0 -1
  73. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-dexterm-says-command-not-found.md +2 -2
  74. package/dist/packages/mcp/assets/kb/docs/docs-beginners-reopen-dexterm-later.md +1 -1
  75. package/dist/packages/mcp/assets/kb/docs/docs-beginners-terminal-shell-prompt-command-output-and-path.md +2 -2
  76. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-expectations.md +1 -1
  77. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows.md +1 -1
  78. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-ladder.md +2 -0
  79. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat.md +2 -0
  80. package/dist/packages/mcp/assets/kb/docs/docs-classifier-hosted-jev-with-your-own-key.md +34 -0
  81. package/dist/packages/mcp/assets/kb/docs/docs-classifier-how-they-measured-on-dexterm-s-own-history.md +52 -0
  82. package/dist/packages/mcp/assets/kb/docs/docs-classifier-set-up-kev-on-your-own-machine.md +39 -0
  83. package/dist/packages/mcp/assets/kb/docs/docs-classifier-settings.md +35 -0
  84. package/dist/packages/mcp/assets/kb/docs/docs-classifier-the-choices.md +36 -0
  85. package/dist/packages/mcp/assets/kb/docs/docs-classifier-where-it-plugs-in.md +29 -0
  86. package/dist/packages/mcp/assets/kb/docs/docs-classifier-which-model-for-which-machine.md +42 -0
  87. package/dist/packages/mcp/assets/kb/docs/docs-classifier.md +32 -0
  88. package/dist/packages/mcp/assets/kb/docs/docs-cli-invocations.md +1 -1
  89. package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +3 -0
  90. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +1 -1
  91. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-recorded-history-and-retention.md +1 -0
  92. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +3 -3
  93. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +2 -2
  94. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-supported-platforms.md +2 -11
  95. package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +2 -2
  96. package/dist/packages/mcp/assets/kb/docs/docs-larp-measured-accuracy.md +2 -2
  97. package/dist/packages/mcp/assets/kb/docs/docs-larp-paste-a-coin-on-the-web.md +1 -1
  98. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-larp-score.md +1 -1
  99. package/dist/packages/mcp/assets/kb/docs/docs-narratives-how-coins-are-grouped.md +39 -0
  100. package/dist/packages/mcp/assets/kb/docs/docs-narratives-limits.md +29 -0
  101. package/dist/packages/mcp/assets/kb/docs/docs-narratives-what-is-measured.md +44 -0
  102. package/dist/packages/mcp/assets/kb/docs/docs-narratives-what-testing-showed.md +43 -0
  103. package/dist/packages/mcp/assets/kb/docs/docs-narratives-where-to-find-it.md +37 -0
  104. package/dist/packages/mcp/assets/kb/docs/docs-narratives.md +29 -0
  105. package/dist/packages/mcp/assets/kb/docs/docs-overlay-before-you-start.md +33 -0
  106. package/dist/packages/mcp/assets/kb/docs/docs-overlay-limits.md +30 -0
  107. package/dist/packages/mcp/assets/kb/docs/docs-overlay-options.md +36 -0
  108. package/dist/packages/mcp/assets/kb/docs/docs-overlay-security-model.md +36 -0
  109. package/dist/packages/mcp/assets/kb/docs/docs-overlay-set-it-up-in-obs-step-by-step.md +49 -0
  110. package/dist/packages/mcp/assets/kb/docs/docs-overlay-the-pnl-scene-paper-and-live.md +34 -0
  111. package/dist/packages/mcp/assets/kb/docs/docs-overlay-the-three-scenes.md +35 -0
  112. package/dist/packages/mcp/assets/kb/docs/docs-overlay-what-is-redacted.md +31 -0
  113. package/dist/packages/mcp/assets/kb/docs/docs-overlay.md +25 -0
  114. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +1 -1
  115. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-is.md +2 -0
  116. package/dist/packages/mcp/assets/kb/docs/docs-screens-bubble-map.md +1 -1
  117. package/dist/packages/mcp/assets/kb/docs/docs-spectator-streaming-it.md +1 -0
  118. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-is.md +1 -1
  119. package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +2 -2
  120. package/dist/packages/mcp/assets/kb/entries/narratives-tracker.md +45 -0
  121. package/dist/packages/mcp/src/server.js +104 -0
  122. package/dist/packages/mcp/src/spectator-sink.js +27 -0
  123. package/dist/packages/narratives/src/cluster.js +193 -0
  124. package/dist/packages/narratives/src/embed.js +184 -0
  125. package/dist/packages/narratives/src/export.js +60 -0
  126. package/dist/packages/narratives/src/index.js +10 -0
  127. package/dist/packages/narratives/src/label.js +48 -0
  128. package/dist/packages/narratives/src/normalize.js +179 -0
  129. package/dist/packages/narratives/src/recorder.js +93 -0
  130. package/dist/packages/narratives/src/tracker.js +328 -0
  131. package/dist/packages/recorder/src/exit-probes.js +215 -0
  132. package/dist/packages/recorder/src/index.js +1 -0
  133. package/dist/packages/recorder/src/recorder.js +11 -1
  134. package/dist/packages/recorder/src/retention.js +4 -0
  135. package/dist/packages/recorder/src/schema.js +20 -1
  136. package/dist/packages/tui/src/keymap.js +5 -0
  137. package/package.json +3 -1
  138. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-powershell-experimental.md +0 -39
@@ -26,10 +26,10 @@ date: 2026-10-16
26
26
  | need | why | notes |
27
27
  |---|---|---|
28
28
  | Node.js 22.18 or newer | dexterm runs its TypeScript sources directly; no build step | `node -v` to check. The installer can fetch a verified Node for you. |
29
- | a terminal with 24-bit colour | the cyberspace look | iTerm2, WezTerm, Ghostty, Kitty, Alacritty, Windows Terminal. 256-colour and monochrome terminals still work, flattened. |
29
+ | a terminal with 24-bit colour | the cyberspace look | iTerm2, WezTerm, Ghostty, Kitty, Alacritty. 256-colour and monochrome terminals still work, flattened. |
30
30
  | an internet connection | all data is public and keyless | nothing goes through a dexterm server; see data sources (https://dexterm.xyz/docs/data-sources). |
31
31
  | optional: Claude Code logged in | only the analyst needs it | `claude` on your PATH, logged in with your own account. Everything else works without it. |
32
32
  | optional: a free RPC key | the ranked top-20 holder list and faster chain reads | Helius, Alchemy, QuickNode or Ankr free tier; see configuration (https://dexterm.xyz/docs/configuration). |
33
33
  | optional: Rust (`cargo`) | the native docked chart window | without it the chart popup opens in your browser; see popup chart (https://dexterm.xyz/docs/popup-chart). |
34
34
 
35
- > note: dexterm 0.2.0 is out (2026-10-25), open source under AGPL-3.0-only at github.com/dexterm-xyz/dexterm (https://github.com/dexterm-xyz/dexterm). It is early: trading is experimental and has known bugs. The release ships checksums, a build-provenance attestation and an SBOM, and its VirusTotal result (including flags we explain) is on the trust page (https://dexterm.xyz/trust/). It is also on npm as `dexterm-cli` (https://www.npmjs.com/package/dexterm-cli); the command it installs is still `dexterm`.
35
+ > note: dexterm 0.2.1 is out (2026-10-30), open source under AGPL-3.0-only at github.com/dexterm-xyz/dexterm (https://github.com/dexterm-xyz/dexterm). It is early: trading is experimental and has known bugs. The release ships checksums, a build-provenance attestation and an SBOM, and its VirusTotal result (including flags we explain) is on the trust page (https://dexterm.xyz/trust/). It is also on npm as `dexterm-cli` (https://www.npmjs.com/package/dexterm-cli); the command it installs is still `dexterm`.
@@ -24,21 +24,12 @@ sources:
24
24
  date: 2026-10-16
25
25
  ---
26
26
 
27
- This table says what each platform has actually been through, not what we expect to work. "Tested" means the typecheck, the full offline test suite and an install smoke (`npm pack`, `npm i -g` of that tarball into an empty prefix with a fresh home, then `dexterm --version` and `dexterm doctor`) have passed there.
27
+ dexterm supports **macOS and Linux**. Windows is not supported. This table says what each platform has actually been through, not what we expect to work. "Tested" means the typecheck, the full offline test suite and an install smoke (`npm pack`, `npm i -g` of that tarball into an empty prefix with a fresh home, then `dexterm --version` and `dexterm doctor`) have passed there.
28
28
 
29
29
  | platform | status | what has run on it |
30
30
  |---|---|---|
31
31
  | Linux x64, Node 22 and 24 | tested | the full suite on every push in CI (Ubuntu), and the same steps in Docker (`node:22-bookworm`, `node:24-bookworm`), including the install smoke |
32
32
  | macOS on Intel | tested | the full suite on every change, the install smoke, and a Homebrew install (slow: Homebrew builds Node from source on Intel) |
33
33
  | macOS on Apple Silicon | tested in CI (0.1.4) | the full suite on an Apple Silicon runner (`macos-14`) passed on the 0.1.4 release candidate. The manual Homebrew job (tap, trust, install, `brew test`) has not run yet |
34
- | Windows x64 | experimental, tested in CI (0.1.4) | the `windows-latest` leg runs the full suite and it passed on the 0.1.4 release candidate (a few tests that need POSIX file permissions or Unix-only tools are skipped, and ACL-based file isolation is not verified). Known gaps are listed below |
35
34
  | WSL2 | not tested separately | it is Linux, so expect the Linux behaviour |
36
-
37
- Known gaps on Windows (none of them affect key safety: dexterm never holds a wallet key on any platform):
38
-
39
- - Files dexterm keeps private (tokens, the optional RPC key) are written with POSIX mode `0600`. Windows ignores that mode, so on Windows they are protected only by your user profile's normal permissions.
40
- - The analyst runs `claude` without a shell, so it can start Claude Code's native installer build (`claude.exe`) but not the `claude.cmd` script an npm install creates. Doctor counts only `claude.exe` as found, so with an npm install it reports the Claude CLI as missing.
41
- - Voice mode has no Windows speech engine (see voice (https://dexterm.xyz/docs/voice#linux-and-windows)).
42
- - Opening a token's links and the PnL card's "share to X" do not start a browser on Windows; dexterm shows the URL to open yourself.
43
- - `doctor` prints its fixes as POSIX shell commands (`mkdir -p`, `chmod`); in PowerShell, do the equivalent by hand.
44
- - `dexterm kb edit` and `dexterm skill edit` do not open `$EDITOR`; they print the file to edit instead.
35
+ | Windows | not supported | a CI leg ran the suite on Windows for 0.1.4, but Windows is not a supported platform: private files rely on POSIX file modes, voice has no Windows engine, and browser links and `doctor`'s fixes assume macOS or Linux |
@@ -22,6 +22,6 @@ date: 2026-10-16
22
22
 
23
23
  Requirements, install, first run and dexterm doctor.
24
24
 
25
- dexterm is a terminal screener for Solana memecoins with a local Claude analyst. It runs on your machine, reads public data with no key and never holds a wallet key. Trading in dexterm is PAPER (see paper trading (https://dexterm.xyz/docs/paper-trading)); dexterm signs nothing, and live trading happens in a Telegram trading bot of your choice (see live trading (https://dexterm.xyz/docs/live-trading)). This page gets you from nothing to the live screener.
25
+ dexterm is a terminal screener for Solana memecoins with a local Claude analyst. It runs on your machine, reads public data with no key and never holds a wallet key. Trading in dexterm is PAPER by default (see paper trading (https://dexterm.xyz/docs/paper-trading)) and dexterm signs nothing. Real mode is experimental; signals to your own executor; dexterm never holds a key; not financial advice (see real mode (https://dexterm.xyz/docs/real-mode) and live trading (https://dexterm.xyz/docs/live-trading)). This page gets you from nothing to the live screener.
26
26
 
27
- > note: Never used a terminal before? Start with the complete beginner guide (https://dexterm.xyz/docs/beginners). It defines every term, shows exactly what to copy on macOS, Linux and Windows, and ends with a ten-minute read-only coin review.
27
+ > note: Never used a terminal before? Start with the complete beginner guide (https://dexterm.xyz/docs/beginners). It defines every term, shows exactly what to copy on macOS and Linux, and ends with a ten-minute read-only coin review.
@@ -29,7 +29,7 @@ date: 2026-10-16
29
29
 
30
30
  - **LARP check, links only.** The links-based baseline is a weak signal: MCC 0.039 before tuning, 0.054 after. Its tuned `LARP` grade caught 4 of 14 bad coins, too few to rate. `EARLY_BUT_REAL` coins still went bad 10.3 % of the time, and coins with no website 29.2 %. The skill now treats the baseline as a weak prior and never calls `LARP` from links alone.
31
31
  - **Rug check.** The verdict rules improved from MCC 0.043 to 0.159. Liquidity under $5k is the one strong signal (`SPECULATIVE` coins went bad 54.8 % of the time, `WATCH` 14.4 %). Dev percentage, organic score and top-10 share did not predict a worse 72 h outcome and now only lower confidence.
32
- - **LARP score, link-shape part** (`dexterm backtest --subject larp-score`, task-1471). Points fitted on the train split only. On the 328 held-out coins its AUROC is 0.69 (0.73 on train): a modest ranking signal. 27 of 218 low-band coins went bad (12.4 %), 34 of 110 medium-band coins (30.9 %), against 18.6 % overall; no coin reaches the high band from link shape alone. The page, domain, GitHub and X points are not measured: that evidence was not recorded at the time, and looking it up now would leak the outcome (dead coins' sites and accounts disappear).
32
+ - **LARP score, link-shape part** (`dexterm backtest --subject larp-score`). Points fitted on the train split only. On the 328 held-out coins its AUROC is 0.69 (0.73 on train): a modest ranking signal. 27 of 218 low-band coins went bad (12.4 %), 34 of 110 medium-band coins (30.9 %), against 18.6 % overall; no coin reaches the high band from link shape alone. The page, domain, GitHub and X points are not measured: that evidence was not recorded at the time, and looking it up now would leak the outcome (dead coins' sites and accounts disappear).
33
33
  - **Not measured.** The model stage (fetched pages, RDAP, GitHub) cannot be replayed: a past page cannot be fetched as it was. It is measured going forward with `dexterm backtest --subject larp`, below.
34
34
 
35
35
  The method, every number and the limits are in the repository at `packages/packs/eval/README.md`. A grade is a risk flag, not a certificate.
@@ -38,7 +38,7 @@ Measured 2026-10-12 with `dexterm backtest --subject larp` over this project's l
38
38
 
39
39
  | history | outcome labels at 1 h (observed) | LARP verdicts recorded | matched |
40
40
  |---|---|---|---|
41
- | research recorder (task-1287 prototype DB) | 149 (137 flat · 9 fade · 2 runner · 1 dead; 29 unobserved) | 0 | 0 |
41
+ | research recorder (prototype DB) | 149 (137 flat · 9 fade · 2 runner · 1 dead; 29 unobserved) | 0 | 0 |
42
42
  | the app's recorder on the development machine | 0 | 0 | 0 |
43
43
  | the same, re-measured later that day after the recorder fix | 401 (361 flat · 18 dead · 13 runner · 5 fade · 4 rug; 1,206 unobserved) | 0 | 0 |
44
44
 
@@ -26,7 +26,7 @@ date: 2026-10-16
26
26
 
27
27
  A no-install version is in preview at the preview checker (https://dexterm-larp-preview.dexterm-site.workers.dev/check/), not deployed to dexterm.xyz. Paste a Solana mint or a DexScreener / pump.fun / Solscan link and get the grade in your browser, read-only, no wallet. It runs on a Cloudflare Worker and reuses the app's tuned link-shape grade (`larp-links-v1`) and the same prompt firewall, so a hostile coin name or symbol is stripped and shown as inert text, never obeyed.
28
28
 
29
- What the web checker shows, each datum with its source and the age of the reading: the **LARP grade** from the coin's advertised link shape (`LARP` / `REAL?` / `UNKNOWN`), **top-10 holder concentration** and **holder count** (Jupiter), and **liquidity** in USD (DexScreener). It never shows a price, a market cap or a buy/sell call. A **shareable PNG card** carries the grade, those facts, the heuristic label and a dexterm.xyz link.
29
+ What the web checker shows, each datum with its source and the age of the reading: the **LARP grade** from the coin's advertised link shape (`LARP` / `REAL?` / `UNKNOWN`), the **LARP score** from the same link shape with its top three reasons, **top-10 holder concentration** and **holder count** (Jupiter), and **liquidity** in USD (DexScreener). The web checker does not fetch the website, the domain, GitHub or the X account, so those count as not checked: the score shows how far they could still raise it ("12, could be up to 100") rather than treating them as clean. It never shows a price, a market cap or a buy/sell call. A **shareable PNG card** carries the grade, the score with its top three reasons, those facts, the heuristic label and a dexterm.xyz link.
30
30
 
31
31
  The preview defaults to the **keyless** tier. The full in-app LARP check above — fetching the website (SSRF-safe), the RDAP domain lookup and the GitHub read, graded by the analyst — is not part of the web checker. The bundle / sniper checkbox runs the app's wallet-intel rules and Helius history adapter as an optional second step, only when a dedicated site key and real Turnstile configuration are present. The visible preview test mode disables paid deep scans. Missing credentials refuse scans or disable the deep step; there is no silent test-secret fallback.
32
32
 
@@ -55,6 +55,6 @@ date: 2026-10-16
55
55
 
56
56
  **Missing data never lowers the score.** A page that could not be read, an RDAP or X lookup that failed, goes to a `missing` list with the points it could have added, and the result shows the range: "37, could be up to 58". Nothing unread is scored as clean.
57
57
 
58
- Where it shows: the `larp_check` MCP result (`score`, `band`, and `larp_score` with every flag, its points, its weight and its evidence, the range and the `missing` list; the existing fields are unchanged), the analyst panel after a LARP check (a gauge with the three biggest reasons, drawn from the tool's own result, never from the model's text).
58
+ Where it shows: the `larp_check` MCP result (`score`, `band`, and `larp_score` with every flag, its points, its weight and its evidence, the range and the `missing` list; the existing fields are unchanged), the analyst panel after a LARP check (a gauge with the three biggest reasons, drawn from the tool's own result, never from the model's text), and the web checker's result and share card.
59
59
 
60
60
  > warn: a LARP verdict is a risk flag, not a certificate. Public HTML cannot prove a working product, a team's identity or who owns an account; domain age, a clean script scan and a GitHub with commits are evidence, not proof, and a real product can still go to zero.
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: docs-narratives-how-coins-are-grouped
3
+ title: Memes and narratives (experimental) › How coins are grouped
4
+ kind: docs
5
+ page: narratives
6
+ page_title: Memes and narratives (experimental)
7
+ heading: How coins are grouped
8
+ anchor: how-coins-are-grouped
9
+ url: https://dexterm.xyz/docs/narratives#how-coins-are-grouped
10
+ tags:
11
+ - docs
12
+ - narratives
13
+ - coins
14
+ - are
15
+ - grouped
16
+ - memes
17
+ - experimental
18
+ confidence: high
19
+ owner: maintainers
20
+ origin: docs-generated
21
+ reviewed_by: generated@2026-10-16
22
+ generated_from: dexterm/site content/docs (task-1420)
23
+ sources:
24
+ - site/content/docs/narratives.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ 1. **Normalise** the name and ticker (and the description or social handles when the data layer has them): leetspeak
29
+ (`Z0RP`), repeated letters (`ZOOOORP`), camelCase (`ZorpWifHat`), emoji (🐸 → frog), glued tickers split against a
30
+ vocabulary learned from other names (`BABYZORP` → baby + zorp), and copy-cat affixes (`BABY`, `MINI`, `2.0`, `INU`,
31
+ `AI`) kept as weak words so "Baby X" lands next to X.
32
+ 2. **Embed** each coin with a local model. The default is built in: a hashed vector of the meme words, their letter
33
+ trigrams and the lexicon themes (dogs, politics, ai-agents, holiday-seasonal, …). An optional small open model,
34
+ all-MiniLM-L6-v2 on CPU through transformers.js, or any local Ollama embedding model, adds meaning links such as
35
+ kitty to cat (`DEXTERM_NARRATIVE_EMBEDDER=minilm` or `ollama`).
36
+ 3. **Cluster** incrementally in first-seen order. A coin joins the closest narrative it shares a meme word with (or, with
37
+ a semantic model, a currently hot one) if it is close enough to that narrative's centre and to the coin that started
38
+ it. Otherwise it starts a new narrative. Ids are stable (`nar_…`) and narratives never merge or split afterwards.
39
+ The label is the most common word or two-word phrase.
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: docs-narratives-limits
3
+ title: Memes and narratives (experimental) › Limits
4
+ kind: docs
5
+ page: narratives
6
+ page_title: Memes and narratives (experimental)
7
+ heading: Limits
8
+ anchor: limits
9
+ url: https://dexterm.xyz/docs/narratives#limits
10
+ tags:
11
+ - docs
12
+ - narratives
13
+ - limits
14
+ - memes
15
+ - experimental
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/narratives.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ - Name-based: themes that live only on X or Telegram are missed until a coin's name carries them.
27
+ - Volume is each source's rolling window at the coin's newest sample; a coin not sampled for 6 h counts as zero.
28
+ - Two themes that converge later stay two rows (ids never change).
29
+ - The first build of the table reads the last 26 h of recorded history: tens of seconds on a large database (the screen stays live meanwhile).
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: docs-narratives-what-is-measured
3
+ title: Memes and narratives (experimental) › What is measured
4
+ kind: docs
5
+ page: narratives
6
+ page_title: Memes and narratives (experimental)
7
+ heading: What is measured
8
+ anchor: what-is-measured
9
+ url: https://dexterm.xyz/docs/narratives#what-is-measured
10
+ tags:
11
+ - docs
12
+ - narratives
13
+ - measured
14
+ - memes
15
+ - experimental
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/narratives.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ Per narrative and window (5 m, 1 h, 6 h, 24 h): coins seen, new coins and the new-coin rate, the narrative's share of all
27
+ tracked volume, unique traders (1 h, Jupiter) and their growth, the top runner (sellable pool of at least 10k USD) and its drawdown
28
+ from its peak, how often the same meme word was relaunched in the last hour, and a 0-100 **traction score** (1 h volume
29
+ growth, spawn rate, repeated-name velocity, share of new-coin volume, breadth). Rank 1 is the highest score.
30
+ **Cross-coin holder overlap is not recorded, so it is not part of the score** (it shows as null, never estimated).
31
+
32
+ **Lifecycle**, first rule that matches:
33
+
34
+ | state | rule |
35
+ |---|---|
36
+ | dead | no member sampled in 6 h, or 1 h volume under 1k USD with no new coin in 6 h |
37
+ | spark | the first coin is under 1 h old |
38
+ | ignition | 1 h volume ≥ 5k USD and ≥ 2× the 1 h volume an hour ago, with a new coin in the hour or unique traders +50% |
39
+ | fading | 1 h volume ≤ 40% of its 24 h high, or ≤ 60% of an hour ago |
40
+ | peak | otherwise: hot, near its 24 h high, growing under 2× |
41
+
42
+ **Copy-cat saturation** (`*` in the table): at least 5 coins, at least 3 of them new in 6 h, and the coins after the 3
43
+ oldest together hold under 25% of the narrative's 1 h volume. The copies are launching, but they are not getting the
44
+ volume.
@@ -0,0 +1,43 @@
1
+ ---
2
+ id: docs-narratives-what-testing-showed
3
+ title: Memes and narratives (experimental) › What testing showed
4
+ kind: docs
5
+ page: narratives
6
+ page_title: Memes and narratives (experimental)
7
+ heading: What testing showed
8
+ anchor: what-testing-showed
9
+ url: https://dexterm.xyz/docs/narratives#what-testing-showed
10
+ tags:
11
+ - docs
12
+ - narratives
13
+ - testing
14
+ - showed
15
+ - memes
16
+ - experimental
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/narratives.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ We replayed 11 days of dexterm's recorded history (219,730 coins) through the tracker in time order, reading each
28
+ coin's narrative at the first moment a scanner could act on it (point in time: nothing recorded after that moment),
29
+ and tested it on days that were held back until the end, the same way as dexterm's other entry research.
30
+
31
+ - **It is a useful map of what is running, not an edge.** On the held-back days, adding the narrative to a coin's own
32
+ numbers did not help tell apart the coins that later tripled (ranking quality fell slightly, by 0.022 (95% interval -0.059 to +0.008)) or the ones that drained
33
+ (fell by 0.033 (-0.052 to -0.015)).
34
+ - **None of the narrative gates we fixed in advance improved paper results** when added to the existing entry rules:
35
+ joining an igniting narrative early, skipping the 5th or later copy of a saturated narrative, and skipping fading or
36
+ dead narratives. In the 22 combinations of these gates and rules with at least 20 paper entries, none raised the average result per entry and three lowered it. (One more gate, added after looking at the earlier days, is reported apart; its 5 combinations moved nothing either way.) Every gate also skipped some of the coins that went on to run.
37
+ - **What it does describe:** a coin that is part of a narrative (two or more coins) drained within 6 hours about twice as often as a coin on its own (about 50% against 27% on the held-back days), and also tripled a little more often. Copy-cat waves are where both the runs and the drains happen. The lifecycle states themselves did not sort the outcomes: the share that later tripled was 4% to 6% in every state.
38
+ - In a hand-graded sample of 100 narratives, 70 were coherent (one meme and its copies, or one theme) and the
39
+ label named the theme in 87. The usual mistakes: the same ticker reused for an unrelated coin, and a shared
40
+ generic word.
41
+
42
+ Every number above comes with its sample size and a 95% interval in the study; the narratives table is a way to see
43
+ what is running, and the numbers say it should not be read as a reason to trade.
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: docs-narratives-where-to-find-it
3
+ title: Memes and narratives (experimental) › Where to find it
4
+ kind: docs
5
+ page: narratives
6
+ page_title: Memes and narratives (experimental)
7
+ heading: Where to find it
8
+ anchor: where-to-find-it
9
+ url: https://dexterm.xyz/docs/narratives#where-to-find-it
10
+ tags:
11
+ - docs
12
+ - narratives
13
+ - where
14
+ - find
15
+ - memes
16
+ - experimental
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/narratives.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ - The `N` screen opens the narrative board. Press `n` to switch between the theme board and the **NARRATIVES**
28
+ heat table. `enter` drills into a narrative's member coins; `esc` goes back to the table.
29
+ - The token screen shows a **Narrative** row once the tracker has been built (open `N` then `n` first), for example
30
+ `ZORP · lifecycle: ignition · rank 3 · #2 of 9`.
31
+ - `dexterm narratives` prints the heat table. `dexterm narratives detail ID` shows one narrative, `dexterm narratives of
32
+ MINT` shows the narrative of one coin, and `dexterm narratives export --out FILE` writes the JSON
33
+ (`dexterm-narratives/1`) that a strategy tracker page reads. `--at ISO` replays up to a past time.
34
+ - MCP tools for your analyst or your own agent: `narratives_top`, `narrative_detail`, `narrative_of` (observe tier,
35
+ read-only). Coin names come back wrapped as untrusted data.
36
+ - Watch rules: the field `narrative_rank` and the tags `narrative:ignition` / `narrative:saturated`, so a rule can fire
37
+ "when the coin's narrative ignites".
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: docs-narratives
3
+ title: Memes and narratives (experimental)
4
+ kind: docs
5
+ page: narratives
6
+ page_title: Memes and narratives (experimental)
7
+ url: https://dexterm.xyz/docs/narratives
8
+ tags:
9
+ - docs
10
+ - narratives
11
+ - memes
12
+ - experimental
13
+ confidence: high
14
+ owner: maintainers
15
+ origin: docs-generated
16
+ reviewed_by: generated@2026-10-16
17
+ generated_from: dexterm/site content/docs (task-1420)
18
+ sources:
19
+ - site/content/docs/narratives.md
20
+ date: 2026-10-16
21
+ ---
22
+
23
+ Groups coins by the theme their name and ticker carry, and measures each theme's heat per window. Measured heat, not advice.
24
+
25
+ A memecoin does not need a real project to run. It moves on a theme: a ticker pun, an animal, a celebrity, an AI-agent
26
+ craze, a holiday, or simply being a copy of a coin that just ran. The narratives tracker groups coins by that theme and
27
+ measures how hot each one is right now. It is **experimental**, **keyless** and **local**. It adds no network requests,
28
+ because it reads the history recorder, and it never calls a model. Everything it shows is **measured heat from recorded
29
+ market data, not advice and not a prediction**.
@@ -0,0 +1,33 @@
1
+ ---
2
+ id: docs-overlay-before-you-start
3
+ title: Streamer overlay (OBS) › Before you start
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: Before you start
8
+ anchor: before-you-start
9
+ url: https://dexterm.xyz/docs/overlay#before-you-start
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - before
14
+ - start
15
+ - streamer
16
+ - obs
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/overlay.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ You need an agent session to watch. Pick one:
28
+
29
+ - **An agent connected over MCP** (Claude Code, Cursor, Codex, …): run the app with `dexterm --spectate-mcp`. Your terminal follows the agent and opens the read-only spectator stream. See follow over MCP (https://dexterm.xyz/docs/spectator#follow-over-mcp-in-the-running-terminal).
30
+ - **An agent on the loopback bus**: `dexterm agent serve --spectate`. See bring your own agent (https://dexterm.xyz/docs/agents).
31
+ - **No agent, a dry run or a rehearsal**: a saved session with `--replay FILE` (record one with `dexterm agent serve --record FILE`). Every scene then carries a yellow **SAMPLE DATA · REPLAY** tag.
32
+
33
+ The overlay finds the live stream on its own (the same `spectator.json` that `dexterm spectate --info` reads), waits for it if it is not up yet, and reconnects when it restarts.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: docs-overlay-limits
3
+ title: Streamer overlay (OBS) › Limits
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: Limits
8
+ anchor: limits
9
+ url: https://dexterm.xyz/docs/overlay#limits
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - limits
14
+ - streamer
15
+ - obs
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/overlay.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ - **The scenes show what the agent did.** If the agent never reads holders, the holder bar stays "not read yet"; if it never runs a LARP check, there is no LARP line. Live signals appear only while your terminal follows the agent (`--spectate-mcp`) and has that coin's data.
27
+ - **One coin at a time.** The coin card follows the coin the agent touched last; the PnL card follows the agent's newest paper fill.
28
+ - **A reload needs a fresh URL** (see the OBS steps). This is the single-use ticket working as designed.
29
+ - **The stream starts with the last 200 events** when the overlay connects, then follows live.
30
+ - **Not financial advice.** The verdict, LARP evidence and signals are risk information, never a recommendation; paper results are simulated.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-overlay-options
3
+ title: Streamer overlay (OBS) › Options
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: Options
8
+ anchor: options
9
+ url: https://dexterm.xyz/docs/overlay#options
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - options
14
+ - streamer
15
+ - obs
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/overlay.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ | Option | What it does |
27
+ |---|---|
28
+ | `--scene NAME` | `activity`, `coin`, `pnl` or `all`; repeat it for several. Default: the three scenes |
29
+ | `--theme NAME` | `cyberspace` (phosphor green, the app's default look), `ice` (electric cyan) or `neon` (magenta). Default `cyberspace` |
30
+ | `--replay FILE` | Play a saved spectator session instead of the live stream. Every scene says SAMPLE DATA |
31
+ | `--speed N` | Replay speed (default 1); gaps between calls are capped at 5 s |
32
+ | `--loop` | Replay again from the start; the final scenes hold for 10 s first |
33
+ | `--ledger TRADE_ID` | The PnL scene shows one round trip from your own trade ledger (https://dexterm.xyz/docs/paper-trading#the-trade-ledger) (`dexterm ledger trades` lists the ids) instead of the agent's paper fills. `--sol-usd N` for a USD-booked trade |
34
+ | `--port N` | A fixed loopback port (1024 to 65535) instead of a random one |
35
+ | `--ticket-ttl MIN` | Minutes an unused URL stays valid (default 10) |
36
+ | `--json` | Print the scene URLs as JSON |
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-overlay-security-model
3
+ title: Streamer overlay (OBS) › Security model
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: Security model
8
+ anchor: security-model
9
+ url: https://dexterm.xyz/docs/overlay#security-model
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - security
14
+ - model
15
+ - streamer
16
+ - obs
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/overlay.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ The overlay uses the same model as the popup windows (https://dexterm.xyz/docs/popup-chart):
28
+
29
+ - **Loopback only.** The page server listens on `127.0.0.1` (a random port unless `--port`) and refuses any connection that is not from this machine.
30
+ - **Single-use ticket, then a one-time token.** A URL carries a random 32-byte ticket that buys exactly one page load. That page holds a second, one-time token (valid 30 seconds) for its WebSocket. A spent or expired ticket, a ticket for another scene, or a forged token gets an empty 404.
31
+ - **Host and Origin checks.** Every request must say `Host: 127.0.0.1:<port>` (so a DNS-rebinding page cannot reach it), and the WebSocket must come from the overlay's own origin. No CORS header is ever sent. Refused probes are printed in the overlay's terminal, without the ticket.
32
+ - **No inbound control.** The socket only pushes scene data. Whatever a page sends is counted and dropped, never parsed or acted on; the overlay has nothing it could control.
33
+ - **A locked-down page.** Its script and styles are inline under a per-page nonce; the content security policy allows no remote content, no fonts, no frames and no other connections. The page builds its text with `textContent` only (agent and coin text are untrusted), and the only image is the PnL card, sent over the socket.
34
+ - **No new network.** The overlay talks to the spectator stream on loopback and reads your ledger file. It fetches nothing from the internet.
35
+
36
+ The URL is printed in your own terminal so you can paste it; treat it like the popup URLs: it is loopback-only and single-use, but don't post a screenshot of a fresh one.
@@ -0,0 +1,49 @@
1
+ ---
2
+ id: docs-overlay-set-it-up-in-obs-step-by-step
3
+ title: Streamer overlay (OBS) › Set it up in OBS, step by step
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: Set it up in OBS, step by step
8
+ anchor: set-it-up-in-obs-step-by-step
9
+ url: https://dexterm.xyz/docs/overlay#set-it-up-in-obs-step-by-step
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - set
14
+ - obs
15
+ - step
16
+ - streamer
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/overlay.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ 1. Start the session you want to show (see above).
28
+ 2. In a second terminal, run:
29
+
30
+ ```sh
31
+ $ dexterm overlay --theme cyberspace
32
+ dexterm overlay · theme cyberspace · each URL works once, for 10 min
33
+ activity http://127.0.0.1:53133/overlay/activity?p=…
34
+ coin http://127.0.0.1:53133/overlay/coin?p=…
35
+ pnl http://127.0.0.1:53133/overlay/pnl?p=…
36
+ ```
37
+
38
+ Leave it running for as long as you stream. `q` (or ctrl+c) stops it.
39
+ 3. In OBS, in your scene's **Sources** panel, click **+** and choose **Browser**. Name it (for example "dexterm coin") and click **OK**.
40
+ 4. In the properties window:
41
+ - **URL**: paste one of the printed URLs (the whole line after the scene name).
42
+ - **Width / Height**: `1240` × `420` for `coin` or `activity`, `1240` × `760` for `pnl`, `1600` × `1300` for `all`. Resize the source on the canvas afterwards; the scenes scale.
43
+ - Leave **Use custom frame rate** off.
44
+ - Leave **Custom CSS** as OBS fills it in (it keeps the background transparent) or empty.
45
+ - Untick **Shutdown source when not visible** and **Refresh browser when scene becomes active**: either one reloads the page, and a reload needs a fresh URL (see below).
46
+ 5. Click **OK**. The panel appears over your stream with a transparent background. Repeat steps 3 to 5 for the other scenes.
47
+ 6. To check the setup without a live agent, run `dexterm overlay --replay session.jsonl --loop` and watch the scenes fill in with the SAMPLE DATA tag on.
48
+
49
+ **Each URL works once.** It is a single-use ticket: OBS's first load spends it, and the page then holds its own one-time connection. If OBS reloads the page, or you paste the URL into a second source, the page stays empty. Press **n** in the overlay's terminal for a fresh set of URLs and paste the new one into the source. URLs that are never loaded expire after 10 minutes (`--ticket-ttl MIN` changes that, 1 to 240). When you restart `dexterm overlay`, its port changes too, so paste fresh URLs then; `--port N` keeps the port fixed (the tickets still change).
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: docs-overlay-the-pnl-scene-paper-and-live
3
+ title: Streamer overlay (OBS) › The PnL scene: PAPER and LIVE
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: The PnL scene: PAPER and LIVE
8
+ anchor: the-pnl-scene-paper-and-live
9
+ url: https://dexterm.xyz/docs/overlay#the-pnl-scene-paper-and-live
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - pnl
14
+ - scene
15
+ - paper
16
+ - live
17
+ - streamer
18
+ - obs
19
+ confidence: high
20
+ owner: maintainers
21
+ origin: docs-generated
22
+ reviewed_by: generated@2026-10-16
23
+ generated_from: dexterm/site content/docs (task-1420)
24
+ sources:
25
+ - site/content/docs/overlay.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ The card is the PnL card (https://dexterm.xyz/docs/paper-trading#pnl-cards) renderer itself, so its stamp, frame colour, stamp strip, provenance block, data ages and "not financial advice" footer are drawn exactly as on a saved card and cannot be turned off.
30
+
31
+ - **The agent's trades are PAPER.** An agent can only paper-trade in dexterm, so a card built from the stream is always stamped **PAPER · SIMULATED TRADE · NO REAL FUNDS**, and the scene header says PAPER · SIMULATED. An open position is marked at the newest price the stream carried (converted to SOL at the rate the agent's own fill implies) or, without a later price, at the last fill; the card prints which, and how old the mark is.
32
+ - **Your own ledger trades are PAPER or LIVE by wallet mode.** With `--ledger TRADE_ID` the stamp follows the trade's wallet mode: paper is PAPER, devnet is **LIVE · DEVNET** (test funds, not real money) and live is **LIVE · WALLET-SIGNED**, on the card and in the scene header alike. The LIVE note counts the trade's wallet-signed transactions. A real-mode row gets no card (dexterm only modelled that fill; your executor's receipt is the record). The ledger is a local file, read again every 30 seconds.
33
+ - **Size is a band and the wallet never shows.** The mint is shortened and transaction signatures are left off the overlay card.
34
+ - **A replay is SAMPLE DATA.** With `--replay`, a yellow SAMPLE DATA band sits across the top of the card, above the card's own stamp.
@@ -0,0 +1,35 @@
1
+ ---
2
+ id: docs-overlay-the-three-scenes
3
+ title: Streamer overlay (OBS) › The three scenes
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: The three scenes
8
+ anchor: the-three-scenes
9
+ url: https://dexterm.xyz/docs/overlay#the-three-scenes
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - three
14
+ - scenes
15
+ - streamer
16
+ - obs
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/overlay.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ | Scene | What it shows | Where the data comes from |
28
+ |---|---|---|
29
+ | `activity` | The agent's last calls: when, the agent, the tool, a one-line summary, and how old that call's data was | Every call the spectator stream carries |
30
+ | `coin` | The coin the agent is on: ticker and shortened mint, price, the deterministic verdict with the rug heuristic, the LARP evidence flags, a top-10 holder bar with the holder count, and the live holder/rug signals, each with its age | The results of the agent's own `get_token`, `get_holders`, `get_dossier`, `analyze_token` and `larp_check` calls, plus the signals your terminal fires for that coin while it follows the agent |
31
+ | `pnl` | The PnL card, drawn by the same renderer as the `H` key (PnL cards (https://dexterm.xyz/docs/paper-trading#pnl-cards)) | The agent's PAPER fills on the coin, or one trade from your own ledger with `--ledger` |
32
+
33
+ `--scene all` puts the three scenes in one Browser source (two columns, the PnL card underneath) if you would rather crop one source than place three.
34
+
35
+ Every scene shows how old its data is (`data age 12s`, and `… old` next to each figure). The scene's age chip turns yellow once its newest figure is over two minutes old. The LARP line says "evidence, not a verdict", and every page ends with "read-only · addresses redacted · not financial advice".
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: docs-overlay-what-is-redacted
3
+ title: Streamer overlay (OBS) › What is redacted
4
+ kind: docs
5
+ page: overlay
6
+ page_title: Streamer overlay (OBS)
7
+ heading: What is redacted
8
+ anchor: what-is-redacted
9
+ url: https://dexterm.xyz/docs/overlay#what-is-redacted
10
+ tags:
11
+ - docs
12
+ - overlay
13
+ - redacted
14
+ - streamer
15
+ - obs
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/overlay.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ Redaction is always on, and the overlay applies it itself, whatever its source already did:
27
+
28
+ - Every wallet or mint address becomes its first and last four characters (`Fixt…AAAA`), in every field: tool names, summaries, agent names, LARP evidence, signal text.
29
+ - Key material (long base58 or hex runs) becomes `[key]`.
30
+ - Anything the spectator stream marks sensitive is shown as `[sensitive]`, and sensitive-named fields are dropped before they reach a scene.
31
+ - A coin, fill or ticket whose mint is not in the shortened shape is dropped, not shown.