dexterm-cli 0.1.7 → 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 (233) hide show
  1. package/dist/packages/agents/src/spectator.js +31 -3
  2. package/dist/packages/agents/src/tiers.js +12 -0
  3. package/dist/packages/agents/src/tools.js +13 -5
  4. package/dist/packages/autotrade/assets/limits.schema.json +569 -0
  5. package/dist/packages/autotrade/examples/executor/README.md +70 -0
  6. package/dist/packages/autotrade/examples/executor/jsonl-tail-executor.mjs +57 -0
  7. package/dist/packages/autotrade/examples/executor/kit.mjs +144 -0
  8. package/dist/packages/autotrade/examples/executor/signal-cmd-executor.mjs +25 -0
  9. package/dist/packages/autotrade/examples/executor/telegram-bot-recipe.md +47 -0
  10. package/dist/packages/autotrade/examples/executor/webhook-executor.mjs +47 -0
  11. package/dist/packages/autotrade/src/backtest.js +7 -2
  12. package/dist/packages/autotrade/src/chat/config.js +4 -2
  13. package/dist/packages/autotrade/src/chat/control.js +1 -0
  14. package/dist/packages/autotrade/src/chat/notify.js +16 -6
  15. package/dist/packages/autotrade/src/chat/secrets.js +25 -18
  16. package/dist/packages/autotrade/src/chat/service.js +3 -0
  17. package/dist/packages/autotrade/src/engine.js +16 -2
  18. package/dist/packages/autotrade/src/executor-health.js +217 -0
  19. package/dist/packages/autotrade/src/fleet.js +5 -2
  20. package/dist/packages/autotrade/src/forward.js +355 -0
  21. package/dist/packages/autotrade/src/index.js +21 -0
  22. package/dist/packages/autotrade/src/journey.js +477 -0
  23. package/dist/packages/autotrade/src/limits.js +682 -0
  24. package/dist/packages/autotrade/src/outbox.js +394 -0
  25. package/dist/packages/autotrade/src/paper-limits.js +87 -0
  26. package/dist/packages/autotrade/src/real-mode.js +688 -0
  27. package/dist/packages/autotrade/src/receipts.js +330 -0
  28. package/dist/packages/autotrade/src/report.js +168 -0
  29. package/dist/packages/autotrade/src/rugproof-probe.js +415 -0
  30. package/dist/packages/autotrade/src/rugproof.js +231 -0
  31. package/dist/packages/autotrade/src/runner.js +194 -28
  32. package/dist/packages/autotrade/src/service-guard.js +125 -0
  33. package/dist/packages/autotrade/src/service-install.js +215 -0
  34. package/dist/packages/autotrade/src/service-recover.js +232 -0
  35. package/dist/packages/autotrade/src/service.js +289 -0
  36. package/dist/packages/autotrade/src/sessions.js +16 -7
  37. package/dist/packages/autotrade/src/signal-channels.js +312 -0
  38. package/dist/packages/autotrade/src/signal.js +196 -0
  39. package/dist/packages/autotrade/src/strategy-stats.js +344 -0
  40. package/dist/packages/autotrade/src/strategy.js +15 -2
  41. package/dist/packages/autotrade/src/trade-ledger.js +2 -2
  42. package/dist/packages/classifier/src/calibrate.js +138 -0
  43. package/dist/packages/classifier/src/classify.js +107 -0
  44. package/dist/packages/classifier/src/config.js +220 -0
  45. package/dist/packages/classifier/src/dossier.js +95 -0
  46. package/dist/packages/classifier/src/hardware.js +63 -0
  47. package/dist/packages/classifier/src/index.js +18 -0
  48. package/dist/packages/classifier/src/models.js +111 -0
  49. package/dist/packages/classifier/src/providers/heuristic.js +77 -0
  50. package/dist/packages/classifier/src/providers/http.js +63 -0
  51. package/dist/packages/classifier/src/providers/jev-open.js +86 -0
  52. package/dist/packages/classifier/src/providers/llm.js +89 -0
  53. package/dist/packages/classifier/src/providers/systemone-http.js +95 -0
  54. package/dist/packages/classifier/src/questions.js +97 -0
  55. package/dist/packages/classifier/src/registry.js +42 -0
  56. package/dist/packages/classifier/src/snapshot.js +31 -0
  57. package/dist/packages/classifier/src/systemone.js +88 -0
  58. package/dist/packages/classifier/src/types.js +18 -0
  59. package/dist/packages/cli/assets/dash/dash.css +139 -0
  60. package/dist/packages/cli/assets/dash/dash.js +200 -0
  61. package/dist/packages/cli/assets/dash/icon.svg +1 -0
  62. package/dist/packages/cli/assets/dash/index.html +36 -0
  63. package/dist/packages/cli/src/analyst/backend.js +3 -2
  64. package/dist/packages/cli/src/analyst/codex.js +3 -2
  65. package/dist/packages/cli/src/app-help-gen.js +26 -2
  66. package/dist/packages/cli/src/autotrade-cmd/audit.js +19 -2
  67. package/dist/packages/cli/src/autotrade-cmd/backtest.js +21 -4
  68. package/dist/packages/cli/src/autotrade-cmd/executor.js +91 -0
  69. package/dist/packages/cli/src/autotrade-cmd/fleet.js +16 -5
  70. package/dist/packages/cli/src/autotrade-cmd/forward.js +283 -0
  71. package/dist/packages/cli/src/autotrade-cmd/journey.js +208 -0
  72. package/dist/packages/cli/src/autotrade-cmd/limits.js +393 -0
  73. package/dist/packages/cli/src/autotrade-cmd/receipt.js +63 -0
  74. package/dist/packages/cli/src/autotrade-cmd/report.js +79 -0
  75. package/dist/packages/cli/src/autotrade-cmd/run.js +268 -14
  76. package/dist/packages/cli/src/autotrade-cmd/service.js +873 -0
  77. package/dist/packages/cli/src/autotrade-cmd/signal.js +824 -0
  78. package/dist/packages/cli/src/autotrade-cmd.js +50 -4
  79. package/dist/packages/cli/src/classifier-cmd.js +353 -0
  80. package/dist/packages/cli/src/classifier-live.js +81 -0
  81. package/dist/packages/cli/src/dash/data.js +217 -0
  82. package/dist/packages/cli/src/dash/server.js +92 -0
  83. package/dist/packages/cli/src/dash-cmd.js +113 -0
  84. package/dist/packages/cli/src/doctor.js +34 -0
  85. package/dist/packages/cli/src/ledger-cmd.js +4 -2
  86. package/dist/packages/cli/src/live/screens/token-live.js +4 -0
  87. package/dist/packages/cli/src/live/signals.js +8 -0
  88. package/dist/packages/cli/src/main.js +98 -6
  89. package/dist/packages/cli/src/mcp-follow.js +21 -1
  90. package/dist/packages/cli/src/narratives-cmd.js +147 -0
  91. package/dist/packages/cli/src/narratives.js +114 -0
  92. package/dist/packages/cli/src/overlay/model.js +147 -0
  93. package/dist/packages/cli/src/overlay/page.js +146 -0
  94. package/dist/packages/cli/src/overlay/pnl.js +75 -0
  95. package/dist/packages/cli/src/overlay/server.js +170 -0
  96. package/dist/packages/cli/src/overlay-cmd.js +367 -0
  97. package/dist/packages/cli/src/pnl-card.js +4 -0
  98. package/dist/packages/cli/src/record-cmd.js +82 -11
  99. package/dist/packages/cli/src/rules-cmd.js +2 -1
  100. package/dist/packages/cli/src/rules.js +24 -4
  101. package/dist/packages/cli/src/screens/autotrade-journey.js +134 -0
  102. package/dist/packages/cli/src/screens/autotrade-keys.js +13 -0
  103. package/dist/packages/cli/src/screens/autotrade-screen.js +57 -6
  104. package/dist/packages/cli/src/screens/autotrade-ui.js +17 -7
  105. package/dist/packages/cli/src/screens/autotrade-worker.js +4 -2
  106. package/dist/packages/cli/src/screens/narrative.js +154 -2
  107. package/dist/packages/cli/src/state.js +1 -0
  108. package/dist/packages/cli/src/telegram-cmd.js +4 -1
  109. package/dist/packages/cli/src/version.js +1 -1
  110. package/dist/packages/custom/src/rules.js +5 -1
  111. package/dist/packages/data/src/trade/ledger/schema.js +1 -1
  112. package/dist/packages/mcp/assets/kb/app-help/autotrade-executor-kit.md +44 -0
  113. package/dist/packages/mcp/assets/kb/app-help/autotrade-journey.md +46 -0
  114. package/dist/packages/mcp/assets/kb/app-help/autotrade-limits.md +48 -0
  115. package/dist/packages/mcp/assets/kb/app-help/autotrade-real-signal.md +45 -0
  116. package/dist/packages/mcp/assets/kb/app-help/classification-models.md +41 -0
  117. package/dist/packages/mcp/assets/kb/app-help/live-trading.md +1 -1
  118. package/dist/packages/mcp/assets/kb/app-help/narratives-tracker.md +45 -0
  119. package/dist/packages/mcp/assets/kb/app-help/screen-autotrade.md +12 -0
  120. package/dist/packages/mcp/assets/kb/app-help/strategy-dashboard.md +38 -0
  121. package/dist/packages/mcp/assets/kb/app-help/streamer-overlay.md +36 -0
  122. package/dist/packages/mcp/assets/kb/app-help/trade-ledger.md +1 -1
  123. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-change-a-strategy-by-chat.md +3 -1
  124. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-on-the-q-screen.md +1 -0
  125. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-rug-proof-entries-experimental.md +52 -0
  126. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-running-it-all-day.md +2 -2
  127. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-stopping-it.md +2 -0
  128. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-always-on-service.md +59 -0
  129. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-strategy-dashboard-dexterm-dash.md +37 -0
  130. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-is-paper-self-directed.md +9 -2
  131. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-will-not-do.md +1 -1
  132. package/dist/packages/mcp/assets/kb/docs/docs-autotrade.md +3 -1
  133. package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +2 -2
  134. package/dist/packages/mcp/assets/kb/docs/docs-beginners-copy-and-paste-without-surprises.md +0 -1
  135. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-dexterm-says-command-not-found.md +2 -2
  136. package/dist/packages/mcp/assets/kb/docs/docs-beginners-reopen-dexterm-later.md +1 -1
  137. package/dist/packages/mcp/assets/kb/docs/docs-beginners-terminal-shell-prompt-command-output-and-path.md +2 -2
  138. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-expectations.md +1 -1
  139. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows.md +1 -1
  140. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-1-ask-for-a-strategy.md +27 -0
  141. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-2-backtest-it-held-out-split.md +31 -0
  142. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-3-forward-test-it-on-live-data.md +44 -0
  143. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-4-promote-it-to-always-on-paper.md +36 -0
  144. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-5-real-only-if-you-choose.md +36 -0
  145. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-ladder.md +41 -0
  146. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-report.md +31 -0
  147. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-what-the-analyst-knows.md +30 -0
  148. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat.md +26 -0
  149. package/dist/packages/mcp/assets/kb/docs/docs-classifier-hosted-jev-with-your-own-key.md +34 -0
  150. package/dist/packages/mcp/assets/kb/docs/docs-classifier-how-they-measured-on-dexterm-s-own-history.md +52 -0
  151. package/dist/packages/mcp/assets/kb/docs/docs-classifier-set-up-kev-on-your-own-machine.md +39 -0
  152. package/dist/packages/mcp/assets/kb/docs/docs-classifier-settings.md +35 -0
  153. package/dist/packages/mcp/assets/kb/docs/docs-classifier-the-choices.md +36 -0
  154. package/dist/packages/mcp/assets/kb/docs/docs-classifier-where-it-plugs-in.md +29 -0
  155. package/dist/packages/mcp/assets/kb/docs/docs-classifier-which-model-for-which-machine.md +42 -0
  156. package/dist/packages/mcp/assets/kb/docs/docs-classifier.md +32 -0
  157. package/dist/packages/mcp/assets/kb/docs/docs-cli-invocations.md +1 -1
  158. package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +3 -0
  159. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +1 -1
  160. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-recorded-history-and-retention.md +1 -0
  161. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +3 -3
  162. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +2 -2
  163. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-supported-platforms.md +2 -11
  164. package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +2 -2
  165. package/dist/packages/mcp/assets/kb/docs/docs-going-real-executor-health.md +38 -0
  166. package/dist/packages/mcp/assets/kb/docs/docs-going-real-paper-vs-real.md +33 -0
  167. package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-digest.md +36 -0
  168. package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-executor-kit.md +48 -0
  169. package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-whole-path.md +37 -0
  170. package/dist/packages/mcp/assets/kb/docs/docs-going-real-what-dexterm-does-and-never-does.md +44 -0
  171. package/dist/packages/mcp/assets/kb/docs/docs-going-real-your-limits.md +77 -0
  172. package/dist/packages/mcp/assets/kb/docs/docs-going-real.md +24 -0
  173. package/dist/packages/mcp/assets/kb/docs/docs-larp-measured-accuracy.md +2 -2
  174. package/dist/packages/mcp/assets/kb/docs/docs-larp-paste-a-coin-on-the-web.md +1 -1
  175. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-larp-score.md +1 -1
  176. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-changed-in-0-1-7.md +1 -1
  177. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-real-mode-your-strategy-s-trades-to-your.md +31 -0
  178. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-the-short-version.md +1 -1
  179. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-using-a-trading-bot-with-dexterm.md +0 -2
  180. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does-not-do.md +1 -1
  181. package/dist/packages/mcp/assets/kb/docs/docs-narratives-how-coins-are-grouped.md +39 -0
  182. package/dist/packages/mcp/assets/kb/docs/docs-narratives-limits.md +29 -0
  183. package/dist/packages/mcp/assets/kb/docs/docs-narratives-what-is-measured.md +44 -0
  184. package/dist/packages/mcp/assets/kb/docs/docs-narratives-what-testing-showed.md +43 -0
  185. package/dist/packages/mcp/assets/kb/docs/docs-narratives-where-to-find-it.md +37 -0
  186. package/dist/packages/mcp/assets/kb/docs/docs-narratives.md +29 -0
  187. package/dist/packages/mcp/assets/kb/docs/docs-overlay-before-you-start.md +33 -0
  188. package/dist/packages/mcp/assets/kb/docs/docs-overlay-limits.md +30 -0
  189. package/dist/packages/mcp/assets/kb/docs/docs-overlay-options.md +36 -0
  190. package/dist/packages/mcp/assets/kb/docs/docs-overlay-security-model.md +36 -0
  191. package/dist/packages/mcp/assets/kb/docs/docs-overlay-set-it-up-in-obs-step-by-step.md +49 -0
  192. package/dist/packages/mcp/assets/kb/docs/docs-overlay-the-pnl-scene-paper-and-live.md +34 -0
  193. package/dist/packages/mcp/assets/kb/docs/docs-overlay-the-three-scenes.md +35 -0
  194. package/dist/packages/mcp/assets/kb/docs/docs-overlay-what-is-redacted.md +31 -0
  195. package/dist/packages/mcp/assets/kb/docs/docs-overlay.md +25 -0
  196. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +1 -1
  197. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-receipts-what-your-executor-did.md +42 -0
  198. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-safety.md +34 -0
  199. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-set-it-up.md +47 -0
  200. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-the-channels.md +42 -0
  201. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-the-signal.md +48 -0
  202. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-is.md +37 -0
  203. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-will-not-do.md +34 -0
  204. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-where-you-see-it.md +34 -0
  205. package/dist/packages/mcp/assets/kb/docs/docs-real-mode.md +27 -0
  206. package/dist/packages/mcp/assets/kb/docs/docs-screens-bubble-map.md +1 -1
  207. package/dist/packages/mcp/assets/kb/docs/docs-spectator-streaming-it.md +1 -0
  208. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-is.md +1 -1
  209. package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +2 -2
  210. package/dist/packages/mcp/assets/kb/entries/autotrade.md +4 -2
  211. package/dist/packages/mcp/assets/kb/entries/narratives-tracker.md +45 -0
  212. package/dist/packages/mcp/src/autotrade-tools.js +168 -5
  213. package/dist/packages/mcp/src/engine/restrictions.js +3 -3
  214. package/dist/packages/mcp/src/index.js +1 -1
  215. package/dist/packages/mcp/src/ledger-tools.js +155 -7
  216. package/dist/packages/mcp/src/server.js +125 -10
  217. package/dist/packages/mcp/src/spectator-sink.js +27 -0
  218. package/dist/packages/narratives/src/cluster.js +193 -0
  219. package/dist/packages/narratives/src/embed.js +184 -0
  220. package/dist/packages/narratives/src/export.js +60 -0
  221. package/dist/packages/narratives/src/index.js +10 -0
  222. package/dist/packages/narratives/src/label.js +48 -0
  223. package/dist/packages/narratives/src/normalize.js +179 -0
  224. package/dist/packages/narratives/src/recorder.js +93 -0
  225. package/dist/packages/narratives/src/tracker.js +328 -0
  226. package/dist/packages/recorder/src/exit-probes.js +215 -0
  227. package/dist/packages/recorder/src/index.js +1 -0
  228. package/dist/packages/recorder/src/recorder.js +11 -1
  229. package/dist/packages/recorder/src/retention.js +4 -0
  230. package/dist/packages/recorder/src/schema.js +20 -1
  231. package/dist/packages/tui/src/keymap.js +12 -0
  232. package/package.json +3 -1
  233. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-powershell-experimental.md +0 -39
@@ -22,7 +22,7 @@ sources:
22
22
  date: 2026-10-16
23
23
  ---
24
24
 
25
- Autotrade (paper) is a strategy file plus an engine that replays it. You write the rules: which coins count as candidates, how a position is sized, how it is exited, and how much loss is allowed. The engine applies exactly those rules, and every size is clamped by them. It runs on **paper** by default: there is no key, wallet or signer anywhere in a strategy, and a paper run never signs or sends anything. A strategy that says `"mode": "live"` validates with a warning and runs only with `dexterm autotrade run --live`, through the live signer (https://dexterm.xyz/docs/live-trading) and its caps (experimental, can lose all the funds in the trading wallet).
25
+ Autotrade (paper) is a strategy file plus an engine that replays it. You write the rules: which coins count as candidates, how a position is sized, how it is exited, and how much loss is allowed. The engine applies exactly those rules, and every size is clamped by them. It runs on **paper** by default: there is no key, wallet or signer anywhere in a strategy, and a paper run never signs or sends anything. A strategy you switch to **real** yourself, on your own terminal, runs the same way and also sends each trade to your own executor as a signal: see real mode (https://dexterm.xyz/docs/real-mode) (experimental; dexterm still holds no key and signs nothing). A strategy that says `"mode": "live"` (the removed local signer) validates with a warning and never runs.
26
26
 
27
27
  It is self-directed: your strategies, on your machine, with your own recorded history. Nobody runs a strategy for you, and a preset is an example, not a recommendation.
28
28
 
@@ -38,6 +38,13 @@ What ships today, covered below:
38
38
  - What it costs (https://dexterm.xyz/docs/autotrade#what-it-costs-claude-usage-per-session): the Claude usage of a session, measured.
39
39
  - What it will not do (https://dexterm.xyz/docs/autotrade#what-it-will-not-do): live money, copy-trading automation, managing anyone else's money.
40
40
 
41
+ The rest of the automated trading suite has its own pages:
42
+
43
+ - Build a strategy by chat (https://dexterm.xyz/docs/build-a-strategy-by-chat): the ladder from a chat proposal to a backtest, a paper forward test on live data, always on and, only if you choose, real, one rung at a time on evidence.
44
+ - The always-on service (https://dexterm.xyz/docs/autotrade#the-always-on-service): your listed strategies keep running from login and come back after a crash.
45
+ - Real mode (https://dexterm.xyz/docs/real-mode) (experimental): a strategy you arm on your own terminal sends each trade as a signal to your own executor; dexterm never holds a key.
46
+ - Going real, safely (https://dexterm.xyz/docs/going-real): your own limits for every number, the executor kit, executor health and the digest.
47
+
41
48
  On your phone: your own Telegram bot (https://dexterm.xyz/docs/telegram) sends the entries, exits, PnL cards and halts, takes `/pause` and `/kill`, and can make every entry wait for your tap (`entry.decide: "agent+approve"`).
42
49
 
43
- Still to come, documented here when it lands: a background service that keeps the runner going without a terminal, and the runner filling through the paper desk (https://dexterm.xyz/docs/autotrade#exits-and-wakes) with the exit monitor as its own process.
50
+ Still to come, documented here when it lands: the runner filling through the paper desk (https://dexterm.xyz/docs/autotrade#exits-and-wakes) with the exit monitor as its own process.
@@ -22,7 +22,7 @@ sources:
22
22
  date: 2026-10-16
23
23
  ---
24
24
 
25
- - **Live money.** A run never signs and never sends a transaction: `--live` and a strategy in live mode are refused, and the runner holds no key. Live trading happens in a Telegram trading bot of your choice, outside dexterm (see Live trading (https://dexterm.xyz/docs/live-trading)).
25
+ - **Live money.** A run never signs and never sends a transaction: `--live` and a strategy in live mode are refused, and the runner holds no key. Live trading happens in a Telegram trading bot (or script) of your choice, outside dexterm (see Live trading (https://dexterm.xyz/docs/live-trading)); in real mode (https://dexterm.xyz/docs/real-mode) dexterm sends that executor a signal for each trade and it decides.
26
26
  - **Copy-trading automation.** It does not copy anyone's trades.
27
27
  - **Managing anyone else's money.** It runs your strategies on your machine, with your own Claude login and your own paper book. Nobody runs a strategy for you: there are no hosted runners, no pooled accounts, no fee on its trades and no strategy marketplace.
28
28
  - **Decide outside your rules.** Your agent chooses only inside the bounds you wrote. It cannot raise a size, block an exit, lift a stop or apply a strategy change; you apply a change with a key.
@@ -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).
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-1-ask-for-a-strategy
3
+ title: Build a strategy by chat › 1. Ask for a strategy
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: 1. Ask for a strategy
8
+ anchor: 1-ask-for-a-strategy
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#1-ask-for-a-strategy
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - ask
14
+ - strategy
15
+ - build
16
+ - chat
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/build-a-strategy-by-chat.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ Open the analyst and say what you want, for example: "build me a strategy that buys young pairs on a 5-minute push, takes the cost back at 2x and lets the rest ride". The analyst works only through typed tools: it reads the presets, then **proposes** a new strategy (a copy of a preset with its changes) and any edits after that. Each proposal arrives on the `Q` screen as a card with the fields that change, the validation result and TIGHTER, NEUTRAL or LOOSER; `o` opens it, `y` applies it (a looser edit needs a second `y`), `n` dismisses it. Nothing exists until you apply it, and a new strategy always starts on paper. Your mode, bankroll, model budget and exit-liquidity floor stay yours: the analyst cannot change them. See changing a strategy by chat (https://dexterm.xyz/docs/autotrade#change-a-strategy-by-chat).
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-2-backtest-it-held-out-split
3
+ title: Build a strategy by chat › 2. Backtest it (held-out split)
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: 2. Backtest it (held-out split)
8
+ anchor: 2-backtest-it-held-out-split
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#2-backtest-it-held-out-split
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - backtest
14
+ - held-out
15
+ - split
16
+ - build
17
+ - strategy
18
+ - chat
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/build-a-strategy-by-chat.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ `dexterm autotrade backtest <id>` (or `b` on the `Q` screen's journey view, or asking the analyst, which calls `strategy_backtest`) runs the strategy on your recorded history, then runs it again on each half of a **held-out split**: the newest 30% of coins, which nothing was ever tuned on, against the rest. The result is recorded as the strategy's backtest evidence.
30
+
31
+ The evidence rule is strict: gain wording is allowed only with **at least 20 trades in both halves and a held-out net above 0**. Below that the report says "too few trades to claim anything", and the analyst is told to quote the trade counts and nothing more. A backtest is modelled fills on recorded snapshots, not a prediction; its data limits (https://dexterm.xyz/docs/autotrade#backtests-and-their-limits) are printed with it.
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-3-forward-test-it-on-live-data
3
+ title: Build a strategy by chat › 3. Forward-test it on live data (paper)
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: 3. Forward-test it on live data (paper)
8
+ anchor: 3-forward-test-it-on-live-data-paper
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#3-forward-test-it-on-live-data-paper
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - forward-test
14
+ - live
15
+ - data
16
+ - paper
17
+ - build
18
+ - strategy
19
+ - chat
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/build-a-strategy-by-chat.md
27
+ date: 2026-10-16
28
+ ---
29
+
30
+ A forward test runs the same version on the **live** tape, on paper, with its own bankroll and its own run file, for a window you choose:
31
+
32
+ ```
33
+ dexterm autotrade forward start <id> --hours 24 # or --trades 30, or both (whichever comes first)
34
+ dexterm autotrade forward status [<id>]
35
+ dexterm autotrade forward stop <id>
36
+ dexterm autotrade forward report <id> [--json]
37
+ ```
38
+
39
+ - It starts in the background and runs next to the always-on service (it does not take the runner's lock). `--foreground` keeps it in your terminal; `--bankroll-usd N` sets its paper bankroll (default: the strategy's own).
40
+ - The strategy is frozen at the version it started with. A forward test of a strategy in real mode runs its paper twin: it never sends a signal.
41
+ - At the end of its window it sells everything at the next tick (so its numbers are closed numbers), writes its report and records the result. The panic switch stops it like any run.
42
+ - The analyst can start and stop one too (`strategy_forward_start`, `strategy_forward_stop`), after a backtest, for at most 72 hours or 200 trades, with the strategy's own bankroll. On the `Q` screen's journey view, `F` starts a 24-hour test and `X` stops it.
43
+ - Only a test that ran its **whole window on live data** counts as the forward-tested rung. A test stopped early, run on a replay (`--replay` is a smoke run) or whose process died is shown, never counted.
44
+ - A strategy that needs a chat approval for every entry cannot be forward-tested: no tap reaches a forward test. Model sessions of an agent strategy run on your own engine within the strategy's budgets, as in any run.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-4-promote-it-to-always-on-paper
3
+ title: Build a strategy by chat › 4. Promote it to always-on (paper)
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: 4. Promote it to always-on (paper)
8
+ anchor: 4-promote-it-to-always-on-paper
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#4-promote-it-to-always-on-paper
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - promote
14
+ - always-on
15
+ - paper
16
+ - build
17
+ - strategy
18
+ - chat
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/build-a-strategy-by-chat.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ When the forward test is done, the analyst can **propose** the promotion (`strategy_promote_propose`) or you can ask for it yourself:
30
+
31
+ ```
32
+ dexterm autotrade promote <id> --to always-on
33
+ dexterm autotrade promote list | show <pp-id> | apply <pp-id> | dismiss <pp-id>
34
+ ```
35
+
36
+ Every promotion shows an evidence card first: the ladder, the backtest, the forward test and the comparison. Applying it needs your `y` on your own terminal (a pipe, a flag or an agent cannot give it), or `A` then `y` on the `Q` screen's journey view. The strategy then joins `autotrade.json` as a paper member, next to your other entries, and the always-on service runs it from its next start (`dexterm autotrade service status`).
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-5-real-only-if-you-choose
3
+ title: Build a strategy by chat › 5. Real, only if you choose
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: 5. Real, only if you choose
8
+ anchor: 5-real-only-if-you-choose
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#5-real-only-if-you-choose
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - real
14
+ - only
15
+ - choose
16
+ - build
17
+ - strategy
18
+ - chat
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/build-a-strategy-by-chat.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ Real mode sends each of the strategy's trades as a LIVE TRADE FIRE signal to your own executor; dexterm still holds no key and signs nothing. On this ladder it is the last rung and it is entirely yours:
30
+
31
+ 1. Set your own limits: `dexterm autotrade limits set perTradeSol=X dailySol=Y buysPerDay=N maxOpenPositions=N` and any of the others (Going real, safely (https://dexterm.xyz/docs/going-real#your-limits)); `signal caps set` sets the same four. A promotion to real refuses until you have.
32
+ 2. Set up a channel your executor reads (`dexterm autotrade signal channels ...`).
33
+ 3. Have the evidence: a completed forward test of these exact rules with at least 10 closed paper trades (your limit `minForwardTrades`) and a backtest on record. Below that the promotion refuses and says what is missing.
34
+ 4. `dexterm autotrade promote <id> --to real` (or `promote apply <pp-id>` for one the analyst proposed) hands over to `dexterm autotrade signal arm <id>`: the evidence panel, now with the journey line and the held-out verdict, then a typed phrase with a one-time code.
35
+
36
+ The analyst can propose real (never below the evidence floor), never apply it, set a cap, choose a bankroll, lower the floor or arm anything. Arming directly with `signal arm` when a rung is missing, or below the evidence floor, refuses unless you type the OVERRIDE phrase it shows on your own terminal; the override is journaled. A real strategy runs in the foreground with `dexterm autotrade run <id> --real`; in 0.2.0 the always-on service runs paper strategies only, so stop the service while a real run is on (one runner per computer). See real mode (https://dexterm.xyz/docs/real-mode).
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-the-ladder
3
+ title: Build a strategy by chat › The ladder
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: The ladder
8
+ anchor: the-ladder
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#the-ladder
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - ladder
14
+ - build
15
+ - strategy
16
+ - chat
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/build-a-strategy-by-chat.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ A strategy you build climbs one ladder, one rung at a time:
28
+
29
+ **draft → backtested → forward-tested → always-on (paper) → real**
30
+
31
+ | rung | what it needs | who does it |
32
+ |---|---|---|
33
+ | draft | a strategy that validates | the analyst proposes it, you apply it with a key |
34
+ | backtested | a backtest on your recorded history, with the held-out split | you or the analyst |
35
+ | forward-tested | a forward test that ran its whole window on live data, on paper | you or the analyst starts it; it runs by itself |
36
+ | always-on | a member of `autotrade.json`, run by the always-on service (https://dexterm.xyz/docs/autotrade#the-always-on-service) on paper | the analyst can propose it; only you apply it |
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
+
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)
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-the-report
3
+ title: Build a strategy by chat › 3. Forward-test it on live data (paper) › The report
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: The report
8
+ anchor: the-report
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#the-report
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - report
14
+ - forward-test
15
+ - live
16
+ - data
17
+ - paper
18
+ - build
19
+ - strategy
20
+ - chat
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/build-a-strategy-by-chat.md
28
+ date: 2026-10-16
29
+ ---
30
+
31
+ `forward report` sets the forward test next to the backtest of the **same rules**, column by column: trades, win rate with its 95% interval, net, max drawdown, rug rate, and the fill cost against the mid price (with the drift from the backtest). It flags a forward win rate outside the backtest's interval, a deeper drawdown and more rugs than the history showed. Under 20 closed forward trades it says plainly that the sample is too small to claim anything, and it allows gain wording only when the backtest passes the evidence rule **and** the forward test made money on 20 or more trades.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat-what-the-analyst-knows
3
+ title: Build a strategy by chat › What the analyst knows
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ heading: What the analyst knows
8
+ anchor: what-the-analyst-knows
9
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat#what-the-analyst-knows
10
+ tags:
11
+ - docs
12
+ - build-a-strategy-by-chat
13
+ - analyst
14
+ - knows
15
+ - build
16
+ - strategy
17
+ - chat
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/build-a-strategy-by-chat.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ The analyst's tools for this: `strategy_journey` (the ladder for one strategy), `strategy_backtest` (with the held-out split), `strategy_forward_start`, `strategy_forward_stop`, `strategy_forward_report` and `strategy_promote_propose`. It is told the whole ladder, refuses to skip a rung, and reports numbers with their trade counts and the verdict lines as they are. An observe-only scan session gets none of the starting, stopping or proposing tools.
29
+
30
+ Paper by default; experimental; not financial advice.
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: docs-build-a-strategy-by-chat
3
+ title: Build a strategy by chat
4
+ kind: docs
5
+ page: build-a-strategy-by-chat
6
+ page_title: Build a strategy by chat
7
+ url: https://dexterm.xyz/docs/build-a-strategy-by-chat
8
+ tags:
9
+ - docs
10
+ - build-a-strategy-by-chat
11
+ - build
12
+ - strategy
13
+ - chat
14
+ confidence: high
15
+ owner: maintainers
16
+ origin: docs-generated
17
+ reviewed_by: generated@2026-10-16
18
+ generated_from: dexterm/site content/docs (task-1420)
19
+ sources:
20
+ - site/content/docs/build-a-strategy-by-chat.md
21
+ date: 2026-10-16
22
+ ---
23
+
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.