dexterm-cli 0.1.5 → 0.1.7

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 (379) hide show
  1. package/dist/packages/agents/src/index.js +2 -0
  2. package/dist/packages/agents/src/schema.js +22 -1
  3. package/dist/packages/agents/src/spectator.js +54 -0
  4. package/dist/packages/agents/src/story.js +532 -0
  5. package/dist/packages/agents/src/tiers.js +28 -2
  6. package/dist/packages/agents/src/tools.js +31 -2
  7. package/dist/packages/autotrade/assets/exit-profile.schema.json +492 -0
  8. package/dist/packages/autotrade/assets/profiles/moonbag.json +46 -0
  9. package/dist/packages/autotrade/assets/profiles/runner.json +88 -0
  10. package/dist/packages/autotrade/assets/profiles/scalp.json +88 -0
  11. package/dist/packages/autotrade/assets/profiles/swing.json +88 -0
  12. package/dist/packages/autotrade/assets/strategies/moonbag.json +101 -0
  13. package/dist/packages/autotrade/assets/strategies/runner.json +101 -0
  14. package/dist/packages/autotrade/assets/strategies/sample-dip-ladder.json +188 -0
  15. package/dist/packages/autotrade/assets/strategies/scalp.json +98 -0
  16. package/dist/packages/autotrade/assets/strategies/swing.json +97 -0
  17. package/dist/packages/autotrade/assets/strategies/yolo.json +157 -0
  18. package/dist/packages/autotrade/assets/tapes/yolo-rehearsal.json +1 -0
  19. package/dist/packages/autotrade/src/account.js +74 -0
  20. package/dist/packages/autotrade/src/backtest.js +357 -0
  21. package/dist/packages/autotrade/src/basis-text.js +32 -0
  22. package/dist/packages/autotrade/src/chat/approvals.js +484 -0
  23. package/dist/packages/autotrade/src/chat/audit.js +140 -0
  24. package/dist/packages/autotrade/src/chat/config.js +93 -0
  25. package/dist/packages/autotrade/src/chat/connector.js +24 -0
  26. package/dist/packages/autotrade/src/chat/control.js +103 -0
  27. package/dist/packages/autotrade/src/chat/fake.js +100 -0
  28. package/dist/packages/autotrade/src/chat/format.js +71 -0
  29. package/dist/packages/autotrade/src/chat/hub.js +187 -0
  30. package/dist/packages/autotrade/src/chat/index.js +18 -0
  31. package/dist/packages/autotrade/src/chat/notify.js +292 -0
  32. package/dist/packages/autotrade/src/chat/pairing.js +46 -0
  33. package/dist/packages/autotrade/src/chat/redact.js +48 -0
  34. package/dist/packages/autotrade/src/chat/secrets.js +99 -0
  35. package/dist/packages/autotrade/src/chat/service.js +248 -0
  36. package/dist/packages/autotrade/src/chat/telegram.js +290 -0
  37. package/dist/packages/autotrade/src/desk-executor.js +188 -0
  38. package/dist/packages/autotrade/src/engine.js +387 -0
  39. package/dist/packages/autotrade/src/execution-port.js +97 -0
  40. package/dist/packages/autotrade/src/fleet-config.js +169 -0
  41. package/dist/packages/autotrade/src/fleet-control.js +276 -0
  42. package/dist/packages/autotrade/src/fleet.js +639 -0
  43. package/dist/packages/autotrade/src/index.js +53 -0
  44. package/dist/packages/autotrade/src/ledger.js +108 -0
  45. package/dist/packages/autotrade/src/live-source.js +182 -0
  46. package/dist/packages/autotrade/src/monitor-daemon.js +715 -0
  47. package/dist/packages/autotrade/src/monitor.js +190 -0
  48. package/dist/packages/autotrade/src/ollama-sessions.js +137 -0
  49. package/dist/packages/autotrade/src/paper-accounts.js +72 -0
  50. package/dist/packages/autotrade/src/replay.js +198 -0
  51. package/dist/packages/autotrade/src/runner-config.js +99 -0
  52. package/dist/packages/autotrade/src/runner.js +872 -0
  53. package/dist/packages/autotrade/src/safety.js +243 -0
  54. package/dist/packages/autotrade/src/session.js +269 -0
  55. package/dist/packages/autotrade/src/sessions.js +503 -0
  56. package/dist/packages/autotrade/src/store.js +250 -0
  57. package/dist/packages/autotrade/src/strategy.js +256 -0
  58. package/dist/packages/autotrade/src/trade-ledger.js +241 -0
  59. package/dist/packages/autotrade/src/yolo.js +140 -0
  60. package/dist/packages/cli/assets/claude/analyst-system.md +4 -4
  61. package/dist/packages/cli/assets/claude/plugin/skills/REGISTRY.json +1 -1
  62. package/dist/packages/cli/assets/claude/plugin/skills/larp-check/SKILL.md +15 -8
  63. package/dist/packages/cli/assets/claude/plugin/skills/token-dossier/SKILL.md +1 -1
  64. package/dist/packages/cli/src/agent-cmd.js +6 -4
  65. package/dist/packages/cli/src/agent-spectator.js +17 -1
  66. package/dist/packages/cli/src/ai-cmd.js +412 -0
  67. package/dist/packages/cli/src/analyst/backend.js +105 -15
  68. package/dist/packages/cli/src/analyst/codex.js +14 -9
  69. package/dist/packages/cli/src/analyst/larp-gauge.js +60 -0
  70. package/dist/packages/cli/src/analyst/ollama.js +263 -0
  71. package/dist/packages/cli/src/analyst/session.js +17 -3
  72. package/dist/packages/cli/src/app-help-gen.js +51 -15
  73. package/dist/packages/cli/src/autotrade-cmd/audit.js +57 -0
  74. package/dist/packages/cli/src/autotrade-cmd/backtest.js +199 -0
  75. package/dist/packages/cli/src/autotrade-cmd/flatten.js +64 -0
  76. package/dist/packages/cli/src/autotrade-cmd/fleet.js +397 -0
  77. package/dist/packages/cli/src/autotrade-cmd/requests.js +79 -0
  78. package/dist/packages/cli/src/autotrade-cmd/run.js +413 -0
  79. package/dist/packages/cli/src/autotrade-cmd/stop.js +76 -0
  80. package/dist/packages/cli/src/autotrade-cmd/strategies.js +198 -0
  81. package/dist/packages/cli/src/autotrade-cmd/strategy-control.js +174 -0
  82. package/dist/packages/cli/src/autotrade-cmd/telegram-host.js +101 -0
  83. package/dist/packages/cli/src/autotrade-cmd.js +168 -0
  84. package/dist/packages/cli/src/backtest-cmd.js +13 -2
  85. package/dist/packages/cli/src/display.js +208 -23
  86. package/dist/packages/cli/src/doctor.js +62 -3
  87. package/dist/packages/cli/src/export.js +10 -2
  88. package/dist/packages/cli/src/index.js +1 -1
  89. package/dist/packages/cli/src/ledger-cmd.js +288 -0
  90. package/dist/packages/cli/src/live/chart-fills.js +46 -0
  91. package/dist/packages/cli/src/live/dev-history.js +31 -15
  92. package/dist/packages/cli/src/live/index.js +28 -90
  93. package/dist/packages/cli/src/live/screens/newpairs-live.js +1 -1
  94. package/dist/packages/cli/src/live/screens/token-live.js +48 -15
  95. package/dist/packages/cli/src/live/screens/watchlist-live.js +1 -1
  96. package/dist/packages/cli/src/live/trade.js +30 -453
  97. package/dist/packages/cli/src/live/watchlist.js +1 -1
  98. package/dist/packages/cli/src/main.js +290 -199
  99. package/dist/packages/cli/src/mcp-cmd.js +7 -1
  100. package/dist/packages/cli/src/mcp-follow.js +103 -6
  101. package/dist/packages/cli/src/plan-cmd.js +15 -5
  102. package/dist/packages/cli/src/pnl-app.js +31 -21
  103. package/dist/packages/cli/src/pnl-card.js +158 -21
  104. package/dist/packages/cli/src/popup.js +38 -6
  105. package/dist/packages/cli/src/record-cmd.js +141 -20
  106. package/dist/packages/cli/src/scan/ui.js +7 -1
  107. package/dist/packages/cli/src/screens/agent-hud.js +773 -0
  108. package/dist/packages/cli/src/screens/analyst-session.js +11 -4
  109. package/dist/packages/cli/src/screens/analyst.js +3 -2
  110. package/dist/packages/cli/src/screens/autotrade-keys.js +169 -0
  111. package/dist/packages/cli/src/screens/autotrade-proposals.js +123 -0
  112. package/dist/packages/cli/src/screens/autotrade-screen.js +725 -0
  113. package/dist/packages/cli/src/screens/autotrade-ui.js +640 -0
  114. package/dist/packages/cli/src/screens/autotrade-worker.js +89 -0
  115. package/dist/packages/cli/src/screens/brain.js +634 -0
  116. package/dist/packages/cli/src/screens/newpairs.js +1 -1
  117. package/dist/packages/cli/src/screens/overlay.js +5 -2
  118. package/dist/packages/cli/src/screens/plans.js +5 -17
  119. package/dist/packages/cli/src/screens/pnl-chip.js +144 -0
  120. package/dist/packages/cli/src/screens/positions.js +6 -28
  121. package/dist/packages/cli/src/screens/screener.js +1 -0
  122. package/dist/packages/cli/src/screens/ticket.js +38 -205
  123. package/dist/packages/cli/src/screens/token.js +18 -9
  124. package/dist/packages/cli/src/screens/trending.js +1 -1
  125. package/dist/packages/cli/src/state.js +88 -18
  126. package/dist/packages/cli/src/telegram-cmd.js +451 -0
  127. package/dist/packages/cli/src/trade.js +3 -128
  128. package/dist/packages/cli/src/version.js +1 -1
  129. package/dist/packages/cli/src/wallet-cmd.js +39 -340
  130. package/dist/packages/cli/src/wallet-command.js +8 -11
  131. package/dist/packages/cli/src/widgets.js +0 -12
  132. package/dist/packages/custom/src/config.js +20 -2
  133. package/dist/packages/custom/src/schema.js +41 -10
  134. package/dist/packages/custom/src/workspace.js +3 -3
  135. package/dist/packages/data/src/basis.js +191 -0
  136. package/dist/packages/data/src/detail.js +53 -2
  137. package/dist/packages/data/src/index.js +2 -14
  138. package/dist/packages/data/src/larp/score.js +220 -0
  139. package/dist/packages/data/src/larp/x-account.js +316 -0
  140. package/dist/packages/data/src/store.js +14 -5
  141. package/dist/packages/data/src/trade/agent/paper-desk.js +300 -23
  142. package/dist/packages/data/src/trade/agent/rendezvous.js +3 -2
  143. package/dist/packages/data/src/trade/bridge.js +4 -102
  144. package/dist/packages/data/src/trade/ledger/export.js +101 -0
  145. package/dist/packages/data/src/trade/ledger/file.js +135 -0
  146. package/dist/packages/data/src/trade/ledger/fold.js +191 -0
  147. package/dist/packages/data/src/trade/ledger/index.js +9 -0
  148. package/dist/packages/data/src/trade/ledger/schema.js +83 -0
  149. package/dist/packages/data/src/trade/ledger/sources.js +307 -0
  150. package/dist/packages/data/src/trade/ledger/stats.js +123 -0
  151. package/dist/packages/data/src/trade/ledger/tags.js +116 -0
  152. package/dist/packages/data/src/trade/ledger/view.js +51 -0
  153. package/dist/packages/data/src/trade/plans/engine.js +7 -0
  154. package/dist/packages/data/src/trade/plans/index.js +0 -1
  155. package/dist/packages/data/src/trade/plans/mandate.js +28 -15
  156. package/dist/packages/data/src/trade/plans/service.js +4 -28
  157. package/dist/packages/mcp/assets/kb/app-help/autotrade-chat.md +48 -0
  158. package/dist/packages/mcp/assets/kb/app-help/autotrade-parallel.md +42 -0
  159. package/dist/packages/mcp/assets/kb/app-help/autotrade-runner.md +35 -0
  160. package/dist/packages/mcp/assets/kb/app-help/autotrade-stop.md +37 -0
  161. package/dist/packages/mcp/assets/kb/app-help/autotrade-strategies.md +35 -0
  162. package/dist/packages/mcp/assets/kb/app-help/autotrade-telegram.md +40 -0
  163. package/dist/packages/mcp/assets/kb/app-help/chart-trade-markers.md +42 -0
  164. package/dist/packages/mcp/assets/kb/app-help/dev-history.md +1 -1
  165. package/dist/packages/mcp/assets/kb/app-help/larp-check.md +5 -1
  166. package/dist/packages/mcp/assets/kb/app-help/link-a-wallet.md +4 -10
  167. package/dist/packages/mcp/assets/kb/app-help/live-trading.md +38 -0
  168. package/dist/packages/mcp/assets/kb/app-help/live-yolo.md +34 -0
  169. package/dist/packages/mcp/assets/kb/app-help/order-plans.md +1 -1
  170. package/dist/packages/mcp/assets/kb/app-help/price-or-marketcap.md +5 -2
  171. package/dist/packages/mcp/assets/kb/app-help/scan-mode.md +1 -1
  172. package/dist/packages/mcp/assets/kb/app-help/screen-analyst.md +3 -0
  173. package/dist/packages/mcp/assets/kb/app-help/screen-autotrade.md +217 -0
  174. package/dist/packages/mcp/assets/kb/app-help/screen-kol.md +3 -0
  175. package/dist/packages/mcp/assets/kb/app-help/screen-newpairs.md +3 -0
  176. package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +3 -0
  177. package/dist/packages/mcp/assets/kb/app-help/screen-screener.md +3 -0
  178. package/dist/packages/mcp/assets/kb/app-help/screen-token.md +6 -0
  179. package/dist/packages/mcp/assets/kb/app-help/screen-trending.md +3 -0
  180. package/dist/packages/mcp/assets/kb/app-help/screen-watchlist.md +3 -0
  181. package/dist/packages/mcp/assets/kb/app-help/spectate-an-agent.md +2 -1
  182. package/dist/packages/mcp/assets/kb/app-help/standing-mandates.md +1 -1
  183. package/dist/packages/mcp/assets/kb/app-help/trade-ledger.md +54 -0
  184. package/dist/packages/mcp/assets/kb/app-help/use-local-model.md +38 -0
  185. package/dist/packages/mcp/assets/kb/docs/docs-agents-agent-paper-trading.md +7 -3
  186. package/dist/packages/mcp/assets/kb/docs/docs-agents-reading-your-trade-ledger.md +31 -0
  187. package/dist/packages/mcp/assets/kb/docs/docs-agents-untrusted-by-default.md +1 -1
  188. package/dist/packages/mcp/assets/kb/docs/docs-analyst-if-claude-is-missing.md +1 -1
  189. package/dist/packages/mcp/assets/kb/docs/docs-analyst-starting-a-run.md +2 -0
  190. package/dist/packages/mcp/assets/kb/docs/docs-analyst-use-a-local-model-instead.md +27 -0
  191. package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-sees.md +2 -0
  192. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-backtests-and-their-limits.md +56 -0
  193. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-change-a-strategy-by-chat.md +49 -0
  194. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-checking-the-record-of-a-run.md +28 -0
  195. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-comparing-them.md +41 -0
  196. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-exits-and-wakes.md +76 -0
  197. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-how-a-stop-reaches-the-runner.md +32 -0
  198. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-on-the-q-screen.md +37 -0
  199. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-one-strategy-or-all-of-them.md +35 -0
  200. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-paper-accounts.md +50 -0
  201. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-presets.md +37 -0
  202. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-running-it-all-day.md +31 -0
  203. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-sessions-and-their-limits.md +31 -0
  204. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-several-strategies-at-once.md +33 -0
  205. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-stopping-it.md +35 -0
  206. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-strategies-and-presets.md +34 -0
  207. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-autotrade-json-file.md +48 -0
  208. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-heartbeat.md +27 -0
  209. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-run-file-and-the-heartbeat.md +34 -0
  210. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-runner-and-candidate-sessions.md +45 -0
  211. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-each-session-shows-first.md +31 -0
  212. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-costs-claude-usage-per-session.md +58 -0
  213. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-is-paper-self-directed.md +43 -0
  214. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-will-not-do.md +31 -0
  215. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-which-account-day-caps-and-the-usage-guard.md +44 -0
  216. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-your-strategies.md +37 -0
  217. package/dist/packages/mcp/assets/kb/docs/docs-autotrade.md +22 -0
  218. package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +2 -2
  219. package/dist/packages/mcp/assets/kb/docs/docs-beginners.md +1 -1
  220. package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-markers.md +30 -0
  221. package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-y-axis.md +32 -0
  222. package/dist/packages/mcp/assets/kb/docs/docs-configuration-environment-variables.md +4 -1
  223. package/dist/packages/mcp/assets/kb/docs/docs-configuration-files-on-disk.md +1 -0
  224. package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +3 -1
  225. package/dist/packages/mcp/assets/kb/docs/docs-configuration-price-display-mode.md +9 -7
  226. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal.md +1 -1
  227. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-3-capped-auto-mirror-default-off-less.md +1 -1
  228. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-what-is-proven-what-is-not.md +1 -1
  229. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +1 -1
  230. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-recorded-history-and-retention.md +36 -0
  231. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-sources.md +1 -0
  232. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-first-run.md +1 -1
  233. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +3 -3
  234. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +1 -1
  235. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-running-the-tests.md +1 -1
  236. package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +1 -1
  237. package/dist/packages/mcp/assets/kb/docs/docs-larp-measured-accuracy.md +1 -0
  238. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-larp-score.md +60 -0
  239. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-verdict.md +0 -2
  240. package/dist/packages/mcp/assets/kb/docs/docs-larp-what-it-looks-at.md +4 -1
  241. package/dist/packages/mcp/assets/kb/docs/docs-larp.md +1 -1
  242. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-changed-in-0-1-7.md +26 -0
  243. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-stopping.md +28 -0
  244. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-the-short-version.md +34 -0
  245. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-using-a-trading-bot-with-dexterm.md +33 -0
  246. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does-not-do.md +30 -0
  247. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does.md +29 -0
  248. package/dist/packages/mcp/assets/kb/docs/docs-live-trading.md +23 -0
  249. package/dist/packages/mcp/assets/kb/docs/docs-ollama-another-machine.md +28 -0
  250. package/dist/packages/mcp/assets/kb/docs/docs-ollama-autotrade-on-a-local-model.md +29 -0
  251. package/dist/packages/mcp/assets/kb/docs/docs-ollama-check-your-model-dexterm-ai-probe.md +38 -0
  252. package/dist/packages/mcp/assets/kb/docs/docs-ollama-how-we-checked.md +27 -0
  253. package/dist/packages/mcp/assets/kb/docs/docs-ollama-models-without-tool-calling.md +32 -0
  254. package/dist/packages/mcp/assets/kb/docs/docs-ollama-pick-the-engine-globally-or-per-surface.md +43 -0
  255. package/dist/packages/mcp/assets/kb/docs/docs-ollama-restriction-profiles.md +35 -0
  256. package/dist/packages/mcp/assets/kb/docs/docs-ollama-set-it-up-in-two-minutes.md +39 -0
  257. package/dist/packages/mcp/assets/kb/docs/docs-ollama-troubleshooting.md +35 -0
  258. package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-runs-on-a-local-model.md +39 -0
  259. package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-stays-outside-the-model.md +36 -0
  260. package/dist/packages/mcp/assets/kb/docs/docs-ollama-which-model.md +38 -0
  261. package/dist/packages/mcp/assets/kb/docs/docs-ollama-your-own-agent-on-the-local-model.md +28 -0
  262. package/dist/packages/mcp/assets/kb/docs/docs-ollama.md +28 -0
  263. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-letting-an-agent-paper-trade-experimental.md +3 -4
  264. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet-read-only.md +30 -0
  265. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-order-plans-and-standing-mandates.md +4 -13
  266. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-panic.md +4 -7
  267. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-paper-only-mandates.md +40 -0
  268. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-pnl-cards.md +7 -7
  269. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-safety-model.md +34 -0
  270. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-ticket.md +3 -4
  271. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-trade-ledger.md +42 -0
  272. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-wallet.md +4 -5
  273. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-trade-moments.md +4 -5
  274. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +4 -5
  275. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-buy-and-sell-markers.md +37 -0
  276. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-market-cap-axis.md +1 -1
  277. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-what-it-shows.md +3 -1
  278. package/dist/packages/mcp/assets/kb/docs/docs-scan-the-read.md +2 -0
  279. package/dist/packages/mcp/assets/kb/docs/docs-screens-autotrade-paper.md +26 -0
  280. package/dist/packages/mcp/assets/kb/docs/docs-screens-dev-history.md +10 -7
  281. package/dist/packages/mcp/assets/kb/docs/docs-screens-order-plans.md +1 -1
  282. package/dist/packages/mcp/assets/kb/docs/docs-screens-token-screen.md +2 -0
  283. package/dist/packages/mcp/assets/kb/docs/docs-spectator-follow-over-mcp-in-the-running-terminal.md +1 -1
  284. package/dist/packages/mcp/assets/kb/docs/docs-spectator-limits.md +2 -0
  285. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-agent-hud-spectator-v2.md +58 -0
  286. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-brain-view-and-the-pnl-chip.md +46 -0
  287. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-three-surfaces.md +1 -1
  288. package/dist/packages/mcp/assets/kb/docs/docs-spectator.md +1 -1
  289. package/dist/packages/mcp/assets/kb/docs/docs-telegram-approve-one-tap-entries.md +50 -0
  290. package/dist/packages/mcp/assets/kb/docs/docs-telegram-control-the-commands.md +43 -0
  291. package/dist/packages/mcp/assets/kb/docs/docs-telegram-if-something-goes-wrong.md +30 -0
  292. package/dist/packages/mcp/assets/kb/docs/docs-telegram-notify-what-reaches-your-phone.md +41 -0
  293. package/dist/packages/mcp/assets/kb/docs/docs-telegram-set-it-up.md +47 -0
  294. package/dist/packages/mcp/assets/kb/docs/docs-telegram-the-record.md +26 -0
  295. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-is.md +33 -0
  296. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-will-not-do.md +31 -0
  297. package/dist/packages/mcp/assets/kb/docs/docs-telegram.md +23 -0
  298. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-common-questions.md +1 -1
  299. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-doctor-lines.md +4 -0
  300. package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +1 -1
  301. package/dist/packages/mcp/assets/kb/docs/docs-voice.md +1 -1
  302. package/dist/packages/mcp/assets/kb/docs/docs-yolo-1-replay-it-on-your-own-history.md +42 -0
  303. package/dist/packages/mcp/assets/kb/docs/docs-yolo-2-run-it-on-paper.md +34 -0
  304. package/dist/packages/mcp/assets/kb/docs/docs-yolo-3-watch-it-and-stop-it.md +32 -0
  305. package/dist/packages/mcp/assets/kb/docs/docs-yolo-the-rules.md +37 -0
  306. package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-is.md +34 -0
  307. package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-will-not-do.md +31 -0
  308. package/dist/packages/mcp/assets/kb/docs/docs-yolo.md +26 -0
  309. package/dist/packages/mcp/assets/kb/entries/autotrade.md +38 -0
  310. package/dist/packages/mcp/src/app-help.js +1 -1
  311. package/dist/packages/mcp/src/autotrade-tools.js +944 -0
  312. package/dist/packages/mcp/src/backtest-requests.js +71 -0
  313. package/dist/packages/mcp/src/engine/config.js +159 -0
  314. package/dist/packages/mcp/src/engine/index.js +10 -0
  315. package/dist/packages/mcp/src/engine/loop.js +101 -0
  316. package/dist/packages/mcp/src/engine/mcp-client.js +123 -0
  317. package/dist/packages/mcp/src/engine/ollama.js +258 -0
  318. package/dist/packages/mcp/src/engine/probe.js +110 -0
  319. package/dist/packages/mcp/src/engine/reason.js +35 -0
  320. package/dist/packages/mcp/src/engine/restrictions.js +111 -0
  321. package/dist/packages/mcp/src/index.js +7 -1
  322. package/dist/packages/mcp/src/ledger-tools.js +346 -0
  323. package/dist/packages/mcp/src/paper-agent.js +5 -2
  324. package/dist/packages/mcp/src/server.js +285 -36
  325. package/dist/packages/mcp/src/spectator-sink.js +85 -0
  326. package/dist/packages/packs/src/backtest.js +3 -1
  327. package/dist/packages/packs/src/index.js +1 -0
  328. package/dist/packages/packs/src/larp-score-backtest.js +119 -0
  329. package/dist/packages/popup/src/pages/chart-lib.js +169 -35
  330. package/dist/packages/popup/src/pages/chart.css +18 -0
  331. package/dist/packages/popup/src/pages/chart.html +6 -1
  332. package/dist/packages/popup/src/pages/chart.js +136 -10
  333. package/dist/packages/popup/src/pages/spectator.css +45 -0
  334. package/dist/packages/popup/src/pages/spectator.html +1 -0
  335. package/dist/packages/popup/src/pages/spectator.js +69 -0
  336. package/dist/packages/popup/src/protocol.js +4 -0
  337. package/dist/packages/popup/src/server.js +9 -1
  338. package/dist/packages/recorder/src/dev-history.js +7 -3
  339. package/dist/packages/recorder/src/index.js +2 -0
  340. package/dist/packages/recorder/src/recorder.js +63 -6
  341. package/dist/packages/recorder/src/retention.js +100 -0
  342. package/dist/packages/recorder/src/schema.js +34 -1
  343. package/dist/packages/recorder/src/ticks.js +237 -0
  344. package/dist/packages/tui/src/canvas.js +7 -0
  345. package/dist/packages/tui/src/fmt.js +53 -0
  346. package/dist/packages/tui/src/index.js +1 -0
  347. package/dist/packages/tui/src/keymap.js +25 -1
  348. package/dist/packages/tui/src/markers.js +219 -0
  349. package/dist/packages/tui/src/widgets.js +158 -6
  350. package/package.json +2 -1
  351. package/dist/packages/data/src/trade/caps.js +0 -323
  352. package/dist/packages/data/src/trade/executor.js +0 -933
  353. package/dist/packages/data/src/trade/plans/executor-live.js +0 -220
  354. package/dist/packages/data/src/trade/rpc-exec.js +0 -229
  355. package/dist/packages/data/src/trade/signer/client.js +0 -197
  356. package/dist/packages/data/src/trade/signer/fast-wallet.js +0 -154
  357. package/dist/packages/data/src/trade/signer/host.js +0 -97
  358. package/dist/packages/data/src/trade/signer/main.js +0 -121
  359. package/dist/packages/data/src/trade/signer/probe-builder.js +0 -85
  360. package/dist/packages/data/src/trade/signer/protocol.js +0 -92
  361. package/dist/packages/data/src/trade/signer/service.js +0 -400
  362. package/dist/packages/data/src/trade/signer/sol-usd-feed.js +0 -98
  363. package/dist/packages/data/src/trade/sol-usd.js +0 -86
  364. package/dist/packages/data/src/trade/swap-build.js +0 -108
  365. package/dist/packages/data/src/trade/token-delta.js +0 -201
  366. package/dist/packages/data/vendor/solana-web3/LICENSE +0 -20
  367. package/dist/packages/data/vendor/solana-web3/NOTICE.md +0 -13
  368. package/dist/packages/data/vendor/solana-web3/index.iife.min.js +0 -20
  369. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-a-live-ticket.md +0 -42
  370. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-before-you-press-size-vs-caps.md +0 -34
  371. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-devnet-signer-mainnet-token.md +0 -35
  372. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-jupiter-rate-limits.md +0 -33
  373. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet.md +0 -32
  374. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-live-trading-devnet-first.md +0 -30
  375. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-mainnet.md +0 -31
  376. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-live-fire-path-devnet-the-fast-wallet.md +0 -41
  377. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-signer-process.md +0 -34
  378. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-what-the-live-path-keeps.md +0 -37
  379. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-your-first-live-trade.md +0 -41
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: docs-autotrade-the-autotrade-json-file
3
+ title: Autotrade (paper) › Several strategies at once › The autotrade.json file
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: The autotrade.json file
8
+ anchor: the-autotrade-json-file
9
+ url: https://dexterm.xyz/docs/autotrade#the-autotrade-json-file
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - json
14
+ - file
15
+ - several
16
+ - strategies
17
+ - once
18
+ - paper
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/autotrade.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ ```json
30
+ {
31
+ "schema": "dexterm-autotrade/1",
32
+ "strategies": [
33
+ { "id": "moon-a", "preset": "moonbag", "bankroll": { "usd": 500 } },
34
+ { "id": "fast", "preset": "my-scalp", "bankroll": { "sol": 1 }, "caps": { "modelUsdPerDay": 2, "maxSessions": 1 } },
35
+ { "id": "dip", "file": "/Users/you/strategies/dip.json", "bankroll": { "usd": 200 }, "enabled": false }
36
+ ],
37
+ "global": { "maxConcurrentSessions": 3, "modelUsdPerDay": 15 }
38
+ }
39
+ ```
40
+
41
+ - **`id`** names the strategy in this run: in its run file, on the Q screen and in every alert. Each id is used once.
42
+ - **`preset`** is a shipped preset or one of your own strategies; **`file`** is an absolute path to a strategy file. Give exactly one.
43
+ - **`bankroll`** is in USD, or in SOL (converted at the SOL price when the run starts; a replay takes `"solUsd"` or `--sol-usd`). Without it the strategy's own bankroll applies.
44
+ - **`caps`** can only tighten a strategy: `maxSessions`, `modelUsdPerDay`, `candidateSessionsPerDay`, `positionSessionsPerDay` and `turnsPerDay`. The stricter of the strategy, these caps, `runner.json` and `global` always applies.
45
+ - **`enabled: false`** keeps a strategy in the list without starting it. `dexterm autotrade start <id>` starts it later in the running run.
46
+ - **`global`** holds the shared limits. The defaults are 3 sessions open at once, $20 of model spend a day, 96 candidate and 96 position sessions a day, and 4,000 turns a day. The day caps in `runner.json` still apply on top.
47
+
48
+ Up to 8 strategies (a strategy on several paper accounts counts once per account). Every strategy must check out before anything starts: a typo, an unknown preset or a strategy that is not on paper stops the whole run with each problem named. `--config FILE` reads another file. The file is yours: no tool, chat or agent can add a strategy to it or change a bankroll or a cap.
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: docs-autotrade-the-heartbeat
3
+ title: Autotrade (paper) › Stopping it › The heartbeat
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: The heartbeat
8
+ anchor: the-heartbeat
9
+ url: https://dexterm.xyz/docs/autotrade#the-heartbeat
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - heartbeat
14
+ - stopping
15
+ - paper
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/autotrade.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ - The runner rewrites `runner-status.json` every 10 seconds. If it cannot (a full disk, a removed folder), it takes no new entries until it can again, because the `Q` screen and the exit monitor would see it as gone. With no fresh heartbeat the `Q` screen shows the runner as stale.
27
+ - Each position keeps its own `maxHoldMinutes` exit, and a session that dies or times out never holds up an exit.
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: docs-autotrade-the-run-file-and-the-heartbeat
3
+ title: Autotrade (paper) › The runner and candidate sessions › The run file and the heartbeat
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: The run file and the heartbeat
8
+ anchor: the-run-file-and-the-heartbeat
9
+ url: https://dexterm.xyz/docs/autotrade#the-run-file-and-the-heartbeat
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - run
14
+ - file
15
+ - heartbeat
16
+ - runner
17
+ - candidate
18
+ - sessions
19
+ - paper
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/autotrade.md
27
+ date: 2026-10-16
28
+ ---
29
+
30
+ Every step goes to `~/.dexterm/autotrade/runs/<run>.jsonl`, written as it happens: each message sent, each raw reply and parsed decision, the clamp with its cuts, fills, events, refusals, session costs and the usage readings. Each line carries the hash of the one before it, so an edited, missing or reordered line shows. A summary sits next to it, and `~/.dexterm/autotrade/runner-status.json` (candidates, sessions, positions, spend and the last steps) is rewritten every 10 seconds as the runner's heartbeat. The coins it is working are also handed to the recorder's 5-second sampling (`dexterm record run --focus-ticks`).
31
+
32
+ **Today's limits.** Orders fill on the runner's own paper book with the backtest's fill model (price impact on the pool, fee, slippage). Filling through the paper desk and the exit monitor as its own process are still to come. To stop the runner, see Stopping it (https://dexterm.xyz/docs/autotrade#stopping-it).
33
+
34
+ Paper only: `--live` is refused, a strategy in live mode is refused, and nothing in the runner can arm a mandate, sign, or touch a wallet or a key.
@@ -0,0 +1,45 @@
1
+ ---
2
+ id: docs-autotrade-the-runner-and-candidate-sessions
3
+ title: Autotrade (paper) › The runner and candidate sessions
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: The runner and candidate sessions
8
+ anchor: the-runner-and-candidate-sessions
9
+ url: https://dexterm.xyz/docs/autotrade#the-runner-and-candidate-sessions
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - runner
14
+ - candidate
15
+ - sessions
16
+ - paper
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/autotrade.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ ```
28
+ dexterm autotrade run my-swing --paper # live data, your own Claude login
29
+ dexterm autotrade run my-swing --paper --replay tape.json # a recorded tape, paced
30
+ dexterm autotrade run my-swing --paper --stub --replay tape.json # a scripted agent: no Claude usage
31
+ ```
32
+
33
+ `dexterm autotrade run` works one strategy on paper, headless, and only one runner runs per machine. It screens the same live data as the app with the app's free sources and request limits: the screener's coins every 10 seconds, and the coins it is working (candidates and positions) every 5 seconds, 30 coins per DexScreener call, under a daily call ceiling. `--replay FILE` paces a tape saved with `dexterm autotrade extract` instead; `--max-minutes N` stops after N minutes; Ctrl+C stops it cleanly.
34
+
35
+ **It talks in market cap.** The run's lines (`BUY ABC [swing]: $25.00 at $69.7K mcap`), the candidate's DOSSIER, the ENGINE notes and the EVENTs your agent reads give levels as market caps by default (with the price beside them in the DOSSIER), and your agent is told to say levels the same way. `--price` (or `display.priceMode: "price"`) switches the wording to prices; the trades are the same either way, because the engine only reads prices. The run file's fills keep `price` and add `mcap`.
36
+
37
+ **A candidate gets one session.** A coin that passes your entry rules, and that your strategy would still allow an entry for (a free slot, cash, no halt), becomes a candidate and gets one session on your own `claude` login:
38
+
39
+ - The first message is the full picture: the market now and its recent history, holders and concentration (the top-10 share the strategy's top-10 gate reads, which is Jupiter's, next to the top-10 of the largest accounts from your RPC with pools, bonding curves, launch vaults, locks and burns left out, each named with its source; when the two disagree the message says so), security (authorities and the RugCheck read), candles, recent trades, the coin's creator, and which of these are unavailable and why, plus your bounds (the exit profiles, the largest size your strategy allows, the paper book, open positions).
40
+ - After that, only what changed, with each change in percent: every 15 seconds (`agent.deltaEverySec`), or at once on a fast move (8% in price or a 15% drop in liquidity). Updates that pile up while the agent is thinking go as one message.
41
+ - Your agent answers every message with one typed decision: `enter`, `wait` or `skip` before a position; `hold`, `exit`, `tighten` or `reprofile` once it holds one. Anything outside that closed form (an unknown field, a size out of range) does nothing.
42
+ - An `enter` is clamped by your strategy, and every cut is named in the run file; the order fills on the paper book after the strategy's latency, and is refused if the price ran past the slippage tolerance in between. Fills and refusals reach the agent as notes on its next message.
43
+ - With a position, the exits in your profile run on their own; the agent hears about them as events and can only lower the risk (exit, trim, tighten) or move along the profile's allowed edges. When the position closes, its session ends.
44
+ - A reply that arrives after its candidate was dropped (it stopped matching, the agent skipped, the session ran out) is written down and never executed.
45
+ - With `agent.respawnOnWake` in the strategy, a judgement call on a position whose session has already ended opens a short position session that answers once.
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: docs-autotrade-what-each-session-shows-first
3
+ title: Autotrade (paper) › Stopping it › What each session shows first
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: What each session shows first
8
+ anchor: what-each-session-shows-first
9
+ url: https://dexterm.xyz/docs/autotrade#what-each-session-shows-first
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - each
14
+ - session
15
+ - shows
16
+ - first
17
+ - stopping
18
+ - paper
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/autotrade.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ Before its first answer counts, a session's start event must list no tools and no MCP servers; otherwise the session ends. The run file also records how many plugins, agents and skills your Claude reports for the session: your own plugins and agents can still list as loaded, and with no tools they cannot act.
30
+
31
+ Paper only. Not financial advice.
@@ -0,0 +1,58 @@
1
+ ---
2
+ id: docs-autotrade-what-it-costs-claude-usage-per-session
3
+ title: Autotrade (paper) › What it costs (Claude usage per session)
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: What it costs (Claude usage per session)
8
+ anchor: what-it-costs-claude-usage-per-session
9
+ url: https://dexterm.xyz/docs/autotrade#what-it-costs-claude-usage-per-session
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - costs
14
+ - claude
15
+ - usage
16
+ - per
17
+ - session
18
+ - paper
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/autotrade.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ A session costs Claude usage on your own account, counted from what `claude` reports (`total_cost_usd`; on a subscription that figure is notional, but it is what the runner's caps count). The screening itself uses no model at all: Claude is only called when a coin matches.
30
+
31
+ **Measured on `sonnet`** (the presets' model) on 2026-10-21: a two-hour run of the `moonbag` preset on live data, with the strategy's own session limits and a $2.75 day cap in `runner.json`:
32
+
33
+ | in that run | measured |
34
+ |---|---|
35
+ | coins that matched and got a session | 17 in two hours |
36
+ | turns | 24: 16 skips, 5 waits, 1 entry and 2 answers about the position |
37
+ | a first look at a coin (one turn) | $0.006 to $0.010 |
38
+ | a coin watched for a few updates, then skipped (2 to 3 turns) | $0.012 to $0.018 |
39
+ | the one full loop: entry, a cost-recovery event, the close (3 turns) | $0.017 |
40
+ | **the whole run** | **$0.17**, well under its cap |
41
+
42
+ Replies took 2.6 to 8.8 seconds (median 5.3), and the first message was about 1.1 KB. The run file of that run verifies with `dexterm autotrade audit --verify`.
43
+
44
+ How much a run costs depends mostly on how many coins match your entry rules and how long each one is watched: every update your agent reads is a turn, and a held position adds a turn for each event. Your caps bound it either way: $0.50 per session and $10 a day from the strategy, and the day caps and usage guard in `runner.json`.
45
+
46
+ **Measured on `haiku`** (`--model haiku`), on one recorded coin replayed at a 1.5-second pace with the `swing` preset and its session budget cut to $0.05:
47
+
48
+ | session | what happened | turns | cost |
49
+ |---|---|---|---|
50
+ | 1 | full picture → wait, update → skip | 2 | $0.0009 |
51
+ | 2 | full picture → wait, two updates → skip | 3 | $0.0012 |
52
+ | 3 | full picture → updates → enter (clamped to $80), two take-profit events → hold, trail exit → acknowledged, session ended | 7 | $0.0023 |
53
+
54
+ Three sessions, 12 turns, **$0.0044 in all**; on haiku a full candidate → position → close loop was **$0.0023**. Replies took 1.3 to 4.9 seconds (median 2.8).
55
+
56
+ The run file has each session's cost, and `runner-status.json` today's total.
57
+
58
+ Paper only. Not financial advice.
@@ -0,0 +1,43 @@
1
+ ---
2
+ id: docs-autotrade-what-it-is-paper-self-directed
3
+ title: Autotrade (paper) › What it is (paper, self-directed)
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: What it is (paper, self-directed)
8
+ anchor: what-it-is-paper-self-directed
9
+ url: https://dexterm.xyz/docs/autotrade#what-it-is-paper-self-directed
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - paper
14
+ - self-directed
15
+ confidence: high
16
+ owner: maintainers
17
+ origin: docs-generated
18
+ reviewed_by: generated@2026-10-16
19
+ generated_from: dexterm/site content/docs (task-1420)
20
+ sources:
21
+ - site/content/docs/autotrade.md
22
+ date: 2026-10-16
23
+ ---
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).
26
+
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
+
29
+ What ships today, covered below:
30
+
31
+ - Strategies and presets (https://dexterm.xyz/docs/autotrade#strategies-and-presets): presets, your own strategy files, validation and the change journal, on the command line or on the `Q` screen (https://dexterm.xyz/docs/autotrade#on-the-q-screen).
32
+ - Backtests and their limits (https://dexterm.xyz/docs/autotrade#backtests-and-their-limits): replays on recorded history, the held-out check, and what the data cannot tell you.
33
+ - The runner and candidate sessions (https://dexterm.xyz/docs/autotrade#the-runner-and-candidate-sessions): `dexterm autotrade run --paper`, your own Claude working each candidate the screener finds, every size clamped by your strategy.
34
+ - Exits and wakes (https://dexterm.xyz/docs/autotrade#exits-and-wakes): the exits that run on their own, the judgement calls your agent is woken for, and what it can and cannot do with them.
35
+ - Change a strategy by chat (https://dexterm.xyz/docs/autotrade#change-a-strategy-by-chat): the analyst proposes, you see the diff and apply it with a key (a less-safe change needs a second key).
36
+ - Running it all day (https://dexterm.xyz/docs/autotrade#running-it-all-day): how long a run lasts, which Claude account it uses, the day caps and the usage guard.
37
+ - Stopping it (https://dexterm.xyz/docs/autotrade#stopping-it): a soft stop, a flatten and the panic switch, the heartbeat, and checking the record of a run.
38
+ - What it costs (https://dexterm.xyz/docs/autotrade#what-it-costs-claude-usage-per-session): the Claude usage of a session, measured.
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
+
41
+ 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
+
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.
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: docs-autotrade-what-it-will-not-do
3
+ title: Autotrade (paper) › What it will not do
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: What it will not do
8
+ anchor: what-it-will-not-do
9
+ url: https://dexterm.xyz/docs/autotrade#what-it-will-not-do
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - will
14
+ - paper
15
+ confidence: high
16
+ owner: maintainers
17
+ origin: docs-generated
18
+ reviewed_by: generated@2026-10-16
19
+ generated_from: dexterm/site content/docs (task-1420)
20
+ sources:
21
+ - site/content/docs/autotrade.md
22
+ date: 2026-10-16
23
+ ---
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)).
26
+ - **Copy-trading automation.** It does not copy anyone's trades.
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
+ - **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.
29
+ - **Promise results.** Presets are examples, and every backtest prints the limits of its data.
30
+
31
+ Paper only. Not financial advice.
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: docs-autotrade-which-account-day-caps-and-the-usage-guard
3
+ title: Autotrade (paper) › Running it all day › Which account, day caps and the usage guard
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: Which account, day caps and the usage guard
8
+ anchor: which-account-day-caps-and-the-usage-guard
9
+ url: https://dexterm.xyz/docs/autotrade#which-account-day-caps-and-the-usage-guard
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - which
14
+ - account
15
+ - day
16
+ - caps
17
+ - usage
18
+ - guard
19
+ - running
20
+ - all
21
+ - paper
22
+ confidence: high
23
+ owner: maintainers
24
+ origin: docs-generated
25
+ reviewed_by: generated@2026-10-16
26
+ generated_from: dexterm/site content/docs (task-1420)
27
+ sources:
28
+ - site/content/docs/autotrade.md
29
+ date: 2026-10-16
30
+ ---
31
+
32
+ These come from `~/.dexterm/autotrade/runner.json` (`dexterm-runner/1`), which stays on your machine and is never part of a strategy or a shared file. Without it the runner uses your default `claude` login and these defaults:
33
+
34
+ ```json
35
+ { "schema": "dexterm-runner/1",
36
+ "account": { "kind": "native" },
37
+ "caps": { "candidateSessionsPerDay": 48, "positionSessionsPerDay": 48, "modelUsdPerDay": 20, "turnsPerDay": 2000 },
38
+ "allowanceGuard": { "fiveHourMax": 0.6, "sevenDayMax": 0.8, "onLimit": "pause-until-reset" } }
39
+ ```
40
+
41
+ - `account.kind` is `native` (your default login), `oauth-token` (a long-lived Claude login token from a helper command or a keychain item, handed to `claude` on a file descriptor; it is never on a command line, in a file or in the run file), `config-dir` (a separate Claude config folder with its own login) or `api-key` (a pay-as-you-go key from a helper or the keychain, in the session's environment only). The file names where to fetch a secret, never the secret.
42
+ - The stricter of `runner.json` and the strategy applies.
43
+ - A day is a real day by the clock (it starts at 00:00 UTC), also in a `--replay`: a fast replay of many recorded days still spends at most one day's caps per real day.
44
+ - The usage guard reads the usage your Claude sessions report: above 60% of the five-hour or 80% of the seven-day allowance no new session starts, and after a usage limit the runner waits for the reset.
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: docs-autotrade-your-strategies
3
+ title: Autotrade (paper) › Strategies and presets › Your strategies
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: Your strategies
8
+ anchor: your-strategies
9
+ url: https://dexterm.xyz/docs/autotrade#your-strategies
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - strategies
14
+ - presets
15
+ - paper
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/autotrade.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ Your strategies live in `~/.dexterm/strategies/<id>.json` (or `$DEXTERM_HOME/strategies`), one file each. Every change is validated first (an invalid file is never written) and appended to `~/.dexterm/strategies/.journal.jsonl` with who made it, the change, and the content hash before and after. Removing a strategy moves it to `.removed/`, never deletes it.
27
+
28
+ ```
29
+ dexterm autotrade list # your strategies and the presets: version, hash, mode, last backtest
30
+ dexterm autotrade new my-swing --from swing # copy a preset to edit
31
+ dexterm autotrade validate my-swing # every problem, with its path
32
+ dexterm autotrade import ./shared.json # store a strategy file (always as paper)
33
+ dexterm autotrade journal my-swing # the change history
34
+ dexterm autotrade remove my-swing
35
+ ```
36
+
37
+ A file of yours with a preset's id is used instead of that preset. Importing always sets the mode to paper, whatever the file says.
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: docs-autotrade
3
+ title: Autotrade (paper)
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ url: https://dexterm.xyz/docs/autotrade
8
+ tags:
9
+ - docs
10
+ - autotrade
11
+ - paper
12
+ confidence: high
13
+ owner: maintainers
14
+ origin: docs-generated
15
+ reviewed_by: generated@2026-10-16
16
+ generated_from: dexterm/site content/docs (task-1420)
17
+ sources:
18
+ - site/content/docs/autotrade.md
19
+ date: 2026-10-16
20
+ ---
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.
@@ -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 is experimental and has known bugs. It begins in PAPER simulation, which uses pretend funds. In the wallet path, Phantom shows and approves each wallet action, the keypress gate (a required physical key press) is on by default, and hard spending limits remain enforced in a separate signing process. No analyst, voice, or connected program can arm or sign.
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.
32
32
 
33
- Never enter a seed phrase, private key, password, API key, or authentication token. Read the paper and wallet guide (https://dexterm.xyz/docs/paper-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) and live trading (https://dexterm.xyz/docs/live-trading) before considering anything beyond the read-only walkthrough.
@@ -26,4 +26,4 @@ A no-jargon, ten-minute path from opening a terminal to safely reading your firs
26
26
 
27
27
  This guide is for you if you have never used a terminal. Your first win is simple: install dexterm, open one real coin in **read-only** mode (display information without changing anything or trading), understand the safety and holder panels, save the result, and quit. It is **not** a trade and it does not require a wallet.
28
28
 
29
- > warn: Never paste a seed phrase, private key, password, API key, login token, or authentication token into a terminal, dexterm, a chat, a command, a URL, or a log. dexterm never needs your wallet keys and never holds them. The experimental trading path asks **Phantom** to approve each wallet action. If anything claiming to be dexterm asks for a secret, stop.
29
+ > warn: Never paste a seed phrase, private key, password, API key, login token, or authentication token into a terminal, dexterm, a chat, a command, a URL, or a log. dexterm never needs your wallet keys and never holds them: it has no trading wallet and signs nothing. If anything claiming to be dexterm asks for a secret, stop.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: docs-configuration-chart-markers
3
+ title: Configuration and files on disk › Chart markers
4
+ kind: docs
5
+ page: configuration
6
+ page_title: Configuration and files on disk
7
+ heading: Chart markers
8
+ anchor: chart-markers
9
+ url: https://dexterm.xyz/docs/configuration#chart-markers
10
+ tags:
11
+ - docs
12
+ - configuration
13
+ - chart
14
+ - markers
15
+ - files
16
+ - disk
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/configuration.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ Both charts mark your own fills: the terminal token chart and the popup chart (https://dexterm.xyz/docs/popup-chart#buy-and-sell-markers). Every fill of the coin in the paper ledger and the live ledger is a `B` or `S` at its time and price, hollow `△ ▽` for PAPER and solid `▲ ▼` for live, so it reads with `NO_COLOR` too. A dashed `avg` line marks the average entry while a position is open. Markers are on by default; the popup's **MARKERS** control (or `k` in the popup) turns them off and on, and saves `"display": { "chartMarkers": "off" }` (or `"on"`; absent means `on`) through the journal, so `ctrl+z` undoes it. `dexterm display markers [on|off]` shows or sets it from the command line. Display only: nothing that trades reads it.
28
+
29
+ - The terminal chart puts the glyph and letter on the fill's candle (`△B`, `▽S`; a count when one candle holds several fills), labels the newest marker with its price or market cap, and prints a one-line legend with how many fills are off the chart.
30
+ - When the agent HUD or the brain view is up, the brain view's candle trace shows a `B` or `S` cell on each fill's candle, and the agent's PAPER position card marks its fills under its PnL trace.
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: docs-configuration-chart-y-axis
3
+ title: Configuration and files on disk › Chart Y axis
4
+ kind: docs
5
+ page: configuration
6
+ page_title: Configuration and files on disk
7
+ heading: Chart Y axis
8
+ anchor: chart-y-axis
9
+ url: https://dexterm.xyz/docs/configuration#chart-y-axis
10
+ tags:
11
+ - docs
12
+ - configuration
13
+ - chart
14
+ - axis
15
+ - files
16
+ - disk
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/configuration.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ Both charts, the terminal token chart and the popup chart (https://dexterm.xyz/docs/popup-chart#market-cap-axis), plot **market cap** on the Y axis by default, for new and existing configs alike. It is separate from the price display mode (https://dexterm.xyz/docs/configuration#price-display-mode): `A` on the token screen (or the popup's **MCAP | PRICE** control) flips the axis between market cap and USD price and saves it as `"display": { "chartAxis": "price" }` (or `"mcap"`; absent means `mcap`) through the journal, so `ctrl+z` undoes it. `dexterm display` prints both settings.
28
+
29
+ - Axis labels, the last-value tag, the crosshair legend and the volume use one compact formatter: a lowercase k for thousands, then M, B, T; one decimal below 10 of the unit and none after (`$4.9k`, `$42k`, `$487k`, `$1.2M`, `$48M`, `$1.3B`), never scientific notation. When two neighbouring ticks would read the same, the axis adds one decimal (`48.3M`).
30
+ - Historical candles are scaled by the **current** supply, and the chart title says `MCAP (current supply)` so nobody reads it as the exact market cap at that time (a burn or a mint since then is not reflected). The bars stay USD prices underneath, so indicators, PAPER entry / stop / target lines and fills keep their meaning; only the labels change.
31
+ - A token without a known supply plots its price and the title says `price (mcap unavailable)`. In price mode tiny prices use the subscript form (`0.0₅493`).
32
+ - While following an agent, the HUD's PAPER position card and ticket read entry and mark as market cap (`entry MC $4.7k`) when the price display mode (https://dexterm.xyz/docs/configuration#price-display-mode) is market cap (the default) and the supply is known.
@@ -33,7 +33,10 @@ date: 2026-10-16
33
33
  | `DEXTERM_INTENSITY` | `off` · `normal` · `fever` |
34
34
  | `DEXTERM_OFFLINE=1` | refuse live data; `--fixtures` or `--replay` only (tests and CI) |
35
35
  | `DEXTERM_ANALYST_MODEL` | the Claude model for analyst turns (default `(generated from the app: see https://dexterm.xyz/docs/configuration#environment-variables; app-help has the exact keys and commands)`) |
36
- | `DEXTERM_ANALYST_ENGINE` | `auto` (default) · `claude` · `codex`: which of your CLIs runs the analyst (since 0.1.5; also `--analyst-engine` and `analyst.engine` in `config.json`) |
36
+ | `DEXTERM_ANALYST_ENGINE` | `auto` (default) · `claude` · `codex` · `ollama`: which engine runs the analyst (since 0.1.5; `ollama` = a local model (https://dexterm.xyz/docs/ollama); also `--analyst-engine` and `analyst.engine` in `config.json`) |
37
+ | `DEXTERM_AI_PROVIDER` | `auto` · `claude` · `codex` · `ollama`: the engine for every surface, over `~/.dexterm/ai.json` (see local model (https://dexterm.xyz/docs/ollama#pick-the-engine-globally-or-per-surface)) |
38
+ | `DEXTERM_OLLAMA_HOST` · `DEXTERM_OLLAMA_MODEL` | the Ollama host (default `http://127.0.0.1:11434`; another machine is warned about) and the local model |
39
+ | `DEXTERM_AI_RESTRICTIONS` | `observe` · `propose` · `paper` · `full`: can only LOWER the local engine's profile for this run |
37
40
  | `DEXTERM_CODEX_MODEL` | pin the Codex model for analyst turns (default: your Codex default) |
38
41
  | `DEXTERM_POPUP_SHELL` | path to a prebuilt native chart window |
39
42
  | `DEXTERM_POPUP_HOTKEY` · `DEXTERM_POPUP_HOTKEY_CLOSE` | override the popup chords without a config file |
@@ -35,6 +35,7 @@ date: 2026-10-16
35
35
  | `~/.dexterm/piper/` · `~/.dexterm/models/` | the neural voice: a private Python environment with Piper (macOS, written by `dexterm voice setup`), and the downloaded voice models (`en_GB-alan-medium`, whisper `base.en`) | optional; `dexterm voice uninstall` removes the runtime, `--purge-model` the Piper voice too. See voice (https://dexterm.xyz/docs/voice#the-voice-neural-by-default) |
36
36
  | `~/.dexterm/exports/` | PNG and text files from `E` (export a view) and `H` (PnL cards (https://dexterm.xyz/docs/paper-trading#pnl-cards)) | directory 700, files 600; local only, nothing is uploaded |
37
37
  | `~/.dexterm/spectator.json` | the spectator stream (https://dexterm.xyz/docs/spectator#2-the-read-only-stream-spectate)'s loopback port and per-session token, while `dexterm agent serve --spectate` runs | mode 600; never printed or passed as an argument |
38
+ | `~/.dexterm/wallet-link.json` · `~/.dexterm/trading.panic` | a linked wallet's **public key** (from `dexterm wallet link`; never a private key), and the kill switch while `dexterm wallet panic` is engaged | optional; dexterm holds no key and has no trading wallet |
38
39
  | `~/.local/bin/dexterm` | the launcher `install.sh` writes | user-level |
39
40
  | `packages/popup/shell/wry/target/release/dexterm-shell-wry` | the native chart window, if built | `DEXTERM_POPUP_SHELL` points elsewhere |
40
41
 
@@ -36,9 +36,11 @@ $ dexterm record status # db size, snapshots, outcomes, today'
36
36
  $ dexterm record install --dry-run # print the macOS LaunchAgent it would write; writes nothing
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
+ $ dexterm record run --focus-ticks --retention-mb 3000 # also sample focus coins every 5-10 s; evict old history at 3 GB
39
40
  ```
40
41
 
41
42
  - **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.
42
43
  - **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.
43
- - **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.
44
+ - **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
+ - **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.
44
46
  - **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)).
@@ -25,11 +25,13 @@ sources:
25
25
  date: 2026-10-16
26
26
  ---
27
27
 
28
- Memecoin traders think in market cap, so every token price can be shown as **market cap** instead of the USD price per token. It is a display mode only: the same data underneath, no extra requests, and nothing that trades (signer, caps, tickets, plans, the confirm gate) reads it.
28
+ Memecoin traders think in market cap, so dexterm shows and talks about every coin in **market cap by default**: the screens, the CLI text, the chat assistant and the autotrade agents ("entered at $69.7K, exited at $264.9K, 3.8x"). USD price per token is the alternative. It is a display and wording setting only: the same data underneath, no extra requests, and nothing that trades (signer, caps, tickets, plans, the confirm gate, the autotrade engine) reads it.
29
29
 
30
- - `$` flips price ⇄ market cap on every screen and both charts, and saves it to `config.json` as `"display": { "priceMode": "mcap" }` (or `"price"`, the default) through the journal, so `ctrl+z` undoes it. `dexterm display [price|mcap]` shows or sets it from the command line; `--price-mode price|mcap` overrides it for one run; a workspace may carry `"priceMode"` and switches to it while active.
31
- - Market cap = price × supply, where the supply is what the data sources already report (the row's market cap ÷ its price at the latest tick). The screener, watchlist and new pairs lead with **MCAP** (the PRICE column moves to MCAP's old place, every sort key works as before, `mcap` still sorts by market cap); the watchlist's entry becomes **ENTRY MC**; spotlights and the token header lead with the market cap and keep the price beside it.
32
- - Charts: the terminal chart and the popup chart (https://dexterm.xyz/docs/popup-chart#market-cap-axis) label the Y axis in K / M / B (`300K`, `1.2M`). Historical candles are scaled by the **current** supply, and the chart title says `mcap (current supply)` so nobody reads it as the exact market cap at that time (a burn or a mint since then is not reflected).
33
- - Order plans already trigger on market cap: the `O` screen and the plans popup show each level with both numbers (`entry mc ≤ $300K ($0.0₃3)`), the price taken from the plan's own supply snapshot. Position rows read **AVG MC** / **MCAP**; profit and loss stay in USD (or SOL on the paper screen).
34
- - A token without a known supply falls back to its price and says so: `ᵖ` after the number in a table (the panel caption counts them), `supply unknown · showing price` on the spotlight, the header and the chart title. Nothing is estimated.
35
- - `config.json` moved to **v4** for this: an older file is migrated on load (`display.priceMode = price` added, a backup kept as `config.json.bak-v3`), nothing else changes.
30
+ - The setting is `"display": { "priceMode": "mcap" }` in `config.json` (`"price"` for USD price). `$` flips it on every screen and saves it through the journal, so `ctrl+z` undoes it; `/display mcap|price` in the chat box (also `/basis …`, `/set basis …`) does the same, and `/display` alone says which is on. `dexterm display [mcap|price]` shows or sets it from the command line. For one run: `--mcap` / `--price` on any command (`dexterm --price autotrade run …`), `--price-mode mcap|price`, or `DEXTERM_PRICE_BASIS=mcap|price`; nothing is saved. A workspace may carry `"priceMode"` and switches to it while active.
31
+ - Market cap = price × a **known** supply: the market cap a source reports at the same tick (its market cap ÷ its price), the recorded FDV ÷ price, or pump.fun's fixed 1B for a pump.fun coin (the same rule as the PnL cards (https://dexterm.xyz/docs/paper-trading)). A supply is never guessed: without one the slot shows the price and says so (`ᵖ` after the number in a table, the panel caption counts them; `supply unknown · showing price` on a spotlight or header; `price; supply unknown` in a sentence).
32
+ - Screens: the screener, watchlist and new pairs lead with **MCAP** (PRICE moves to MCAP's old column, every sort key works as before); the watchlist's entry becomes **ENTRY MC**; spotlights, the token header and the export report lead with the market cap and keep the price beside it. Position rows read **AVG MC** / **MCAP**, and STOP / TARGET, the trade tape, the ticket's price line and PAPER fill line (`@ $69.7K mcap (0.0000004 SOL)`), the trade history, the PnL chip, the brain view and the agent HUD's cards read market caps too. Profit and loss stay in USD (or SOL on the paper screen). The analyst's coin tables lead with MCAP.
33
+ - Charts have their own setting, the chart Y axis (https://dexterm.xyz/docs/configuration#chart-y-axis) (market cap by default); `$` does not change it.
34
+ - Order plans already trigger on market cap: the `O` screen and the plans popup show each level with both numbers (`entry mc ≤ $300K ($0.0₃3)`), the price taken from the plan's own supply snapshot.
35
+ - The assistants speak the same basis, read at run time: the chat assistant's instructions and its live context (cap at entry, cap now, cap targets and stops, x-multiples), the autotrade candidate and position agents (their DOSSIER, ENGINE notes and EVENTs), and the MCP tools (https://dexterm.xyz/docs/analyst#mcp-tools): every price field has a market-cap twin (`mcap`, `entryMcap`, `lastMcap`, …; `null` when the supply is unknown) and the tool descriptions tell an external agent to talk in market cap unless the user chose price.
36
+ - JSON keeps **both** numbers always: a price field is never removed or renamed, its cap twin sits beside it (the autotrade ledger's fills carry `price` and `mcap`, `avgPrice` and `avgMcap`). Only the human-facing text switches.
37
+ - `config.json` moved to **v5** for this: a file saved with the old default (`priceMode: "price"`, written by every first save) is moved to market cap on load, with a backup kept as `config.json.bak-v4`; a `price` you chose yourself (`$`, `dexterm display price`, an approved proposal, all in the journal) is kept.
@@ -53,4 +53,4 @@ $ dexterm follow mirror <addr> --propose # write it as an INERT proposed or
53
53
  $ dexterm follow mirror <addr> --json # machine-readable preview
54
54
  ```
55
55
 
56
- A refused mirror prints every failed check and exits non-zero. `--propose` writes a plan with status `proposed` and no mandate. The command has no arm, sign or execute path, so the plan can only be armed in the app through the keypress or Phantom gate. A replay test drives a followed wallet's buy through `--propose` and checks that the plan exists, is not armed and that no execute path was reached. This is the copy-trade mirror ticket of the 0.1.3 release (its first copy-trading step in the release notes): **a proposal only. Nothing arms or fires on its own.**
56
+ A refused mirror prints every failed check and exits non-zero. `--propose` writes a plan with status `proposed` and no mandate. The command has no arm, sign or execute path, so the plan can only be armed in the app through the keypress gate. A replay test drives a followed wallet's buy through `--propose` and checks that the plan exists, is not armed and that no execute path was reached. This is the copy-trade mirror ticket of the 0.1.3 release (its first copy-trading step in the release notes): **a proposal only. Nothing arms or fires on its own.**
@@ -32,7 +32,7 @@ sources:
32
32
  date: 2026-10-16
33
33
  ---
34
34
 
35
- `A` on a followed wallet raises the **AUTO-MIRROR** prompt. Turning it on is a held physical keypress, and it is refused unless the plan engine's own "this is less safe" popup (`G` on the `O` screen, keypress-only, 24 h expiry) is active. That one gesture drafts and arms a **copy mandate** in the plan engine, the signer trust domain: buy-only, `maxTier: hands-free`, with exactly the policy's caps, clamped to the engine's hard ceilings.
35
+ `A` on a followed wallet raises the **AUTO-MIRROR** prompt. Turning it on is a held physical keypress, and it is refused unless the plan engine's own "this is less safe" popup (`G` on the `O` screen, keypress-only, 24 h expiry) is active. That one gesture drafts and arms a **copy mandate** in the plan engine: buy-only, `maxTier: hands-free`, with exactly the policy's caps, clamped to the engine's hard ceilings.
36
36
 
37
37
  Every later buy by that wallet then runs the Stage 2 checks and, if they pass, is proposed and armed automatically with the **weakest confirmation tier**. The engine therefore sizes it at **¼ of the per-trade cap** (the same rule a spoken confirmation gets) and re-checks the per-trade, per-coin, total and daily-loss caps, the allow-list and the panic state at arming and on every fill. On top, the policy keeps a per-wallet **daily cap** (the mandate's total), **max open mirrors**, a **cooldown** between mirrors, a **size factor** against the leader, and an **auto-disarm streak**: that many refused or failed mirrors in a row turn it off.
38
38