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
@@ -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.1.7-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.1.7-src.tar.gz --repo dexterm-xyz/dexterm
47
- $ tar -xzf dexterm-0.1.7-src.tar.gz && cd dexterm-0.1.7
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
  ```
@@ -26,10 +26,10 @@ date: 2026-10-16
26
26
  | need | why | notes |
27
27
  |---|---|---|
28
28
  | Node.js 22.18 or newer | dexterm runs its TypeScript sources directly; no build step | `node -v` to check. The installer can fetch a verified Node for you. |
29
- | a terminal with 24-bit colour | the cyberspace look | iTerm2, WezTerm, Ghostty, Kitty, Alacritty, Windows Terminal. 256-colour and monochrome terminals still work, flattened. |
29
+ | a terminal with 24-bit colour | the cyberspace look | iTerm2, WezTerm, Ghostty, Kitty, Alacritty. 256-colour and monochrome terminals still work, flattened. |
30
30
  | an internet connection | all data is public and keyless | nothing goes through a dexterm server; see data sources (https://dexterm.xyz/docs/data-sources). |
31
31
  | optional: Claude Code logged in | only the analyst needs it | `claude` on your PATH, logged in with your own account. Everything else works without it. |
32
32
  | optional: a free RPC key | the ranked top-20 holder list and faster chain reads | Helius, Alchemy, QuickNode or Ankr free tier; see configuration (https://dexterm.xyz/docs/configuration). |
33
33
  | optional: Rust (`cargo`) | the native docked chart window | without it the chart popup opens in your browser; see popup chart (https://dexterm.xyz/docs/popup-chart). |
34
34
 
35
- > note: dexterm 0.1.7 is out (2026-10-22), open source under AGPL-3.0-only at github.com/dexterm-xyz/dexterm (https://github.com/dexterm-xyz/dexterm). It is early: trading is experimental and has known bugs. The release ships checksums, a build-provenance attestation and an SBOM, and its VirusTotal result (including flags we explain) is on the trust page (https://dexterm.xyz/trust/). It is also on npm as `dexterm-cli` (https://www.npmjs.com/package/dexterm-cli); the command it installs is still `dexterm`.
35
+ > note: dexterm 0.2.1 is out (2026-10-30), open source under AGPL-3.0-only at github.com/dexterm-xyz/dexterm (https://github.com/dexterm-xyz/dexterm). It is early: trading is experimental and has known bugs. The release ships checksums, a build-provenance attestation and an SBOM, and its VirusTotal result (including flags we explain) is on the trust page (https://dexterm.xyz/trust/). It is also on npm as `dexterm-cli` (https://www.npmjs.com/package/dexterm-cli); the command it installs is still `dexterm`.
@@ -24,21 +24,12 @@ sources:
24
24
  date: 2026-10-16
25
25
  ---
26
26
 
27
- This table says what each platform has actually been through, not what we expect to work. "Tested" means the typecheck, the full offline test suite and an install smoke (`npm pack`, `npm i -g` of that tarball into an empty prefix with a fresh home, then `dexterm --version` and `dexterm doctor`) have passed there.
27
+ dexterm supports **macOS and Linux**. Windows is not supported. This table says what each platform has actually been through, not what we expect to work. "Tested" means the typecheck, the full offline test suite and an install smoke (`npm pack`, `npm i -g` of that tarball into an empty prefix with a fresh home, then `dexterm --version` and `dexterm doctor`) have passed there.
28
28
 
29
29
  | platform | status | what has run on it |
30
30
  |---|---|---|
31
31
  | Linux x64, Node 22 and 24 | tested | the full suite on every push in CI (Ubuntu), and the same steps in Docker (`node:22-bookworm`, `node:24-bookworm`), including the install smoke |
32
32
  | macOS on Intel | tested | the full suite on every change, the install smoke, and a Homebrew install (slow: Homebrew builds Node from source on Intel) |
33
33
  | macOS on Apple Silicon | tested in CI (0.1.4) | the full suite on an Apple Silicon runner (`macos-14`) passed on the 0.1.4 release candidate. The manual Homebrew job (tap, trust, install, `brew test`) has not run yet |
34
- | Windows x64 | experimental, tested in CI (0.1.4) | the `windows-latest` leg runs the full suite and it passed on the 0.1.4 release candidate (a few tests that need POSIX file permissions or Unix-only tools are skipped, and ACL-based file isolation is not verified). Known gaps are listed below |
35
34
  | WSL2 | not tested separately | it is Linux, so expect the Linux behaviour |
36
-
37
- Known gaps on Windows (none of them affect key safety: dexterm never holds a wallet key on any platform):
38
-
39
- - Files dexterm keeps private (tokens, the optional RPC key) are written with POSIX mode `0600`. Windows ignores that mode, so on Windows they are protected only by your user profile's normal permissions.
40
- - The analyst runs `claude` without a shell, so it can start Claude Code's native installer build (`claude.exe`) but not the `claude.cmd` script an npm install creates. Doctor counts only `claude.exe` as found, so with an npm install it reports the Claude CLI as missing.
41
- - Voice mode has no Windows speech engine (see voice (https://dexterm.xyz/docs/voice#linux-and-windows)).
42
- - Opening a token's links and the PnL card's "share to X" do not start a browser on Windows; dexterm shows the URL to open yourself.
43
- - `doctor` prints its fixes as POSIX shell commands (`mkdir -p`, `chmod`); in PowerShell, do the equivalent by hand.
44
- - `dexterm kb edit` and `dexterm skill edit` do not open `$EDITOR`; they print the file to edit instead.
35
+ | Windows | not supported | a CI leg ran the suite on Windows for 0.1.4, but Windows is not a supported platform: private files rely on POSIX file modes, voice has no Windows engine, and browser links and `doctor`'s fixes assume macOS or Linux |
@@ -22,6 +22,6 @@ date: 2026-10-16
22
22
 
23
23
  Requirements, install, first run and dexterm doctor.
24
24
 
25
- dexterm is a terminal screener for Solana memecoins with a local Claude analyst. It runs on your machine, reads public data with no key and never holds a wallet key. Trading in dexterm is PAPER (see paper trading (https://dexterm.xyz/docs/paper-trading)); dexterm signs nothing, and live trading happens in a Telegram trading bot of your choice (see live trading (https://dexterm.xyz/docs/live-trading)). This page gets you from nothing to the live screener.
25
+ dexterm is a terminal screener for Solana memecoins with a local Claude analyst. It runs on your machine, reads public data with no key and never holds a wallet key. Trading in dexterm is PAPER by default (see paper trading (https://dexterm.xyz/docs/paper-trading)) and dexterm signs nothing. Real mode is experimental; signals to your own executor; dexterm never holds a key; not financial advice (see real mode (https://dexterm.xyz/docs/real-mode) and live trading (https://dexterm.xyz/docs/live-trading)). This page gets you from nothing to the live screener.
26
26
 
27
- > note: Never used a terminal before? Start with the complete beginner guide (https://dexterm.xyz/docs/beginners). It defines every term, shows exactly what to copy on macOS, Linux and Windows, and ends with a ten-minute read-only coin review.
27
+ > note: Never used a terminal before? Start with the complete beginner guide (https://dexterm.xyz/docs/beginners). It defines every term, shows exactly what to copy on macOS and Linux, and ends with a ten-minute read-only coin review.
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: docs-going-real-executor-health
3
+ title: Going real, safely › Executor health
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: Executor health
8
+ anchor: executor-health
9
+ url: https://dexterm.xyz/docs/going-real#executor-health
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - executor
14
+ - health
15
+ - going
16
+ - real
17
+ - safely
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/going-real.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ dexterm counts three signs of life from your executor:
29
+ - a heartbeat: a `dexterm-executor-heartbeat/1` line in `~/.dexterm/autotrade/real/executor.jsonl`, `dexterm autotrade executor heartbeat`, or a POST to the listener a real run opens with `--executor-port N` (127.0.0.1 only, HMAC required when a secret is set);
30
+ - a receipt;
31
+ - an ack on the webhook or the command hook.
32
+
33
+ `dexterm autotrade executor status`, `signal status`, the `Q` screen and Telegram's `/status` show:
34
+ - whether your executor is alive, and when it was last heard;
35
+ - its last receipt;
36
+ - the median lag from a signal to its receipt.
37
+
38
+ **When it goes quiet** for longer than `executorSilenceMin`, a real run **pauses new buy signals** and tells you in the run log and on Telegram. Exits keep going out. When the executor is heard again, buys resume and you are told. A heartbeat is only evidence of life: it cannot raise a limit, reset the breaker, lift the kill switch or confirm a position.
@@ -0,0 +1,33 @@
1
+ ---
2
+ id: docs-going-real-paper-vs-real
3
+ title: Going real, safely › Paper vs real
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: Paper vs real
8
+ anchor: paper-vs-real
9
+ url: https://dexterm.xyz/docs/going-real#paper-vs-real
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - paper
14
+ - real
15
+ - going
16
+ - safely
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/going-real.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ When your executor's receipts carry fills (`priceUsd`, `sizeSol`, `tokens`), dexterm compares each one with its own paper fill for that signal:
28
+ - slippage, positive when the real fill was worse than paper;
29
+ - latency from the signal to its receipt;
30
+ - partial fills;
31
+ - rejections and failures, with their reasons.
32
+
33
+ This shows in `dexterm autotrade signal status`, `dexterm autotrade audit`, every run file's receipt rows and the digest. Use it to calibrate: if real fills land 4% worse than paper, the backtests and forward tests are 4% optimistic per trade. With few receipts the numbers say little, and the report says so.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-going-real-the-digest
3
+ title: Going real, safely › The digest
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: The digest
8
+ anchor: the-digest
9
+ url: https://dexterm.xyz/docs/going-real#the-digest
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - digest
14
+ - going
15
+ - real
16
+ - safely
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/going-real.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ `dexterm autotrade report [--period day|week] [--strategy ID]` prints, for each strategy and mode:
28
+ - the closed trades, and the win rate with its 95% interval;
29
+ - the net, and the max drawdown;
30
+ - refusals, the limits that were hit, and the limits that clamped a size;
31
+ - receipts and paper vs real fills;
32
+ - your executor's health.
33
+
34
+ It always ends with a note on the sample size. Five trades say almost nothing, and the interval shows how little.
35
+
36
+ `--telegram` sends it to your paired chat through your own bot. `--json` prints it as data. `dexterm autotrade report --schedule daily|weekly|off` makes a run with your bot on send it by itself: once a day after local midnight, or on Mondays. It is off by default.
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: docs-going-real-the-executor-kit
3
+ title: Going real, safely › The executor kit
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: The executor kit
8
+ anchor: the-executor-kit
9
+ url: https://dexterm.xyz/docs/going-real#the-executor-kit
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - executor
14
+ - kit
15
+ - going
16
+ - real
17
+ - safely
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/going-real.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ `dexterm autotrade executor kit --out ~/my-executor` copies three small executors, plain Node with no dependencies:
29
+
30
+ | file | channel | point dexterm at it |
31
+ |---|---|---|
32
+ | `webhook-executor.mjs` | webhook (127.0.0.1 only) | `dexterm autotrade signal channels --webhook http://127.0.0.1:8787/signal` |
33
+ | `signal-cmd-executor.mjs` | command hook | `dexterm autotrade signal channels --signal-cmd '["/abs/path/node","/abs/path/signal-cmd-executor.mjs","--account","main"]'` |
34
+ | `jsonl-tail-executor.mjs` | the JSONL stream | `dexterm autotrade signal channels --jsonl on --jsonl-signed on` |
35
+
36
+ Each one handles every signal the same way:
37
+
38
+ 1. It checks the HMAC (`--secret-file`, the file `dexterm autotrade signal secret generate --out FILE` writes).
39
+ 2. It checks the account.
40
+ 3. It ignores a repeat by nonce. The seen set survives a restart.
41
+ 4. It ignores anything past its expiry.
42
+ 5. It writes a receipt and sends a heartbeat.
43
+
44
+ They are **dry run**: they log what they would do, and their receipts say so. There is no wallet code, no key and no chain call in the kit. To trade, you replace one function (`act()` in `kit.mjs`) with your own code, or hand the order to the Telegram trading bot you chose. The kit's `telegram-bot-recipe.md` explains that set-up: a bot cannot read another bot's messages, so a small relay of yours hands each signal to the bot.
45
+
46
+ `--jsonl-signed on` writes each stream line as an envelope carrying the same HMAC as the webhook, so a stream reader can check it too.
47
+
48
+ **Prove it end to end:** `dexterm autotrade signal test` sends a signal marked `test: true` that names no coin, so there is nothing in it to trade. For each channel it shows whether the signal was delivered and how long that took, then your executor's receipt (`--wait SEC`, `--json`). The Telegram copy is for you, so it waits for the next run.
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: docs-going-real-the-whole-path
3
+ title: Going real, safely › The whole path
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: The whole path
8
+ anchor: the-whole-path
9
+ url: https://dexterm.xyz/docs/going-real#the-whole-path
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - whole
14
+ - path
15
+ - going
16
+ - real
17
+ - safely
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/going-real.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ > **0.2.0, experimental.** Real mode can lead to real trades in a wallet you fund. dexterm never holds a key, never signs and never sends a transaction. Your executor does, by its own rules. Not financial advice.
29
+
30
+ 1. **Build and test on paper.** Make a strategy (from a preset, by chat, or in a file), backtest it on your recorded history, then forward-test it on paper on live data (`dexterm autotrade forward start my-strategy --hours 24`). Arming for real needs a completed forward test with at least 10 closed paper trades and a backtest (the evidence floor, `minForwardTrades`). Paper is the default for every new strategy.
31
+ 2. **Wire up an executor, dry run.** Copy the executor kit (https://dexterm.xyz/docs/going-real#the-executor-kit), start one of its executors, point a channel at it, and send a test signal. Nothing can trade yet.
32
+ 3. **Set your own limits.** `dexterm autotrade limits set …` (your limits (https://dexterm.xyz/docs/going-real#your-limits)). The defaults are placeholders, and your numbers win.
33
+ 4. **Arm on your own terminal.** `dexterm autotrade signal arm my-strategy`. On a first arming dexterm asks for your numbers, then shows the evidence (backtest, forward test), the limits in force for this strategy and account, and your executor's health. Typing the phrase it shows confirms all of it. Below the evidence floor, or past a missing rung of the ladder, it refuses unless you first type a separate OVERRIDE phrase, which is journaled.
34
+ 5. **Run it real.** `dexterm autotrade run my-strategy --real`, in the foreground (in 0.2.0 the always-on service runs paper strategies only). Every buy and sell goes to your executor as a LIVE TRADE FIRE signal (https://dexterm.xyz/docs/real-mode#the-signal), inside your limits. When no real run is running, no signal goes out, sells included: positions still open at the end are printed, listed in the `halted` signal and carried (https://dexterm.xyz/docs/real-mode#the-channels) to the next real run; until then, manage them in your executor.
35
+ 6. **Watch and calibrate.** `signal status`, the `Q` screen and your Telegram chat show the limits, the executor's health and how far real fills land from paper. The digest (https://dexterm.xyz/docs/going-real#the-digest) sums it up each day or week.
36
+
37
+ At any point, `dexterm autotrade signal kill` stops every signal, sells included (one final `halted` still goes out, listing the positions still open; it closes nothing), and `dexterm autotrade signal disarm my-strategy` puts the strategy back on paper.
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: docs-going-real-what-dexterm-does-and-never-does
3
+ title: Going real, safely › What dexterm does, and never does
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: What dexterm does, and never does
8
+ anchor: what-dexterm-does-and-never-does
9
+ url: https://dexterm.xyz/docs/going-real#what-dexterm-does-and-never-does
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - dexterm
14
+ - does
15
+ - never
16
+ - going
17
+ - real
18
+ - safely
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/going-real.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ **It does:**
30
+ - run your strategy exactly like paper;
31
+ - turn each trade into a signed, numbered, expiring signal for your executor, inside your limits;
32
+ - keep the signal until it is delivered;
33
+ - record what your executor reports;
34
+ - pause new buys when your executor is silent or a loss limit trips;
35
+ - tell you each time.
36
+
37
+ **It never:**
38
+ - holds, imports or asks for a key or a seed phrase;
39
+ - signs or sends a transaction, or builds one;
40
+ - lets a model, a tool or a chat tap arm real mode, change a limit, lift the kill switch or reset the breaker;
41
+ - trades a test signal;
42
+ - promises a fill or a profit.
43
+
44
+ Your executor decides, at its own price, with its own fees.
@@ -0,0 +1,77 @@
1
+ ---
2
+ id: docs-going-real-your-limits
3
+ title: Going real, safely › Your limits
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ heading: Your limits
8
+ anchor: your-limits
9
+ url: https://dexterm.xyz/docs/going-real#your-limits
10
+ tags:
11
+ - docs
12
+ - going-real
13
+ - limits
14
+ - going
15
+ - real
16
+ - safely
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/going-real.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ Every number real mode enforces is yours. They live in one file, `~/.dexterm/autotrade/real/limits.json` (schema `dexterm-limits/1`; `dexterm autotrade limits schema` prints its JSON Schema), outside the model.
28
+
29
+ **Sizing:**
30
+ - `perTradeSol` and `perTradePct`: the most one buy may spend, in SOL or as a percent of the book. With both set, the smaller wins.
31
+ - `dailySol` and `buysPerDay`: what all buys may spend, and how many there may be, per local day.
32
+ - `maxOpenPositions`: counted across every real holding on this machine.
33
+ - `maxExposurePct`: everything open together, as a percent of the book.
34
+ - `minPositionSol` and `maxPositionSol`: no dust orders, and a cap on one position with its adds.
35
+ - `perCoinSolPerDay` and `perCoinBuysPerDay`: how much one coin may take in a day, re-entries included.
36
+ - `bookSol`: the size of YOUR account, which the percent limits use. Unset, they use the strategy's own book.
37
+
38
+ **Risk:**
39
+ - `dailyLossSol`: once the day's realized loss reaches it, no new buy goes out until tomorrow.
40
+ - `maxDrawdownSol`: the drawdown breaker. It stops new buys until you reset it with `dexterm autotrade limits breaker reset` (typed). The reset also lifts a loss-streak pause and starts the streak count again.
41
+ - `lossStreak` and `lossStreakPauseMin`: that many losing closes in a row pause new buys for that long.
42
+ - `maxHoldMinutes`: the stricter of this and each exit profile's own cap.
43
+ - `minLiquidityUsd` and `minMcapUsd`: floors on the coin. While one is set, an unknown value is refused.
44
+ - `maxSlippageBps` and `maxPriceImpactPct`: the tolerance a signal states. A buy is cut to the price-impact cap on the pool.
45
+ - `signalTtlSec`: how long your executor may act on a signal.
46
+ - `maxBuysPerMinute`: the signal rate limit.
47
+
48
+ **Sells:** never capped, unless you set `maxSellsPerMinute`. Only the kill switch stops exits.
49
+
50
+ **Evidence:** `minForwardTrades`, the evidence floor for arming: the closed paper trades a completed forward test of the strategy's exact rules must have, with a backtest on record. Lowering it or turning it `off` (no trade minimum; the completed forward test and the backtest are still needed) is a raise.
51
+
52
+ **Executor:** `executorSilenceMin`, how long your executor may be silent before new buys pause (see executor health (https://dexterm.xyz/docs/going-real#executor-health)).
53
+
54
+ Loss limits are counted on dexterm's own fills: the paper view of every signal.
55
+
56
+ **Scopes, and the stricter wins.**
57
+ - A number in `global` replaces the placeholder default. `off` turns a global limit off, which is a raise.
58
+ - `real` / `paper` (a mode), `strategy:<id>` and `account:<id>` can only tighten. Whichever scope sets the stricter number, that number is in force: a smaller cap, or a larger floor.
59
+ - Paper runs ignore limits unless you add a `paper` scope. Then a single paper run (`dexterm autotrade run <id> --paper`, a forward test included) obeys them too, the way a real run would, on its own state (it never touches real mode's counters). Limits are in SOL, so a paper replay with a `paper` scope needs `--sol-usd N`. Running several strategies at once (`run --all --paper`) does not apply the paper scope yet.
60
+ - The day's counters (buys, SOL spent, realized loss, per coin) count every real buy from this home: all strategies and accounts together. A `strategy:` or `account:` number is compared with that total, so it can only stop buys sooner, never later.
61
+
62
+ ```
63
+ dexterm autotrade limits show --strategy my-strategy --account main # what is in force, and where each number comes from
64
+ dexterm autotrade limits set perTradeSol=0.5 dailySol=2 dailyLossSol=0.4
65
+ dexterm autotrade limits set --scope strategy:my-strategy perTradePct=2 maxOpenPositions=1
66
+ dexterm autotrade limits explain maxExposurePct
67
+ ```
68
+
69
+ **Lowering is free and immediate.** A running real run re-reads the file and uses the stricter of what it started with and what the file says now.
70
+
71
+ **Raising needs you.** `limits set` shows every change old -> new, marks each RAISE, and asks for a typed phrase with a one-time code on your own terminal. A pipe, a flag, an agent or MCP cannot give it. A raise applies from the next run.
72
+
73
+ **Hand edits.** If you edit `limits.json` by hand, a real run accepts the edit only when it lowers. One that raises anything is refused until you review it (`dexterm autotrade limits diff`) and accept it (`dexterm autotrade limits accept`, typed). Everything is journaled. Caps you set before 0.2.0 (`caps.json`) carry over as your global numbers, unless they differ from what dexterm last saved: then they count as a hand edit too.
74
+
75
+ **The placeholders** are 0.25 SOL a trade, 1 SOL a day, 20 buys a day, 3 open positions, a stop at -0.5 SOL a day, a pause after 5 losing closes in a row (60 min), at most 3 buys a minute, a pause when your executor is silent for 15 minutes, and an evidence floor of 10 closed paper trades. They are a cautious starting point, not advice. Real mode never arms on them silently: the first arming asks for your own numbers, and every arming shows the limits it confirms.
76
+
77
+ **The analyst can explain, never apply.** Ask it "why was that buy refused?" or "what would a 1 SOL daily cap change?". It reads the limits (`trading_limits`) and can propose a change as a diff card (`limits_propose`) with the exact command for you to run. No tool, chat command or model decision can change a limit.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: docs-going-real
3
+ title: Going real, safely
4
+ kind: docs
5
+ page: going-real
6
+ page_title: Going real, safely
7
+ url: https://dexterm.xyz/docs/going-real
8
+ tags:
9
+ - docs
10
+ - going-real
11
+ - going
12
+ - real
13
+ - safely
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/going-real.md
21
+ date: 2026-10-16
22
+ ---
23
+
24
+ The whole path from a paper strategy to real trades through your own executor. Your own limits on every number, a dry-run executor kit to wire up first, executor health, paper vs real fills, and the daily digest. What dexterm does, and what it never does. Experimental; not financial advice.
@@ -29,7 +29,7 @@ date: 2026-10-16
29
29
 
30
30
  - **LARP check, links only.** The links-based baseline is a weak signal: MCC 0.039 before tuning, 0.054 after. Its tuned `LARP` grade caught 4 of 14 bad coins, too few to rate. `EARLY_BUT_REAL` coins still went bad 10.3 % of the time, and coins with no website 29.2 %. The skill now treats the baseline as a weak prior and never calls `LARP` from links alone.
31
31
  - **Rug check.** The verdict rules improved from MCC 0.043 to 0.159. Liquidity under $5k is the one strong signal (`SPECULATIVE` coins went bad 54.8 % of the time, `WATCH` 14.4 %). Dev percentage, organic score and top-10 share did not predict a worse 72 h outcome and now only lower confidence.
32
- - **LARP score, link-shape part** (`dexterm backtest --subject larp-score`, task-1471). Points fitted on the train split only. On the 328 held-out coins its AUROC is 0.69 (0.73 on train): a modest ranking signal. 27 of 218 low-band coins went bad (12.4 %), 34 of 110 medium-band coins (30.9 %), against 18.6 % overall; no coin reaches the high band from link shape alone. The page, domain, GitHub and X points are not measured: that evidence was not recorded at the time, and looking it up now would leak the outcome (dead coins' sites and accounts disappear).
32
+ - **LARP score, link-shape part** (`dexterm backtest --subject larp-score`). Points fitted on the train split only. On the 328 held-out coins its AUROC is 0.69 (0.73 on train): a modest ranking signal. 27 of 218 low-band coins went bad (12.4 %), 34 of 110 medium-band coins (30.9 %), against 18.6 % overall; no coin reaches the high band from link shape alone. The page, domain, GitHub and X points are not measured: that evidence was not recorded at the time, and looking it up now would leak the outcome (dead coins' sites and accounts disappear).
33
33
  - **Not measured.** The model stage (fetched pages, RDAP, GitHub) cannot be replayed: a past page cannot be fetched as it was. It is measured going forward with `dexterm backtest --subject larp`, below.
34
34
 
35
35
  The method, every number and the limits are in the repository at `packages/packs/eval/README.md`. A grade is a risk flag, not a certificate.
@@ -38,7 +38,7 @@ Measured 2026-10-12 with `dexterm backtest --subject larp` over this project's l
38
38
 
39
39
  | history | outcome labels at 1 h (observed) | LARP verdicts recorded | matched |
40
40
  |---|---|---|---|
41
- | research recorder (task-1287 prototype DB) | 149 (137 flat · 9 fade · 2 runner · 1 dead; 29 unobserved) | 0 | 0 |
41
+ | research recorder (prototype DB) | 149 (137 flat · 9 fade · 2 runner · 1 dead; 29 unobserved) | 0 | 0 |
42
42
  | the app's recorder on the development machine | 0 | 0 | 0 |
43
43
  | the same, re-measured later that day after the recorder fix | 401 (361 flat · 18 dead · 13 runner · 5 fade · 4 rug; 1,206 unobserved) | 0 | 0 |
44
44
 
@@ -26,7 +26,7 @@ date: 2026-10-16
26
26
 
27
27
  A no-install version is in preview at the preview checker (https://dexterm-larp-preview.dexterm-site.workers.dev/check/), not deployed to dexterm.xyz. Paste a Solana mint or a DexScreener / pump.fun / Solscan link and get the grade in your browser, read-only, no wallet. It runs on a Cloudflare Worker and reuses the app's tuned link-shape grade (`larp-links-v1`) and the same prompt firewall, so a hostile coin name or symbol is stripped and shown as inert text, never obeyed.
28
28
 
29
- What the web checker shows, each datum with its source and the age of the reading: the **LARP grade** from the coin's advertised link shape (`LARP` / `REAL?` / `UNKNOWN`), **top-10 holder concentration** and **holder count** (Jupiter), and **liquidity** in USD (DexScreener). It never shows a price, a market cap or a buy/sell call. A **shareable PNG card** carries the grade, those facts, the heuristic label and a dexterm.xyz link.
29
+ What the web checker shows, each datum with its source and the age of the reading: the **LARP grade** from the coin's advertised link shape (`LARP` / `REAL?` / `UNKNOWN`), the **LARP score** from the same link shape with its top three reasons, **top-10 holder concentration** and **holder count** (Jupiter), and **liquidity** in USD (DexScreener). The web checker does not fetch the website, the domain, GitHub or the X account, so those count as not checked: the score shows how far they could still raise it ("12, could be up to 100") rather than treating them as clean. It never shows a price, a market cap or a buy/sell call. A **shareable PNG card** carries the grade, the score with its top three reasons, those facts, the heuristic label and a dexterm.xyz link.
30
30
 
31
31
  The preview defaults to the **keyless** tier. The full in-app LARP check above — fetching the website (SSRF-safe), the RDAP domain lookup and the GitHub read, graded by the analyst — is not part of the web checker. The bundle / sniper checkbox runs the app's wallet-intel rules and Helius history adapter as an optional second step, only when a dedicated site key and real Turnstile configuration are present. The visible preview test mode disables paid deep scans. Missing credentials refuse scans or disable the deep step; there is no silent test-secret fallback.
32
32
 
@@ -55,6 +55,6 @@ date: 2026-10-16
55
55
 
56
56
  **Missing data never lowers the score.** A page that could not be read, an RDAP or X lookup that failed, goes to a `missing` list with the points it could have added, and the result shows the range: "37, could be up to 58". Nothing unread is scored as clean.
57
57
 
58
- Where it shows: the `larp_check` MCP result (`score`, `band`, and `larp_score` with every flag, its points, its weight and its evidence, the range and the `missing` list; the existing fields are unchanged), the analyst panel after a LARP check (a gauge with the three biggest reasons, drawn from the tool's own result, never from the model's text).
58
+ Where it shows: the `larp_check` MCP result (`score`, `band`, and `larp_score` with every flag, its points, its weight and its evidence, the range and the `missing` list; the existing fields are unchanged), the analyst panel after a LARP check (a gauge with the three biggest reasons, drawn from the tool's own result, never from the model's text), and the web checker's result and share card.
59
59
 
60
60
  > warn: a LARP verdict is a risk flag, not a certificate. Public HTML cannot prove a working product, a team's identity or who owns an account; domain age, a clean script scan and a GitHub with commits are evidence, not proof, and a real product can still go to zero.
@@ -23,4 +23,4 @@ sources:
23
23
  date: 2026-10-16
24
24
  ---
25
25
 
26
- Earlier 0.1.7 test builds had an experimental local live signer with a dedicated trading wallet, and a LIVE trade ticket signed in Phantom. Both were removed before release, because dexterm should not hold a key. Sending orders to a trading bot of your choice automatically is next (0.1.8, see the roadmap (https://dexterm.xyz/roadmap/)), still with no key in dexterm.
26
+ Earlier 0.1.7 test builds had an experimental local live signer with a dedicated trading wallet, and a LIVE trade ticket signed in Phantom. Both were removed before release, because dexterm should not hold a key. Sending a strategy's trades to an executor of your choice automatically is real mode (https://dexterm.xyz/docs/real-mode), new in 0.2.0, still with no key in dexterm.