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
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: streamer-overlay
3
+ title: Streamer overlay for OBS (dexterm overlay)
4
+ kind: app-help
5
+ screen: all
6
+ feature: streamer-overlay
7
+ tags:
8
+ - app-help
9
+ - overlay
10
+ - obs
11
+ - stream
12
+ - streamer
13
+ - browser source
14
+ - scene
15
+ - twitch
16
+ - spectator
17
+ - pnl
18
+ - coin card
19
+ - activity
20
+ commands:
21
+ - overlay
22
+ confidence: high
23
+ owner: maintainers
24
+ origin: app-help-generated
25
+ reviewed_by: generated@2026-10-16
26
+ generated_from: dexterm/app keymap + overlay + mcp tools + cli (task-1413)
27
+ sources:
28
+ - packages/tui/src/keymap.ts
29
+ - packages/cli/src/main.ts
30
+ - packages/mcp/src/server.ts
31
+ date: 2026-10-16
32
+ ---
33
+
34
+ Put the agent session on a live stream. `dexterm overlay` serves three transparent scenes for an OBS Browser source on 127.0.0.1: the agent activity feed, the coin card the agent is on (name, LARP evidence and the deterministic verdict, a top-10 holder bar, the live holder/rug signals) and the PnL card (the same renderer as the H key; stamped PAPER for the agent's simulated fills, or PAPER / LIVE by wallet mode with `--ledger <tradeId>`). `--scene all` puts all three in one source, `--theme cyberspace|ice|neon` picks a preset. It watches the read-only spectator stream a running `dexterm --spectate-mcp` (or `dexterm agent serve --spectate`) opens; `--replay FILE` plays a saved session and every scene then says SAMPLE DATA. Each printed URL works once (a single-use ticket, 10 minutes to paste it; press n for fresh ones). Addresses are always shortened, every scene shows the age of its data, and the overlay can only watch: it sends nothing back and cannot pause, trade, arm or sign. Full docs: https://dexterm.xyz/docs/overlay/
35
+
36
+ CLI: `dexterm overlay`.
@@ -0,0 +1,52 @@
1
+ ---
2
+ id: docs-autotrade-rug-proof-entries-experimental
3
+ title: Autotrade (paper) › Rug-proof entries (experimental)
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: Rug-proof entries (experimental)
8
+ anchor: rug-proof-entries-experimental
9
+ url: https://dexterm.xyz/docs/autotrade#rug-proof-entries-experimental
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - rug-proof
14
+ - entries
15
+ - experimental
16
+ - paper
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/autotrade.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ Most of the losses in our own paper testing were creator liquidity pulls on hand-made pools: one transaction, no warning, nothing to sell into afterwards. A pull cannot be front-run, so the main defense is to refuse those pools before entering. Turn it on per strategy with `entry.safety.rugproof` (the defaults below are what `{}` gives you):
28
+
29
+ ```json
30
+ "entry": { "safety": { "rugproof": {
31
+ "minPoolAgeMin": 10, "requireSafePool": true, "maxHolderLpPct": 10,
32
+ "maxWithdraws": 0, "withdrawScanTx": 25,
33
+ "liquidityRecheck": { "afterSec": 60, "floorX": 2, "maxDropPct": 15 },
34
+ "routeX": 2, "youngPool": { "underMin": 30, "maxSizePct": 50 },
35
+ "drainGuard": { "pollSec": 10, "liqDropPct": 25, "exitOnNoRoute": true, "minReserveSol": 0.5 }
36
+ } } }
37
+ ```
38
+
39
+ Before an entry, cheapest first, and **fail closed** (a gate that cannot be read refuses the coin as `-unknown` and looks again in 5 minutes):
40
+
41
+ - **pool age**: the pool itself is at least `minPoolAgeMin` minutes old. On our paper record this one gate refused all 8 pools that were later pulled and none of the 5 coins that later ran;
42
+ - **holders**: top-10 and dev shares under the strategy's own safety limits;
43
+ - **a second liquidity read** `afterSec` apart, both well above the exit floor and not falling fast;
44
+ - **pool structure**: a pump.fun migration, or a pool whose LP is verifiably burned or locked; a hand-made pool (wrapped SOL as the base mint) is refused, and so is LP held by its creator or by any one wallet over `maxHolderLpPct`;
45
+ - **withdraw history**: no liquidity `Withdraw` among the pool's newest transactions (a scan that cannot read every transaction refuses);
46
+ - **sell route**: Jupiter returns a token-to-SOL route for `routeX` times the position size.
47
+
48
+ Young or partly verified pools get at most `youngPool.maxSizePct` of the strategy's size. After an entry, the **drain guard** polls the pool every `pollSec` seconds and sells the whole position at once when liquidity falls more than `liqDropPct` from the entry read, the reserve is near zero, or Jupiter finds no route. Every refusal and exit has a named rule (`rugproof:<gate>`) in the run file and the ledger.
49
+
50
+ `execution.stuckWriteOffMin` (paper only, refused in any other mode) closes a paper bag that has been unsellable for that many minutes at what could actually be realized, so a dead coin stops holding a slot. In real mode the bag is still in your wallet and keeps its exit signals.
51
+
52
+ A backtest evaluates only the tick gates (pool age, holders, liquidity) and a pump.fun-mint proxy; the pool, LP, withdraw and route gates need live data. On the history so far, rug-proofing cut the losses a lot and **was still negative per entry**: it loses money more slowly, it does not make a strategy profitable.
@@ -28,6 +28,8 @@ date: 2026-10-16
28
28
 
29
29
  Install it once and the strategies in your `autotrade.json` (https://dexterm.xyz/docs/autotrade#the-autotradejson-file) keep running: they start when you log in, start again after a crash, never run twice, stop at once on any kill switch, and tell you when they cannot run.
30
30
 
31
+ dexterm autotrade service status: three paper strategies on the always-on service
32
+
31
33
  ```
32
34
  dexterm autotrade service install --dry-run # shows exactly what it would write; writes nothing
33
35
  dexterm autotrade service install --load # writes it and loads it
@@ -38,7 +40,7 @@ dexterm autotrade service logs # the end of its log
38
40
  dexterm autotrade service uninstall # stop, unload, remove exactly what install wrote
39
41
  ```
40
42
 
41
- - **What install writes.** One small job that runs `dexterm autotrade service ensure` every minute and at login: a LaunchAgent in `~/Library/LaunchAgents/` on macOS (no `KeepAlive`), a systemd user timer in `~/.config/systemd/user/` on Linux, a scheduled task on Windows. Install prints every file in full and checks that it parses before writing anything; `--dry-run` stops there, and without `--load` nothing is loaded. It runs while you are logged in (on Linux, `loginctl enable-linger` is your choice for after logout). Each `DEXTERM_HOME` gets its own job, so a test home never replaces your real one.
43
+ - **What install writes.** One small job that runs `dexterm autotrade service ensure` every minute and at login: a LaunchAgent in `~/Library/LaunchAgents/` on macOS (no `KeepAlive`), a systemd user timer in `~/.config/systemd/user/` on Linux (Windows is not supported). Install prints every file in full and checks that it parses before writing anything; `--dry-run` stops there, and without `--load` nothing is loaded. It runs while you are logged in (on Linux, `loginctl enable-linger` is your choice for after logout). Each `DEXTERM_HOME` gets its own job, so a test home never replaces your real one.
42
44
  - **What a tick does.** `ensure` does nothing while the service's heartbeat is fresh, and otherwise starts it. The service runs `dexterm autotrade run --all --paper` for every strategy you listed, with the same lock, run files, `Q` screen and switches as a run you start by hand. Flags for it go in `~/.dexterm/autotrade/service.json` (`{ "schema": "dexterm-autotrade-service-config/1", "runArgs": ["--model", "sonnet"] }`; only `--model`, `--sol-usd`, `--config`, `--replay`, `--ms-per-tick`, `--max-minutes` and `--stub`).
43
45
  - **After a crash or a restart.** A crash costs at most a minute. The new run checks the crashed run's file, takes over the paper positions it left open (their stops, take-profits, trails and maximum hold keep running from the original entry), and never buys a coin the crashed run already took. An order that had not filled never happened, and it is never sent again.
44
46
  - **A crash loop gives up.** Restarts after a crash wait 0, 0, 1, 2 and 4 minutes; the sixth crash within an hour leaves the service down with one notification. `dexterm autotrade service status --clear` lets it start again once you have read the log.
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: docs-autotrade-the-strategy-dashboard-dexterm-dash
3
+ title: Autotrade (paper) › Several strategies at once › The strategy dashboard (dexterm dash)
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: The strategy dashboard (dexterm dash)
8
+ anchor: the-strategy-dashboard-dexterm-dash
9
+ url: https://dexterm.xyz/docs/autotrade#the-strategy-dashboard-dexterm-dash
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - strategy
14
+ - dashboard
15
+ - dexterm
16
+ - dash
17
+ - several
18
+ - strategies
19
+ - once
20
+ - paper
21
+ confidence: high
22
+ owner: maintainers
23
+ origin: docs-generated
24
+ reviewed_by: generated@2026-10-16
25
+ generated_from: dexterm/site content/docs (task-1420)
26
+ sources:
27
+ - site/content/docs/autotrade.md
28
+ date: 2026-10-16
29
+ ---
30
+
31
+ ```
32
+ dexterm dash # http://127.0.0.1:4317/ until Ctrl-C
33
+ dexterm dash --json # the same numbers, printed
34
+ dexterm dash --export DIR --redact-mints # a static read-only snapshot (the page + data.json)
35
+ ```
36
+
37
+ The same run files, in a browser: an overview of every strategy, one strategy in detail (its book over time, drawdown, closed trades), rugs and stuck bags, a comparison against a baseline strategy you pick (`--baseline ID`) with a 95% interval, and live status, refreshed every 30 seconds. `--home DIR` reads another dexterm home (repeat it for several), `--books FILE` adds books your own scripts wrote (`dexterm-dash-books/1`). The server listens on 127.0.0.1 only, makes no network request, loads nothing from the internet and changes nothing; `--allow-host NAME` lets a private proxy you run in front of it answer. Paper results are simulated.
@@ -19,4 +19,6 @@ sources:
19
19
  date: 2026-10-16
20
20
  ---
21
21
 
22
- Strategies you write or copy from presets, validated in one file, and backtests on your own recorded history with a held-out check. Paper only, self-directed, not financial advice.
22
+ Strategies you write or copy from presets, validated in one file, and backtests on your own recorded history with a held-out check. Paper by default, self-directed, not financial advice.
23
+
24
+ a backtest and its held-out sweep on the Q screen (PAPER, a small recorded fixture tape)
@@ -28,6 +28,6 @@ sources:
28
28
  date: 2026-10-16
29
29
  ---
30
30
 
31
- Stop here until you are comfortable reading the app. Trading in dexterm is PAPER simulation, which uses pretend funds, and the keypress gate (a required physical key press) is on by default. dexterm signs nothing and sends no transaction; live trading happens in a Telegram trading bot of your choice, outside dexterm. No analyst, voice, or connected program can trade.
31
+ Stop here until you are comfortable reading the app. Trading in dexterm is PAPER simulation by default, which uses pretend funds, and the keypress gate (a required physical key press) is on by default. dexterm signs nothing and sends no transaction. Real mode is experimental; signals to your own executor; dexterm never holds a key; not financial advice. No analyst, voice, or connected program can trade or turn real mode on.
32
32
 
33
- Never enter a seed phrase, private key, password, API key, or authentication token. Read the paper trading guide (https://dexterm.xyz/docs/paper-trading) and live trading (https://dexterm.xyz/docs/live-trading) before considering anything beyond the read-only walkthrough.
33
+ Never enter a seed phrase, private key, password, API key, or authentication token. Read the paper trading guide (https://dexterm.xyz/docs/paper-trading), real mode (https://dexterm.xyz/docs/real-mode) and live trading (https://dexterm.xyz/docs/live-trading) before considering anything beyond the read-only walkthrough.
@@ -34,6 +34,5 @@ Copy only the text inside a code box. Do not copy a leading `$`; it represents t
34
34
  |---|---|---|
35
35
  | macOS Terminal | Command-C | Command-V |
36
36
  | Linux terminal | Ctrl-Shift-C | Ctrl-Shift-V |
37
- | Windows Terminal | Ctrl-Shift-C | Ctrl-Shift-V |
38
37
 
39
38
  Right-click and choose **Paste** if the shortcut does not work. A multi-line paste can run several commands, so this guide uses one command per box. Never paste a command you do not understand; read the sentence above it first.
@@ -31,6 +31,6 @@ sources:
31
31
  date: 2026-10-16
32
32
  ---
33
33
 
34
- Close and reopen the terminal first. Then run `npm prefix -g` to see npm's global install folder. On macOS/Linux, npm's executable folder must be on your PATH; the installer output normally tells you the exact line for your setup. Do not paste a PATH fix from a stranger. On Windows, rerun the Node.js installer and keep its “Add to PATH” option enabled, then reopen Windows Terminal.
34
+ Close and reopen the terminal first. Then run `npm prefix -g` to see npm's global install folder. On macOS/Linux, npm's executable folder must be on your PATH; the installer output normally tells you the exact line for your setup. Do not paste a PATH fix from a stranger.
35
35
 
36
- You can confirm whether the shell can find dexterm with `command -v dexterm` on macOS/Linux or `Get-Command dexterm` in PowerShell.
36
+ You can confirm whether the shell can find dexterm with `command -v dexterm`.
@@ -27,7 +27,7 @@ sources:
27
27
  date: 2026-10-16
28
28
  ---
29
29
 
30
- Open Terminal, a Linux terminal, or PowerShell again and run:
30
+ Open Terminal or a Linux terminal again and run:
31
31
 
32
32
  ```sh reopen dexterm
33
33
  dexterm
@@ -30,8 +30,8 @@ sources:
30
30
  date: 2026-10-16
31
31
  ---
32
32
 
33
- - A **terminal** is a text window for giving your computer instructions. macOS calls its built-in app Terminal. Windows users should use PowerShell inside Windows Terminal. Linux includes a terminal app with the desktop.
34
- - A **shell** is the program inside that window that reads what you type. PowerShell is a shell; `zsh` and `bash` are common macOS and Linux shells. You do not need to learn which one you have.
33
+ - A **terminal** is a text window for giving your computer instructions. macOS calls its built-in app Terminal. Linux includes a terminal app with the desktop. dexterm runs on macOS and Linux; Windows is not supported.
34
+ - A **shell** is the program inside that window that reads what you type. `zsh` and `bash` are common macOS and Linux shells. You do not need to learn which one you have.
35
35
  - A **prompt** is the short text, often ending in `$` or `>`, that means the shell is ready. Do not type the prompt itself.
36
36
  - A **command** is one line you type after the prompt, such as `dexterm doctor`.
37
37
  - **Output** is the text the computer prints after a command. Output is an answer, not another command to copy blindly.
@@ -26,4 +26,4 @@ sources:
26
26
  date: 2026-10-16
27
27
  ---
28
28
 
29
- Windows x64 is experimental: the full CI suite passed for 0.1.4, though some file-permission checks are skipped. File permissions rely on your Windows user profile; voice has no Windows speech engine; browser-opening actions show a URL instead; `doctor` may print a macOS/Linux repair command; and the npm-installed `claude.cmd` is not detected as a usable analyst binary. These limits do not change the key rule: dexterm never holds your wallet keys.
29
+ dexterm supports macOS and Linux. Windows is not supported: private files rely on macOS and Linux file permissions, voice has no Windows engine, browser-opening actions and `doctor`'s repair commands assume macOS or Linux, and the npm-installed `claude.cmd` is not detected as a usable analyst binary. The supported platforms (https://dexterm.xyz/docs/getting-started#supported-platforms) table has the details.
@@ -27,4 +27,4 @@ sources:
27
27
  date: 2026-10-16
28
28
  ---
29
29
 
30
- Open the Start menu, type **Windows Terminal**, and choose the **PowerShell** tab. Windows support is experimental and has not yet passed the project's test run; the known limits are listed under Windows expectations (https://dexterm.xyz/docs/beginners#windows-expectations).
30
+ Windows is not supported. See Windows expectations (https://dexterm.xyz/docs/beginners#windows-expectations).
@@ -37,3 +37,5 @@ A strategy you build climbs one ladder, one rung at a time:
37
37
  | real | real mode armed on your own terminal, with caps you set, above the evidence floor: a completed forward test with at least 10 closed paper trades and a backtest | only you, with a typed phrase (real mode (https://dexterm.xyz/docs/real-mode)) |
38
38
 
39
39
  Every rung counts evidence measured on the strategy's **exact rules**. Renaming it, rewording its description or arming it for real keeps its evidence; changing any rule (an entry filter, a size, an exit, a limit) starts the ladder again from draft. No rung can be skipped, and `dexterm autotrade journey <id>` (or `J` on the `Q` screen) always shows where a strategy stands and what the next rung needs.
40
+
41
+ the journey view (J on the Q screen): one rung at a time, the forward test set beside its backtest (PAPER)
@@ -22,3 +22,5 @@ date: 2026-10-16
22
22
  ---
23
23
 
24
24
  Ask the analyst for a strategy, then back-test it on your recorded history, forward-test it on live data on paper, and promote it one step at a time to the always-on service and, only if you choose, to real mode. Every step needs evidence; nothing is promoted by the model. Paper by default, not financial advice.
25
+
26
+ a strategy the analyst proposed in chat, as a diff you apply with a key (PAPER)
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: docs-classifier-hosted-jev-with-your-own-key
3
+ title: Classification models › Hosted Jev with your own key
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: Hosted Jev with your own key
8
+ anchor: hosted-jev-with-your-own-key
9
+ url: https://dexterm.xyz/docs/classifier#hosted-jev-with-your-own-key
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - hosted
14
+ - jev
15
+ - own
16
+ - key
17
+ - classification
18
+ - models
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/classifier.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ ```
30
+ dexterm classifier key set paste your TypeSafe API key (hidden input; stored 0600 under ~/.dexterm/keys)
31
+ dexterm classifier pick jev-hosted
32
+ ```
33
+
34
+ dexterm never ships or shares a key. The key is sent only to `https://api.typesafe.ai`, never printed, and never stored in `classifier.json`. `TYPESAFE_API_KEY` in the environment works too. Each call counts tokens. Set your price per million input tokens in `~/.dexterm/classifier.json` (`jev.pricePerMTokUsd`) to see a cost in dollars; until you do, the cost shows as *unpriced*, never as $0. A daily call cap (`jev.maxCallsPerDay`, default 1,000) stops calls before they reach the network. A rate limit from the API is reported with its retry time.
@@ -0,0 +1,52 @@
1
+ ---
2
+ id: docs-classifier-how-they-measured-on-dexterm-s-own-history
3
+ title: Classification models › How they measured on dexterm's own history
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: How they measured on dexterm's own history
8
+ anchor: how-they-measured-on-dexterm-s-own-history
9
+ url: https://dexterm.xyz/docs/classifier#how-they-measured-on-dexterm-s-own-history
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - they
14
+ - measured
15
+ - dexterm
16
+ - own
17
+ - history
18
+ - classification
19
+ - models
20
+ confidence: high
21
+ owner: maintainers
22
+ origin: docs-generated
23
+ reviewed_by: generated@2026-10-16
24
+ generated_from: dexterm/site content/docs (task-1420)
25
+ sources:
26
+ - site/content/docs/classifier.md
27
+ date: 2026-10-16
28
+ ---
29
+
30
+ dexterm's benchmark (October 2026) asked each model about coins whose outcome we already know: 1,054 coins from the LARP eval set (rugged or dead within 72 hours?) and 1,800 coins from the recorder's history (drained within 6 hours?). The rules and the pick were fixed before the final held-out coins were scored, and those were scored once. AUROC says how well a model ranks the coins that went bad above the ones that did not: 0.5 is a coin flip, 1.0 is perfect.
31
+
32
+ | model | where it ran | drained within 6 h (held-out) | bad within 72 h (held-out) | time per coin | cost |
33
+ |---|---|---|---|---|---|
34
+ | Built-in scores (default) | anywhere | 0.50 | 0.71 | under 1 ms | free |
35
+ | Kev 0.8B (Q8) | Intel Mac mini CPU | 0.54 | 0.46 | 3-7 s | free |
36
+ | Kev 4B (Q4) | desktop and Mac mini CPUs | 0.52 | 0.73 | 5-14 s | free |
37
+ | Kev 9B (Q4) | RTX 4080 GPU | 0.53 | 0.79 | 0.06-0.2 s | free |
38
+ | Claude haiku (comparison only) | Claude CLI | 0.62 | 0.86 | about 5 s | about $0.0009 |
39
+ | Kev 27B, hosted Jev, open JEV | not measured | | | | |
40
+
41
+ What this means:
42
+
43
+ - **No model is good at this yet.** Predicting a coin's next six hours from what is known now is hard for everything we tried, including the built-in scores. Treat every estimate as one weak input, never as a verdict.
44
+ - **Kev 0.8B ranks coins no better than chance** and gives almost the same number for every coin, so dexterm never suggests it.
45
+ - **Kev 4B** is the model `dexterm classifier pull` suggests if you want a local model: it was the best Kev on the development coins. On the held-out coins it tied the built-in scores (no better, no worse), so the built-in scores stay the default.
46
+ - **Claude (zero-shot) ranked best** on both questions, but it needs your Claude login, the network and a small cost per coin, so it is a comparison point, not a default.
47
+ - **Kev 9B** (measured later, on a GPU) is fast, a fraction of a second per coin, but no better. On the development coins it trailed Kev 4B on the drain question. On the held-out coins it tied both the built-in scores and Kev 4B: its 0.79 on the LARP question and 0.53 on drain are within chance variation of theirs. So `kev-4b-q4` stays the suggestion, and the 9B model is there if you want to try it.
48
+ - **Kev 27B and the open JEV models were not measured** (no file llama.cpp can run, or a GPU larger than 16 GB needed). They may do better; we do not know.
49
+ - **Hosted Jev was not measured**: it needs a TypeSafe key, and dexterm's own tests run against a stand-in server only.
50
+ - Kev was trained on general text decisions (intents, reviews, policies), not on memecoins. Its authors' accuracy figures are about those tasks, not this one.
51
+
52
+ `dexterm classifier bench` times the model you picked on your own machine (seconds per coin and per 1,000 coins).
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: docs-classifier-set-up-kev-on-your-own-machine
3
+ title: Classification models › Set up Kev on your own machine
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: Set up Kev on your own machine
8
+ anchor: set-up-kev-on-your-own-machine
9
+ url: https://dexterm.xyz/docs/classifier#set-up-kev-on-your-own-machine
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - set
14
+ - kev
15
+ - own
16
+ - machine
17
+ - classification
18
+ - models
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/classifier.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ ```
30
+ 1. dexterm classifier doctor your RAM, CPU and GPU, and the model tier it recommends
31
+ 2. dexterm classifier pull kev-4b-q4 shows the size and the source, asks, checks the disk, verifies the sha256
32
+ 3. dexterm classifier pick kev-local kev-4b-q4
33
+ 4. dexterm classifier serve runs llama-server on 127.0.0.1 (leave it open)
34
+ 5. dexterm classifier try one labelled estimate, to see it work
35
+ ```
36
+
37
+ You need llama.cpp's `llama-server` from a build released on 2026-10-02 or later: that is when it gained the `/v1/systemone` endpoint decision models use. Put it on your `PATH`, or point `DEXTERM_LLAMA_SERVER` at it. Downloads come from the pinned revision of the model's Hugging Face repo and are checked against a sha256 before use. Once a model is downloaded, it works fully offline.
38
+
39
+ If the picked model is not running, the built-in scores answer instead, and the answer says it is a fallback.
@@ -0,0 +1,35 @@
1
+ ---
2
+ id: docs-classifier-settings
3
+ title: Classification models › Settings
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: Settings
8
+ anchor: settings
9
+ url: https://dexterm.xyz/docs/classifier#settings
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - settings
14
+ - classification
15
+ - models
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/classifier.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ `~/.dexterm/classifier.json` (0600). Only `dexterm classifier` writes it.
27
+
28
+ | key | what it does |
29
+ |---|---|
30
+ | `provider` | `heuristic` (default), `kev-local`, `jev-hosted`, `jev-open`, `claude`, `ollama-llm` |
31
+ | `default` | the shipped recommendation for a local model |
32
+ | `kev.endpoint`, `kev.model`, `kev.threads` | the local server (loopback only) and the model id |
33
+ | `jev.endpoint`, `jev.model`, `jev.pricePerMTokUsd`, `jev.maxCallsPerDay` | hosted Jev |
34
+ | `calibration` | optional Platt maps per model and question, fitted on labelled rows |
35
+ | `fallback` | answer with the built-in scores when the provider is unreachable (default `true`) |
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-classifier-the-choices
3
+ title: Classification models › The choices
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: The choices
8
+ anchor: the-choices
9
+ url: https://dexterm.xyz/docs/classifier#the-choices
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - choices
14
+ - classification
15
+ - models
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/classifier.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ | provider | what it is | runs where | cost |
27
+ |---|---|---|---|
28
+ | `heuristic` | the built-in scores: the H1 rug score and the LARP link score | inside dexterm | $0, instant |
29
+ | `kev-local` | Kev, an open decision model (Apache-2.0), run by llama.cpp | your machine | $0 per call after the download |
30
+ | `jev-hosted` | Jev, TypeSafe's hosted flagship decision model | TypeSafe's API, with **your own** key | per call, on your TypeSafe account |
31
+ | `jev-open` | the open JEV students (`autotrust/JEV-*`, Apache-2.0) on a vLLM server | your GPU server (24 GB or more) | $0 per call |
32
+ | `claude`, `ollama-llm` | a chat model asked for probabilities (a comparison baseline) | your Claude CLI / your Ollama | your plan / $0 |
33
+
34
+ A decision model reads the coin's facts once and scores every answer in one pass, without writing text. That is why it can be fast enough to score a whole screener.
35
+
36
+ The default is `heuristic`: dexterm downloads nothing and calls nothing on first run.
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: docs-classifier-where-it-plugs-in
3
+ title: Classification models › Where it plugs in
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: Where it plugs in
8
+ anchor: where-it-plugs-in
9
+ url: https://dexterm.xyz/docs/classifier#where-it-plugs-in
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - where
14
+ - plugs
15
+ - classification
16
+ - models
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/classifier.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ - **Agents (MCP)**: `classify_coin` (one coin), `classify_batch` (up to 100 coins, with triage: flag, pass, or escalate the uncertain ones to Claude or to you) and `classifier_status`.
28
+ - **Watch rules**: the `rugp` field is the drain estimate of a coin the classifier has scored, for example `when rugp > 0.8 then alert(warn, "classifier: high drain estimate") scope watchlist`. A coin that has not been scored never matches.
29
+ - **Research**: the benchmark writes each coin's probabilities as columns, so entry-gate research can test them as one more input.
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: docs-classifier-which-model-for-which-machine
3
+ title: Classification models › Set up Kev on your own machine › Which model for which machine
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ heading: Which model for which machine
8
+ anchor: which-model-for-which-machine
9
+ url: https://dexterm.xyz/docs/classifier#which-model-for-which-machine
10
+ tags:
11
+ - docs
12
+ - classifier
13
+ - which
14
+ - model
15
+ - machine
16
+ - set
17
+ - kev
18
+ - own
19
+ - classification
20
+ - models
21
+ confidence: high
22
+ owner: maintainers
23
+ origin: docs-generated
24
+ reviewed_by: generated@2026-10-16
25
+ generated_from: dexterm/site content/docs (task-1420)
26
+ sources:
27
+ - site/content/docs/classifier.md
28
+ date: 2026-10-16
29
+ ---
30
+
31
+ `dexterm classifier doctor` reads your RAM, CPU and GPU and suggests one of these:
32
+
33
+ | your machine | suggestion | what to expect |
34
+ |---|---|---|
35
+ | NVIDIA GPU with 12 GB or more | `kev-4b-q4` (`kev-9b-q4` also fits) | Kev 9B took about 0.1-0.2 s per coin on an RTX 4080 but scored no better than Kev 4B (see below) |
36
+ | NVIDIA GPU with 6 GB or more | `kev-4b-q4` (3 GB download) | |
37
+ | Apple Silicon with 16 GB or more | `kev-4b-q4` | |
38
+ | A CPU with 16 GB of RAM and 8 threads or more | `kev-4b-q4`, for one coin at a time | 5-20 s per coin measured on shared desktop CPUs: fine for a coin you open, too slow to score a whole screener |
39
+ | Anything smaller | the built-in scores | |
40
+
41
+ `kev-0.8b-q8` is in the list but not suggested: on dexterm's own history it ranked coins no better than chance.
42
+ Serving uses about 2.5 GB of RAM for the 0.8B model and about 5.5 GB for the 4B model; the 9B model used about 6.6 GB of GPU memory.
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: docs-classifier
3
+ title: Classification models
4
+ kind: docs
5
+ page: classifier
6
+ page_title: Classification models
7
+ url: https://dexterm.xyz/docs/classifier
8
+ tags:
9
+ - docs
10
+ - classifier
11
+ - classification
12
+ - models
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/classifier.md
20
+ date: 2026-10-16
21
+ ---
22
+
23
+ Pick the model that scores coins with probabilities (an open Kev model on your own machine, TypeSafe's hosted Jev with your own key, or the built-in scores), with how each one measured on dexterm's own labelled history.
24
+
25
+ **Experimental.** A classification model answers *typed questions* about one coin with a probability for every possible answer. dexterm asks two questions:
26
+
27
+ - `drain_6h`: will this coin be drained within 6 hours (liquidity pulled, or the price under a fifth of now)?
28
+ - `outcome_6h`: RUG, WIN (at least 3x on a pool that still holds $10k) or DUD over the next 6 hours.
29
+
30
+ A third set, `narrative`, sorts a coin into a narrative category (animal, AI, politics, celebrity, culture, tech, other).
31
+
32
+ Every answer is a **model estimate**: it carries the model id, the latency, the cost and a note on how its probabilities were calibrated. It is not advice and not a trade signal. Nothing here signs, trades, arms a strategy or changes a limit. The token's own text (name, symbol, description) goes through the prompt firewall first, and text that tries to steer the model (a bio that tells it what to answer) is removed before any model sees it.
@@ -36,7 +36,7 @@ $ dexterm --screen screener --replay /tmp/rec.json # the same frame, n
36
36
  $ dexterm mcp # the read-only MCP server on stdio
37
37
  $ dexterm popup --self-test # chart popup self-test
38
38
  $ dexterm x login # Login with X (your own X app; read scopes only)
39
- $ dexterm --workspace morning-hud # start in a workspace (task-1358)
39
+ $ dexterm --workspace morning-hud # start in a workspace
40
40
  $ dexterm pack verify ./some-pack # the install card for a shareable pack
41
41
  ```
42
42
 
@@ -37,10 +37,13 @@ $ dexterm record install --dry-run # print the macOS LaunchAgent it would
37
37
  $ dexterm record install --load # write it to ~/Library/LaunchAgents (no sudo) and load it
38
38
  $ dexterm record uninstall --unload # stop and remove it
39
39
  $ dexterm record run --focus-ticks --retention-mb 3000 # also sample focus coins every 5-10 s; evict old history at 3 GB
40
+ $ dexterm record run --exit-probes --focus-module ./my-focus.mjs # + a sell quote a minute for held coins; extra focus coins from your module
40
41
  ```
41
42
 
42
43
  - **Nothing turns itself on.** The collector runs only when you start it. `install` writes a user-level LaunchAgent and loads it only with `--load`. A LaunchAgent does not start before you log in.
43
44
  - **Same budgets as the app.** Every request goes through the data layer's rate limiter and health gate, and the outcome sweeps keep their own per-sweep and per-day caps. It never builds a signer, never trades and never prints an RPC key.
44
45
  - **A disk cap.** Above `--max-db-mb` (1024 by default) it pauses new observations, while labels and retention keep running, so the database cannot grow without bound. With `--retention-mb N` it never pauses: once the used space reaches N MB the oldest history goes first (the newest hour is always kept). `--retention-days D` expires snapshot rows, outcome re-checks included, after D days instead of 90.
45
46
  - **Focus ticks for autotrade backtests** (`--focus-ticks`): a sample every 5 seconds for coins you hold on paper or have open and every 10 seconds for your watchlist and autotrade candidates, plus 1-minute candles built from those samples, in DexScreener batches of 30 with a daily call ceiling. What is kept and for how long is in recorded history (https://dexterm.xyz/docs/data-sources#recorded-history-and-retention). `install` writes these flags into the LaunchAgent only when you pass them.
47
+ - **Exit probes** (`--exit-probes`, implies `--focus-ticks`): once a minute, for every coin you hold, a keyless Jupiter quote to sell $50 of it into SOL, written as the SOL out, the price impact and the hops, or the error ("no route" is a drained pool). Quotes only: nothing is built, signed or sent. At most 4 quotes a minute for all coins together and a daily ceiling, from the same Jupiter budget as the app.
48
+ - **Your own focus coins** (`--focus-module PATH`, implies `--focus-ticks`): an ES module whose `focus(now)` returns extra coins (a mint and a role: `held`, `open`, `candidate` or `watch`) for the tick lane, for coins your own tools hold outside dexterm.
46
49
  - **Recurring backtests.** 0.1.3 also ships the logic behind recurring skill backtests: a rolling held-out window, a frozen comparison set, and a gate that only *proposes* a tuning when it beats the noise. Nothing changes a skill on your machine. A tuning reaches you only through a normal release, with its measured numbers, including weak ones (see LARP detector (https://dexterm.xyz/docs/larp)).
@@ -26,6 +26,6 @@ date: 2026-10-16
26
26
 
27
27
  Follow a wallet and see its decoded swaps and PnL; turn its buys into a mirror PROPOSAL with one key; or let a capped, keypress-armed auto-mirror propose and arm them for you. Your wallet, your caps, your keys.
28
28
 
29
- Copy trading in dexterm is a **personal tool for your own wallet**. You pick the wallets, you set the caps, and the paper wallet simulates every mirror. dexterm never holds funds or keys, never signs, never copies for anyone else, never offers pooled or hosted copying, never publishes a leader list, and takes no fee on a mirrored trade. The whole feature is labelled **in progress**: it is on main and tested on fixtures and the task-1286 spike recordings, and every mirror, the auto tier included, fills through the paper executor. No mirror moves real funds.
29
+ Copy trading in dexterm is a **personal tool for your own wallet**. You pick the wallets, you set the caps, and the paper wallet simulates every mirror. dexterm never holds funds or keys, never signs, never copies for anyone else, never offers pooled or hosted copying, never publishes a leader list, and takes no fee on a mirrored trade. The whole feature is labelled **in progress**: it is on main and tested on fixtures and the wallet-intel spike recordings, and every mirror, the auto tier included, fills through the paper executor. No mirror moves real funds.
30
30
 
31
31
  It is built in three stages, each behind the previous one's gate.
@@ -32,5 +32,6 @@ What the local recorder keeps, all in your own `--db` file and never uploaded (s
32
32
  - **Snapshots**: a row per coin when its price, liquidity, holders or volume moved materially (about 5%), or every 30 minutes, while a screen listed it, plus outcome re-checks at 1 h to 72 h after it left. Raw JSON goes after 7 days, rows thin to one per coin per minute after 24 hours, and rows expire after 90 days (`--retention-days D` sets that age).
33
33
  - **Autotrade ticks** (`autotrade_ticks`, opt-in with `dexterm record run --focus-ticks`): a sample every 5 seconds for coins you hold on paper or have open, every 10 seconds for your watchlist and autotrade candidates: price, liquidity, market cap, 5-minute and 1-hour volume, buys and sells, and price change. At most 60 coins, in DexScreener batches of 30 (never one call per coin, and no Jupiter calls), queued inside the app's own limiter, skipped while DexScreener is rate-limiting, with a daily ceiling of 36,000 calls. Kept 14 days.
34
34
  - **1m candles** (`autotrade_candles_1m`): open, high, low and close per minute for the same coins, built from those samples, so a high or low is the highest or lowest sample, not every trade. Kept 90 days.
35
+ - **Exit probes** (`exit_probes`, opt-in with `dexterm record run --exit-probes`): a Jupiter sell quote of $50 a minute per held coin: SOL out, price impact, route hops or the error. Kept with the ticks; the size cap may evict them.
35
36
  - **Outcome labels**, verdicts and coin creators: kept.
36
37
  - **Size cap** (opt-in, `dexterm record run --retention-mb N`): when the database's used space reaches the cap, cached answers more than a day past their expiry are cleared first; if that is not enough, the oldest history (ticks, candles and snapshots, outcome re-checks included) is removed first until it is back under, and recording never pauses; the newest hour is always kept. Without it, the older `--max-db-mb` cap pauses new snapshots instead. SQLite reuses the freed space rather than shrinking the file.
@@ -41,10 +41,10 @@ $ dexterm doctor
41
41
  The package is named `dexterm-cli` because npm refuses the name `dexterm` as too similar to `xterm`. The command it installs is `dexterm`. The package ships compiled JavaScript, so it needs no build step. Every GitHub release carries a build-provenance attestation and `SHA256SUMS` you can verify (see the trust page (https://dexterm.xyz/trust/)).
42
42
 
43
43
  ```sh install from the release
44
- $ # download dexterm-0.2.0-src.tar.gz and SHA256SUMS from the releases page, then:
44
+ $ # download dexterm-0.2.1-src.tar.gz and SHA256SUMS from the releases page, then:
45
45
  $ shasum -a 256 -c SHA256SUMS --ignore-missing
46
- $ gh attestation verify dexterm-0.2.0-src.tar.gz --repo dexterm-xyz/dexterm
47
- $ tar -xzf dexterm-0.2.0-src.tar.gz && cd dexterm-0.2.0
46
+ $ gh attestation verify dexterm-0.2.1-src.tar.gz --repo dexterm-xyz/dexterm
47
+ $ tar -xzf dexterm-0.2.1-src.tar.gz && cd dexterm-0.2.1
48
48
  $ ./install.sh
49
49
  $ dexterm doctor
50
50
  ```