mlx-bun 0.5.0 → 1.0.0

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 (640) hide show
  1. package/README.md +1449 -109
  2. package/THIRD_PARTY_NOTICES.md +882 -0
  3. package/bin/mlx-bun.convert.mjs +4 -0
  4. package/bin/mlx-bun.fuse.mjs +4 -0
  5. package/bin/mlx-bun.generate.mjs +4 -0
  6. package/bin/mlx-bun.lora.mjs +4 -0
  7. package/bin/mlx-bun.mjs +13 -21
  8. package/bin/mlx-bun.server.mjs +4 -0
  9. package/bin/mlx-bun.upload.mjs +4 -0
  10. package/dist/web/app.js +9584 -0
  11. package/package.json +50 -53
  12. package/src/cli/ane-install.ts +76 -0
  13. package/src/cli/args.ts +179 -0
  14. package/src/cli/engine-entry.ts +68 -0
  15. package/src/cli/inference.ts +214 -0
  16. package/src/cli/job-entry.ts +97 -0
  17. package/src/cli/library-host.ts +117 -0
  18. package/src/cli/main.ts +57 -0
  19. package/src/cli/memory-engine.ts +163 -0
  20. package/src/cli/memory.ts +36 -0
  21. package/src/cli/mlx-lm-aliases.ts +309 -0
  22. package/src/cli/model-choice.ts +33 -0
  23. package/src/cli/model-selection.ts +84 -0
  24. package/src/cli/module-host.ts +11 -0
  25. package/src/cli/module-verbs.ts +50 -0
  26. package/src/cli/numerical-policy.ts +12 -0
  27. package/src/cli/perplexity.ts +89 -0
  28. package/src/cli/serve-host.ts +423 -0
  29. package/src/cli/serve-isolated.ts +217 -0
  30. package/src/cli/serve-options.ts +106 -0
  31. package/src/cli/serve-state.ts +205 -0
  32. package/src/cli/serve.ts +500 -0
  33. package/src/cli/served-model-host.ts +102 -0
  34. package/src/cli/server-entry.ts +148 -0
  35. package/src/cli/serving-unit.ts +177 -0
  36. package/src/{tui.ts → cli/terminal.ts} +13 -8
  37. package/src/cli/worker-adapters.ts +34 -0
  38. package/src/cli/worker-entry.ts +272 -0
  39. package/src/cli/worker-unit.ts +179 -0
  40. package/src/engine/adapter-operation.ts +26 -0
  41. package/src/engine/cache-services.ts +114 -0
  42. package/src/engine/completion.ts +39 -0
  43. package/src/engine/generation-gateway.ts +358 -0
  44. package/src/engine/index.ts +59 -0
  45. package/src/engine/kv-budget.ts +120 -0
  46. package/src/engine/media-preparation.ts +232 -0
  47. package/src/engine/model-binding.ts +24 -0
  48. package/src/engine/model-host.ts +513 -0
  49. package/src/engine/model-serving.ts +89 -0
  50. package/src/{serve → engine}/preparation.ts +7 -5
  51. package/src/{serve → engine}/session-completion-engine.ts +6 -6
  52. package/src/engine/telemetry.ts +109 -0
  53. package/src/hub/downloads.ts +116 -0
  54. package/src/jobs/db.ts +16 -7
  55. package/src/jobs/events.ts +29 -0
  56. package/src/jobs/executable.ts +5 -0
  57. package/src/jobs/host.ts +51 -0
  58. package/src/jobs/in-process.ts +55 -0
  59. package/src/{contracts/jobs.ts → jobs/protocol.ts} +7 -9
  60. package/src/jobs/runner.ts +150 -231
  61. package/src/jobs/service.ts +75 -0
  62. package/src/jobs/sse.ts +59 -23
  63. package/src/jobs/worker-memory.ts +46 -0
  64. package/src/jobs/worker-process.ts +163 -0
  65. package/src/jobs/worker-supervisor.ts +258 -0
  66. package/src/modules.ts +58 -0
  67. package/src/publishing/catalog-hub.ts +18 -0
  68. package/src/publishing/credentials.ts +31 -0
  69. package/src/publishing/upload.ts +37 -0
  70. package/src/residency/leased-adapters.ts +21 -0
  71. package/src/residency/local-records.ts +16 -0
  72. package/src/residency/model-residency.ts +405 -0
  73. package/src/residency/record-index.ts +28 -0
  74. package/src/residency/resident-estimate.ts +50 -0
  75. package/src/{anthropic.ts → server/anthropic.ts} +3 -81
  76. package/src/server/cache-routes.ts +36 -0
  77. package/src/{serve → server}/chat-request.ts +10 -10
  78. package/src/{serve → server}/chat-stage.ts +14 -14
  79. package/src/{client.ts → server/client.ts} +28 -2
  80. package/src/{serve → server}/completion-executor.ts +33 -41
  81. package/src/server/decision-body.ts +55 -0
  82. package/src/server/decision-routes.ts +134 -0
  83. package/src/server/decision-wire.ts +228 -0
  84. package/src/{serve → server}/discovery-routes.ts +25 -82
  85. package/src/{serve → server}/http.ts +25 -13
  86. package/src/{serve → server}/inference-request.ts +5 -5
  87. package/src/server/job-routes.ts +20 -0
  88. package/src/server/media-prompt.ts +63 -0
  89. package/src/server/memory-completion-client.ts +46 -0
  90. package/src/server/model-routes.ts +192 -0
  91. package/src/{serve → server}/openai-wire.ts +3 -2
  92. package/src/{serve → server}/pipeline.ts +1 -1
  93. package/src/server/prompt-builder.ts +13 -0
  94. package/src/server/prompt-contracts.ts +17 -0
  95. package/src/server/proxy-routes.ts +187 -0
  96. package/src/server/publishing-routes.ts +41 -0
  97. package/src/{serve → server}/request-plan.ts +6 -8
  98. package/src/{serve → server}/request-prep.ts +47 -50
  99. package/src/{serve → server}/responses-client.ts +30 -13
  100. package/src/{responses.ts → server/responses.ts} +12 -93
  101. package/src/server/routes.ts +205 -0
  102. package/src/server/start.ts +72 -0
  103. package/src/server/status-routes.ts +108 -0
  104. package/src/{serve → server}/text-completion-stage.ts +25 -4
  105. package/src/server/text-prompt.ts +12 -0
  106. package/src/{serve → server}/token-streams.ts +36 -38
  107. package/src/server/worker-routes.ts +311 -0
  108. package/src/storage/paths.ts +61 -0
  109. package/src/web/assets.ts +37 -0
  110. package/src/web/{src → browser}/api.ts +5 -23
  111. package/src/web/browser/chat-host.ts +17 -0
  112. package/src/web/browser/installed-panels.ts +6 -0
  113. package/src/web/browser/main.ts +55 -0
  114. package/src/web/browser/markdown.ts +279 -0
  115. package/src/web/browser/memory-panel.ts +9 -0
  116. package/src/web/browser/palette.ts +64 -0
  117. package/src/web/browser/protocol.ts +13 -0
  118. package/src/web/browser/shell.ts +467 -0
  119. package/src/web/{src → browser}/status.ts +32 -36
  120. package/src/web/build.ts +51 -0
  121. package/src/web/public/app.html +1054 -0
  122. package/src/web/{sw.js → public/sw.js} +4 -3
  123. package/src/web/{vendor → public/vendor}/hljs-theme.css +2 -2
  124. package/src/web/{vendor → public/vendor}/hljs.js +2 -2
  125. package/THIRD_PARTY_LICENSES.md +0 -51
  126. package/docs/README.md +0 -107
  127. package/docs/archive/hlg-sampling.md +0 -350
  128. package/docs/archive/investigations/audio-input-plan.md +0 -356
  129. package/docs/archive/investigations/benchmark-ledger-through-v0.4.0.md +0 -3617
  130. package/docs/archive/investigations/chunk-finetune-experiment.md +0 -84
  131. package/docs/archive/investigations/colibri-glm52-port.md +0 -1486
  132. package/docs/archive/investigations/colibri-oracle-pin.md +0 -1284
  133. package/docs/archive/investigations/curve-bisector-routing.md +0 -123
  134. package/docs/archive/investigations/decode-roofline-lookagain.md +0 -348
  135. package/docs/archive/investigations/diffusion-gemma-port.md +0 -602
  136. package/docs/archive/investigations/dspark-handoff.md +0 -224
  137. package/docs/archive/investigations/expert-offload-single-user-moe.md +0 -292
  138. package/docs/archive/investigations/faithful-l1-consolidation.md +0 -310
  139. package/docs/archive/investigations/hlg-sampling-investigation.md +0 -970
  140. package/docs/archive/investigations/indexshare-performance-spike.md +0 -357
  141. package/docs/archive/investigations/kernel-perf-review-2026-07.md +0 -171
  142. package/docs/archive/investigations/lab-build-journal.md +0 -157
  143. package/docs/archive/investigations/minicpm5-decode-megakernel.md +0 -489
  144. package/docs/archive/investigations/openjarvis-fit.md +0 -198
  145. package/docs/archive/investigations/openwiki-evaluation.md +0 -249
  146. package/docs/archive/investigations/optimization_plan.md +0 -346
  147. package/docs/archive/investigations/orpo-base-uf-experiment-and-directions.md +0 -120
  148. package/docs/archive/investigations/orpo-flash-cce-pin-leak.md +0 -167
  149. package/docs/archive/investigations/orpo-uf-testing-handoff.md +0 -126
  150. package/docs/archive/investigations/pareto-specialized-runtime-findings.md +0 -92
  151. package/docs/archive/investigations/pi-builtin-investigation.md +0 -308
  152. package/docs/archive/investigations/pre-colibri-stabilization.md +0 -329
  153. package/docs/archive/investigations/qwen38-27b-campaign-log.md +0 -1092
  154. package/docs/archive/investigations/segmented-backward-handoff.md +0 -148
  155. package/docs/archive/investigations/starter-model-port-handoff.md +0 -342
  156. package/docs/archive/investigations/steel-flash-cce-handoff.md +0 -489
  157. package/docs/archive/investigations/the-dreaming-handoff.md +0 -141
  158. package/docs/archive/investigations/trainer-validation-experiment.md +0 -173
  159. package/docs/archive/planning/chat-ui-vision-memory-first.md +0 -199
  160. package/docs/archive/planning/chat-ui-vision.md +0 -50
  161. package/docs/archive/planning/chunk-task-roadmap.md +0 -77
  162. package/docs/archive/planning/curve-sampler-research-plan.md +0 -331
  163. package/docs/archive/planning/journal.md +0 -316
  164. package/docs/archive/planning/memory-docs-and-dag-plan.md +0 -194
  165. package/docs/archive/planning/pi-integration-review.md +0 -178
  166. package/docs/archive/planning/release-notes-v0.0.10.md +0 -57
  167. package/docs/archive/planning/release-notes-v0.0.11.md +0 -239
  168. package/docs/archive/planning/release-notes-v0.0.12.md +0 -80
  169. package/docs/archive/planning/release-notes-v0.0.13.md +0 -77
  170. package/docs/archive/planning/release-notes-v0.0.9.md +0 -122
  171. package/docs/archive/planning/release-notes-v0.2.0.md +0 -49
  172. package/docs/archive/planning/release-notes-v0.3.0.md +0 -35
  173. package/docs/archive/planning/release-notes-v0.4.0.md +0 -45
  174. package/docs/archive/planning/release-notes-v0.5.0.md +0 -37
  175. package/docs/archive/planning/web-ui-pass-plan.md +0 -213
  176. package/docs/archive/planning/website-readme-pass-plan.md +0 -224
  177. package/docs/design/batching.md +0 -2054
  178. package/docs/design/decode-speed-program.md +0 -2404
  179. package/docs/design/dreaming-nightly-pipeline.md +0 -684
  180. package/docs/design/generic-model-support.md +0 -821
  181. package/docs/design/kv-cache.md +0 -993
  182. package/docs/design/orpo-training.md +0 -680
  183. package/docs/design/speculative-decoding.md +0 -2129
  184. package/docs/design/turboquant.md +0 -2225
  185. package/docs/design/unified-engine-frontier-plan.md +0 -1987
  186. package/docs/design/web-chat-redesign.md +0 -695
  187. package/docs/planning/PRODUCT_ROADMAP.md +0 -593
  188. package/docs/planning/ResearchTopics.md +0 -119
  189. package/docs/planning/public-readiness-handoff.md +0 -244
  190. package/docs/planning/public-readiness.md +0 -149
  191. package/docs/planning/video-series.md +0 -421
  192. package/docs/reference/benchmarks.md +0 -3587
  193. package/docs/reference/cli.md +0 -646
  194. package/docs/reference/distribution.md +0 -380
  195. package/docs/reference/environment.md +0 -494
  196. package/docs/reference/glossary.md +0 -39
  197. package/docs/reference/library-api.md +0 -688
  198. package/docs/reference/memory.md +0 -260
  199. package/docs/reference/models.md +0 -346
  200. package/docs/reference/server-api.md +0 -1945
  201. package/docs/reference/server-config.md +0 -973
  202. package/docs/reference/training.md +0 -462
  203. package/docs/reference/troubleshooting.md +0 -158
  204. package/src/admission-plan.ts +0 -18
  205. package/src/audio/audiotoolbox.ts +0 -112
  206. package/src/audio/conformer.ts +0 -655
  207. package/src/audio/decode.ts +0 -133
  208. package/src/audio/features.ts +0 -202
  209. package/src/audio/mic-capture.ts +0 -98
  210. package/src/audio/silero-vad.ts +0 -379
  211. package/src/audio/transcode.ts +0 -67
  212. package/src/audio/whisper-decode.ts +0 -774
  213. package/src/audio/whisper-fast.ts +0 -732
  214. package/src/audio/whisper-format.ts +0 -73
  215. package/src/audio/whisper-mel.ts +0 -185
  216. package/src/audio/whisper-timing.ts +0 -274
  217. package/src/audio/whisper-tokenizer.ts +0 -239
  218. package/src/audio/whisper-transcribe.ts +0 -410
  219. package/src/backends/mlx/assistant-target.ts +0 -46
  220. package/src/backends/mlx/autoregressive-draft-rows.ts +0 -120
  221. package/src/backends/mlx/autoregressive.ts +0 -129
  222. package/src/backends/mlx/batch-group.ts +0 -1874
  223. package/src/backends/mlx/cache-attachment.ts +0 -67
  224. package/src/backends/mlx/cache-layout.ts +0 -31
  225. package/src/backends/mlx/checkpoint-state.ts +0 -53
  226. package/src/backends/mlx/continuation-persistence.ts +0 -107
  227. package/src/backends/mlx/continuation-request.ts +0 -43
  228. package/src/backends/mlx/continuation.ts +0 -77
  229. package/src/backends/mlx/diffusion.ts +0 -39
  230. package/src/backends/mlx/draft-target.ts +0 -32
  231. package/src/backends/mlx/encoder-cache.ts +0 -25
  232. package/src/backends/mlx/evaluation.ts +0 -105
  233. package/src/backends/mlx/fill-append.ts +0 -58
  234. package/src/backends/mlx/fill-group.ts +0 -497
  235. package/src/backends/mlx/full-kv-row-append.ts +0 -32
  236. package/src/backends/mlx/full-kv-row-donor.ts +0 -54
  237. package/src/backends/mlx/full-transitioning-kv-rows.ts +0 -65
  238. package/src/backends/mlx/gateway-binding.ts +0 -174
  239. package/src/backends/mlx/graph.ts +0 -38
  240. package/src/backends/mlx/kv-codec.ts +0 -9
  241. package/src/backends/mlx/kv-maintenance.ts +0 -161
  242. package/src/backends/mlx/kv-tensor-rows.ts +0 -212
  243. package/src/backends/mlx/memory-client.ts +0 -189
  244. package/src/backends/mlx/methods.ts +0 -90
  245. package/src/backends/mlx/mixed-iteration.ts +0 -62
  246. package/src/backends/mlx/model-prompt.ts +0 -178
  247. package/src/backends/mlx/model-serving.ts +0 -80
  248. package/src/backends/mlx/paged-cache-codec.ts +0 -27
  249. package/src/backends/mlx/prefill-cohort.ts +0 -100
  250. package/src/backends/mlx/prefill-policy.ts +0 -26
  251. package/src/backends/mlx/prefill-rows.ts +0 -244
  252. package/src/backends/mlx/prefill.ts +0 -33
  253. package/src/backends/mlx/projected-context-rows.ts +0 -72
  254. package/src/backends/mlx/prompt-input.ts +0 -29
  255. package/src/backends/mlx/qwen-prompt-input.ts +0 -40
  256. package/src/backends/mlx/request-policy.ts +0 -20
  257. package/src/backends/mlx/request-state-policy.ts +0 -54
  258. package/src/backends/mlx/rollback.ts +0 -92
  259. package/src/backends/mlx/row-sampling.ts +0 -49
  260. package/src/backends/mlx/serial-executor.ts +0 -251
  261. package/src/backends/mlx/speculative-group.ts +0 -438
  262. package/src/backends/mlx/speculative-round.ts +0 -161
  263. package/src/backends/mlx/speculative.ts +0 -131
  264. package/src/backends/mlx/state-rows.ts +0 -104
  265. package/src/backends/mlx/state-views.ts +0 -46
  266. package/src/backends/mlx/target-layout-capability.ts +0 -35
  267. package/src/backends/mlx/text-engine.ts +0 -73
  268. package/src/backends/mlx/transitioning-kv-rows.ts +0 -173
  269. package/src/chat-template.ts +0 -382
  270. package/src/cli.ts +0 -3490
  271. package/src/config.ts +0 -399
  272. package/src/contracts/completion.ts +0 -16
  273. package/src/contracts/execution.ts +0 -70
  274. package/src/contracts/generation.ts +0 -103
  275. package/src/contracts/host.ts +0 -7
  276. package/src/contracts/object-cache.ts +0 -8
  277. package/src/contracts/pi-provider.ts +0 -30
  278. package/src/contracts/pi.ts +0 -261
  279. package/src/contracts/prefix-cache.ts +0 -33
  280. package/src/contracts/resources.ts +0 -25
  281. package/src/contracts/sampling.ts +0 -23
  282. package/src/contracts/scheduling.ts +0 -54
  283. package/src/contracts/tsconfig.json +0 -14
  284. package/src/dataset/generators.ts +0 -1087
  285. package/src/dataset/index.ts +0 -12
  286. package/src/dataset/job.ts +0 -81
  287. package/src/dataset/llm.ts +0 -71
  288. package/src/dataset/registry.ts +0 -528
  289. package/src/diffusion/diffusion-generate.ts +0 -507
  290. package/src/download.ts +0 -505
  291. package/src/embed.ts +0 -77
  292. package/src/engine/admission.ts +0 -59
  293. package/src/engine/cancellation.ts +0 -38
  294. package/src/engine/engine.ts +0 -56
  295. package/src/engine/execution-coordinator.ts +0 -70
  296. package/src/engine/execution-plan.ts +0 -64
  297. package/src/engine/execution-tasks.ts +0 -44
  298. package/src/engine/namespaced-cache.ts +0 -13
  299. package/src/engine/resources.ts +0 -53
  300. package/src/engine/scheduler.ts +0 -92
  301. package/src/engine/session.ts +0 -247
  302. package/src/eval/README.md +0 -130
  303. package/src/eval/ifeval.ts +0 -81
  304. package/src/eval/kl-prompts.ts +0 -29
  305. package/src/eval/kl.ts +0 -590
  306. package/src/eval/perplexity.ts +0 -164
  307. package/src/eval/quality-db.ts +0 -92
  308. package/src/eval/reference-logits.ts +0 -207
  309. package/src/eval/runner.ts +0 -124
  310. package/src/eval/score.ts +0 -49
  311. package/src/eval/tasks/bfcl.ts +0 -535
  312. package/src/eval/tasks/gsm8k.ts +0 -98
  313. package/src/eval/tasks/hashhop.ts +0 -139
  314. package/src/eval/tasks/humaneval.ts +0 -275
  315. package/src/eval/tasks/ifeval.ts +0 -525
  316. package/src/eval/tasks/mmlu.ts +0 -157
  317. package/src/eval/ultrafeedback.ts +0 -60
  318. package/src/evaldb.ts +0 -199
  319. package/src/expert-io.ts +0 -393
  320. package/src/expert-offload-build.ts +0 -77
  321. package/src/expert-offload.ts +0 -76
  322. package/src/expert-residency.ts +0 -1134
  323. package/src/expert-usage.ts +0 -415
  324. package/src/fill/echo-index.ts +0 -188
  325. package/src/fill/fill-session.ts +0 -463
  326. package/src/fill/proposal.ts +0 -68
  327. package/src/fill/schema-rows.ts +0 -506
  328. package/src/fill/tool-boundary.ts +0 -103
  329. package/src/fit.ts +0 -249
  330. package/src/generate.ts +0 -1352
  331. package/src/grammar.ts +0 -604
  332. package/src/harness-pi.ts +0 -184
  333. package/src/hf-push.ts +0 -628
  334. package/src/hub-rest.ts +0 -242
  335. package/src/index.ts +0 -63
  336. package/src/inference/denoising.ts +0 -17
  337. package/src/inference/draft-acceptance.ts +0 -41
  338. package/src/inference/draft-output.ts +0 -49
  339. package/src/inference/graph.ts +0 -33
  340. package/src/inference/prefill.ts +0 -45
  341. package/src/inference/rollback.ts +0 -7
  342. package/src/jobs/index.ts +0 -31
  343. package/src/jobs/job-entry.ts +0 -107
  344. package/src/jobs/task-client.ts +0 -19
  345. package/src/jobs/types.ts +0 -2
  346. package/src/kv-scheme.ts +0 -279
  347. package/src/kv-store.ts +0 -1135
  348. package/src/lab/README.md +0 -22
  349. package/src/lab/curve/curve-designer.html +0 -303
  350. package/src/lab/curve/curve-sampler.ts +0 -122
  351. package/src/lab/expert-trace/expert-trace.ts +0 -69
  352. package/src/lab/paged-kv/paged-attention.ts +0 -117
  353. package/src/lab/paged-kv/paged-kv-rows.ts +0 -111
  354. package/src/lab/paged-kv/paged-kv.ts +0 -336
  355. package/src/library.ts +0 -40
  356. package/src/lora.ts +0 -408
  357. package/src/md-modules.d.ts +0 -54
  358. package/src/media-fetch.ts +0 -442
  359. package/src/memory/article.ts +0 -558
  360. package/src/memory/chunk-validation.ts +0 -150
  361. package/src/memory/chunk.ts +0 -318
  362. package/src/memory/cluster.ts +0 -351
  363. package/src/memory/coverage.ts +0 -134
  364. package/src/memory/crosslink.ts +0 -0
  365. package/src/memory/db.ts +0 -253
  366. package/src/memory/entity.ts +0 -203
  367. package/src/memory/gate.ts +0 -187
  368. package/src/memory/history.ts +0 -152
  369. package/src/memory/ingest.ts +0 -335
  370. package/src/memory/model.ts +0 -183
  371. package/src/memory/normalize.ts +0 -671
  372. package/src/memory/parse.ts +0 -22
  373. package/src/memory/pipeline.ts +0 -275
  374. package/src/memory/prompts.ts +0 -65
  375. package/src/memory/query.ts +0 -334
  376. package/src/memory/reconcile.ts +0 -734
  377. package/src/memory/redirect.ts +0 -108
  378. package/src/memory/reindex.ts +0 -325
  379. package/src/memory/resolve.ts +0 -307
  380. package/src/memory/rest.ts +0 -245
  381. package/src/memory/route.ts +0 -272
  382. package/src/memory/schedule.ts +0 -165
  383. package/src/memory/stages.ts +0 -777
  384. package/src/memory/synthesize.ts +0 -1638
  385. package/src/memory/tools.ts +0 -749
  386. package/src/memory/vault.ts +0 -1194
  387. package/src/memory/wikify.ts +0 -1064
  388. package/src/mlx/array.ts +0 -425
  389. package/src/mlx/autograd.ts +0 -304
  390. package/src/mlx/checkpoint.ts +0 -149
  391. package/src/mlx/compile.ts +0 -168
  392. package/src/mlx/custom-vjp.ts +0 -188
  393. package/src/mlx/ffi.ts +0 -531
  394. package/src/mlx/materialize.ts +0 -23
  395. package/src/mlx/metal-kernel.ts +0 -159
  396. package/src/mlx/normalized-argmax.ts +0 -116
  397. package/src/mlx/ops.ts +0 -1108
  398. package/src/mlx/quantized-rows.ts +0 -36
  399. package/src/mlx/token-bitmask.ts +0 -52
  400. package/src/mlx/turboquant-kv-decode.ts +0 -82
  401. package/src/mlx/turboquant-kv-inverse.ts +0 -122
  402. package/src/mlx/turboquant-ops.ts +0 -861
  403. package/src/mlx/turboquant-tables.ts +0 -237
  404. package/src/mmap.ts +0 -90
  405. package/src/model/artifact-identity.ts +0 -73
  406. package/src/model/batched-kv.ts +0 -235
  407. package/src/model/batched-mask.ts +0 -279
  408. package/src/model/batched-quant.ts +0 -212
  409. package/src/model/batched-quantized-kv.ts +0 -144
  410. package/src/model/batched-rotating-quant.ts +0 -353
  411. package/src/model/batched-rotating-state.ts +0 -149
  412. package/src/model/batched-rotating.ts +0 -338
  413. package/src/model/batched-row-storage.ts +0 -179
  414. package/src/model/batched-ssm.ts +0 -52
  415. package/src/model/batched-turboquant-kv.ts +0 -94
  416. package/src/model/compiled-decode.ts +0 -712
  417. package/src/model/decoded-kv-donor.ts +0 -12
  418. package/src/model/delayed-quantized-kv.ts +0 -72
  419. package/src/model/delayed-rotating-quantized-kv.ts +0 -93
  420. package/src/model/delayed-turboquant-kv.ts +0 -57
  421. package/src/model/diffusion-gemma.ts +0 -1026
  422. package/src/model/factory.ts +0 -215
  423. package/src/model/fingerprint.ts +0 -45
  424. package/src/model/flash-attention.ts +0 -694
  425. package/src/model/full-prefill-padding.ts +0 -56
  426. package/src/model/full-prefill-row.ts +0 -105
  427. package/src/model/gemma4-base.ts +0 -2370
  428. package/src/model/gemma4.ts +0 -1395
  429. package/src/model/generated/gemma4-12b.ts +0 -429
  430. package/src/model/generated/gemma4-26b.ts +0 -448
  431. package/src/model/generated/gemma4-e4b.ts +0 -717
  432. package/src/model/generated/index.ts +0 -18
  433. package/src/model/glm52-atlas.ts +0 -511
  434. package/src/model/glm52-cache.ts +0 -792
  435. package/src/model/glm52-config.ts +0 -262
  436. package/src/model/glm52-container.ts +0 -305
  437. package/src/model/glm52-coupling.ts +0 -388
  438. package/src/model/glm52-dsa.ts +0 -606
  439. package/src/model/glm52-expert-layout.ts +0 -253
  440. package/src/model/glm52-layout.ts +0 -152
  441. package/src/model/glm52-memory.ts +0 -500
  442. package/src/model/glm52-mla.ts +0 -792
  443. package/src/model/glm52-moe.ts +0 -223
  444. package/src/model/glm52-pilot.ts +0 -537
  445. package/src/model/glm52-reference.ts +0 -445
  446. package/src/model/glm52-residency.ts +0 -557
  447. package/src/model/glm52-resident-weights.ts +0 -135
  448. package/src/model/glm52-streamed-experts.ts +0 -453
  449. package/src/model/glm52-streamed-metal.ts +0 -610
  450. package/src/model/glm52-weights.ts +0 -503
  451. package/src/model/glm52.ts +0 -1132
  452. package/src/model/implementation.ts +0 -69
  453. package/src/model/kv-attention-view.ts +0 -70
  454. package/src/model/minicpm5.ts +0 -376
  455. package/src/model/profile.ts +0 -468
  456. package/src/model/quantized-append-attention.ts +0 -31
  457. package/src/model/qwen-append.ts +0 -12
  458. package/src/model/qwen-conv.ts +0 -52
  459. package/src/model/qwen3-delta-state.ts +0 -74
  460. package/src/model/qwen3-delta.ts +0 -451
  461. package/src/model/qwen3-moe.ts +0 -404
  462. package/src/model/qwen3-mrope.ts +0 -250
  463. package/src/model/qwen3.ts +0 -277
  464. package/src/model/qwen3_5-checkpoint.ts +0 -164
  465. package/src/model/qwen3_5.ts +0 -881
  466. package/src/model/rotating-kv-donor.ts +0 -35
  467. package/src/model/rotating-kv-layout.ts +0 -262
  468. package/src/model/rotating-row-transaction.ts +0 -35
  469. package/src/model/speculative-rotating-kv.ts +0 -101
  470. package/src/model/ssm-prefill-padding.ts +0 -39
  471. package/src/model/support.ts +0 -110
  472. package/src/model/token-groups.ts +0 -66
  473. package/src/model/trellis-balanced-scatter.ts +0 -51
  474. package/src/model/trellis-linear.ts +0 -672
  475. package/src/model/trellis-shared-m.ts +0 -151
  476. package/src/model/trellis-shared-scatter.ts +0 -144
  477. package/src/model/trellis-splitk-prefill.ts +0 -158
  478. package/src/model/trellis-tiled-prefill.ts +0 -136
  479. package/src/model/trellis-vector-expand.ts +0 -62
  480. package/src/model/trellis-wide-prefill.ts +0 -94
  481. package/src/model/turboquant-codec.ts +0 -89
  482. package/src/model/universal/archs.ts +0 -332
  483. package/src/model/universal/dense.ts +0 -612
  484. package/src/model/universal/modules.ts +0 -170
  485. package/src/model/universal/rope.ts +0 -381
  486. package/src/model/whisper.ts +0 -435
  487. package/src/native/expert_io.c +0 -523
  488. package/src/native/frame_extract.swift +0 -140
  489. package/src/native/mic_capture.swift +0 -92
  490. package/src/native-pack.ts +0 -163
  491. package/src/pi-provider.ts +0 -53
  492. package/src/pi-session.ts +0 -81
  493. package/src/pi-terminal.ts +0 -274
  494. package/src/pi-web.ts +0 -1940
  495. package/src/preflight.ts +0 -158
  496. package/src/prompt-cache.ts +0 -682
  497. package/src/quantize/allocator.ts +0 -627
  498. package/src/quantize/atomic-output.ts +0 -38
  499. package/src/quantize/calibration.ts +0 -181
  500. package/src/quantize/config-writer.ts +0 -145
  501. package/src/quantize/index.ts +0 -84
  502. package/src/quantize/job.ts +0 -162
  503. package/src/quantize/quantizer.ts +0 -666
  504. package/src/quantize/rotate.ts +0 -603
  505. package/src/quantize/safetensors-writer.ts +0 -249
  506. package/src/quantize/sensitivity.ts +0 -216
  507. package/src/quantize/trellis.ts +0 -586
  508. package/src/quantize/weight-transform.ts +0 -292
  509. package/src/registry.ts +0 -602
  510. package/src/runtime-config.ts +0 -77
  511. package/src/safetensors.ts +0 -165
  512. package/src/sampler.ts +0 -1012
  513. package/src/serve/admin-routes.ts +0 -184
  514. package/src/serve/assets/curve-terrain.html +0 -105
  515. package/src/serve/assets/training-inference-map.html +0 -575
  516. package/src/serve/audio-routes.ts +0 -323
  517. package/src/serve/aux-routes.ts +0 -132
  518. package/src/serve/batch-scheduler.ts +0 -8
  519. package/src/serve/checkpoint-identity.ts +0 -64
  520. package/src/serve/generation-gateway.ts +0 -537
  521. package/src/serve/isolate.ts +0 -609
  522. package/src/serve/kv-budget.ts +0 -14
  523. package/src/serve/lab-routes.ts +0 -341
  524. package/src/serve/lane-registry.ts +0 -45
  525. package/src/serve/model-admin-routes.ts +0 -155
  526. package/src/serve/model-binding.ts +0 -49
  527. package/src/serve/model-host.ts +0 -511
  528. package/src/serve/parent-application.ts +0 -56
  529. package/src/serve/prompt-response-trace.ts +0 -161
  530. package/src/serve/response-lease.ts +0 -24
  531. package/src/serve/session-search.ts +0 -326
  532. package/src/serve/static-routes.ts +0 -101
  533. package/src/serve/transcription-server.ts +0 -64
  534. package/src/serve/transcription-service.ts +0 -502
  535. package/src/server.ts +0 -1282
  536. package/src/spec/assistant-rows.ts +0 -93
  537. package/src/spec/assistant-source.ts +0 -126
  538. package/src/spec/cache-identity.ts +0 -22
  539. package/src/spec/deepspec-rows.ts +0 -29
  540. package/src/spec/deepspec-source.ts +0 -145
  541. package/src/spec/dflash-source.ts +0 -149
  542. package/src/spec/drafter.ts +0 -304
  543. package/src/spec/dspark/ab-stats.ts +0 -136
  544. package/src/spec/dspark/calibration.ts +0 -112
  545. package/src/spec/dspark/data-dflash.ts +0 -156
  546. package/src/spec/dspark/data.ts +0 -201
  547. package/src/spec/dspark/deepspec-module.ts +0 -776
  548. package/src/spec/dspark/generate-dflash.ts +0 -245
  549. package/src/spec/dspark/generate.ts +0 -290
  550. package/src/spec/dspark/loader.ts +0 -23
  551. package/src/spec/dspark/loss.ts +0 -213
  552. package/src/spec/dspark/module-dflash.ts +0 -560
  553. package/src/spec/dspark/module.ts +0 -540
  554. package/src/spec/dspark/quantize-drafter.ts +0 -91
  555. package/src/spec/dspark/sample.ts +0 -112
  556. package/src/spec/generate.ts +0 -276
  557. package/src/spec/glm52-mtp-graph.ts +0 -29
  558. package/src/spec/glm52-mtp-rows.ts +0 -132
  559. package/src/spec/glm52-mtp-source.ts +0 -318
  560. package/src/spec/glm52-mtp-state.ts +0 -33
  561. package/src/spec/ngram-source.ts +0 -226
  562. package/src/spec/projected-draft-rows.ts +0 -73
  563. package/src/spec/qwen-mtp-module.ts +0 -171
  564. package/src/spec/qwen-mtp-rows.ts +0 -230
  565. package/src/spec/qwen-mtp-source.ts +0 -386
  566. package/src/spec/qwen-mtp-state.ts +0 -30
  567. package/src/spec/serve-loop.ts +0 -587
  568. package/src/spec/source.ts +0 -228
  569. package/src/spec/two-model-rows.ts +0 -62
  570. package/src/spec/two-model.ts +0 -113
  571. package/src/ssd-cache.ts +0 -431
  572. package/src/ssd-durability.ts +0 -209
  573. package/src/storage/host-buffer.ts +0 -24
  574. package/src/storage/kv-writer.ts +0 -83
  575. package/src/storage/kv-writer.worker.js +0 -264
  576. package/src/storage/retention-policy.ts +0 -37
  577. package/src/tiered-prompt-cache.ts +0 -45
  578. package/src/tokenizer.ts +0 -335
  579. package/src/tool-approvals.ts +0 -131
  580. package/src/tool-call.ts +0 -695
  581. package/src/train/dataset.ts +0 -484
  582. package/src/train/diffusion-lora.ts +0 -216
  583. package/src/train/export.ts +0 -32
  584. package/src/train/flash-cce.ts +0 -1234
  585. package/src/train/forward.ts +0 -266
  586. package/src/train/fuse.ts +0 -243
  587. package/src/train/index.ts +0 -46
  588. package/src/train/job.ts +0 -205
  589. package/src/train/lora-params.ts +0 -254
  590. package/src/train/loss.ts +0 -1591
  591. package/src/train/merge.ts +0 -195
  592. package/src/train/optimizer.ts +0 -183
  593. package/src/train/prefix-shared.ts +0 -490
  594. package/src/train/rank.ts +0 -137
  595. package/src/train/segmented.ts +0 -1828
  596. package/src/train/steel-qmm-header.ts +0 -1461
  597. package/src/train/trainer.ts +0 -1221
  598. package/src/train/watch.ts +0 -542
  599. package/src/vision/diffusion-vision.ts +0 -620
  600. package/src/vision/embedder.ts +0 -176
  601. package/src/vision/preprocess.ts +0 -247
  602. package/src/vision/prompt.ts +0 -409
  603. package/src/vision/qwen3vl-preprocess.ts +0 -409
  604. package/src/vision/qwen3vl-prompt.ts +0 -233
  605. package/src/vision/qwen3vl-tower.ts +0 -566
  606. package/src/vision/siglip.ts +0 -607
  607. package/src/vision/video-frames.ts +0 -148
  608. package/src/web/app.html +0 -2155
  609. package/src/web/app.js +0 -5863
  610. package/src/web/skills/memory/SKILL.md +0 -120
  611. package/src/web/skills/web-research/SKILL.md +0 -46
  612. package/src/web/skills.ts +0 -97
  613. package/src/web/src/adapters-panel.ts +0 -288
  614. package/src/web/src/assistant.ts +0 -451
  615. package/src/web/src/chat.ts +0 -1060
  616. package/src/web/src/composer.ts +0 -962
  617. package/src/web/src/dataset.ts +0 -132
  618. package/src/web/src/finetune.ts +0 -267
  619. package/src/web/src/hub.ts +0 -428
  620. package/src/web/src/main.ts +0 -98
  621. package/src/web/src/markdown.ts +0 -0
  622. package/src/web/src/memory-panel.ts +0 -572
  623. package/src/web/src/model-picker.ts +0 -159
  624. package/src/web/src/palette.ts +0 -346
  625. package/src/web/src/protocol.ts +0 -26
  626. package/src/web/src/quantize.ts +0 -167
  627. package/src/web/src/rag.ts +0 -274
  628. package/src/web/src/sessions.ts +0 -469
  629. package/src/web/src/shell.ts +0 -804
  630. package/src/web/src/ui-catalog.ts +0 -78
  631. package/src/web/src/voice.ts +0 -141
  632. package/src/web/vendor/README.md +0 -61
  633. package/src/web-assets.ts +0 -47
  634. package/src/web-tools.ts +0 -478
  635. package/src/weights.ts +0 -255
  636. /package/src/{serve → server}/completion-sink.ts +0 -0
  637. /package/src/{serve → server}/generated-token-history.ts +0 -0
  638. /package/src/web/{icon.svg → public/icon.svg} +0 -0
  639. /package/src/web/{manifest.webmanifest → public/manifest.webmanifest} +0 -0
  640. /package/src/web/{vendor → public/vendor}/hljs-LICENSE +0 -0
@@ -1,198 +0,0 @@
1
- # OpenJarvis research and fit with mlx-bun
2
-
3
- Inspected September 8, 2026. OpenJarvis source revision
4
- [`e25e77d36ee487aa456978e7a7f19a7f6d712260`](https://github.com/open-jarvis/OpenJarvis/tree/e25e77d36ee487aa456978e7a7f19a7f6d712260).
5
- mlx-bun revision `673b43f39b88d8f6438e625aaaceca00851d0fbf`.
6
- This is a source/documentation review, not a reproduced benchmark or a verified
7
- live integration. No servers, model downloads, inference, or training ran.
8
-
9
- OpenJarvis is useful both as a possible consumer of mlx-bun and as prior work
10
- for the local adaptation research. Its most useful architectural idea is a
11
- versioned configuration that can be evaluated and changed across model,
12
- agent, tools, memory, and runtime settings. mlx-bun already supplies several
13
- of those components. The remaining opportunity is to connect them through
14
- replayable task evidence and controlled updates.
15
-
16
- ## What the diagram means for this project
17
-
18
- The [architecture documentation][architecture] separates five configurable
19
- components. Interfaces and hardware surround them. The table maps those
20
- roles to documented mlx-bun capabilities; it does not claim identical scope.
21
-
22
- | OpenJarvis component | Existing mlx-bun contribution | Work above or around the engine |
23
- |---|---|---|
24
- | Intelligence | Supported model graphs, model discovery, quantization and adapters | Task-aware model/adapter selection, with measured loading and switching costs |
25
- | Engine | Native MLX inference, HTTP serving, TypeScript library, caching and batching | An OpenJarvis compatibility check and an adapter for richer runtime measurements |
26
- | Agents | Built-in Pi and integration with an external Pi | Compare task loops, including bounded RLM, outside numerical inference code |
27
- | Tools and memory | Pi tools, embeddings, personal Markdown wiki and synthesis | Common tool contracts, evidence provenance and replayable memory snapshots |
28
- | Learning | LoRA SFT/DPO/ORPO training and adapter serving | Verified data collection, candidate evaluation, retention tests and promotion |
29
- | User interfaces | CLI and browser application | Messaging/desktop integrations only when a concrete workload needs them |
30
-
31
- Local sources: [CLI](../../reference/cli.md),
32
- [library API](../../reference/library-api.md),
33
- [server API](../../reference/server-api.md),
34
- [memory](../../reference/memory.md), [training](../../reference/training.md).
35
- The Dreaming is memory synthesis, not weight training. Its current
36
- [`runPipeline`](../../../src/memory/pipeline.ts) assumes conversations are
37
- already ingested; closing that ingestion gap remains existing work.
38
- Serving a model does not imply its architecture supports every training path.
39
-
40
- ## RLM implementation and its limits
41
-
42
- OpenJarvis includes a concrete [`RLMAgent`][rlm] with a persistent Python
43
- [`RLMRepl`][repl]. It installs external context in a variable, executes
44
- model-written code, exposes `llm_query` and `llm_batch`, and can return an
45
- answer through `FINAL`, `FINAL_VAR`, or the `answer` dictionary.
46
-
47
- This is a useful reference for the bounded external-context experiment in
48
- the existing `harness_research/RESEARCH_PROGRAM.md`. It belongs in the task
49
- execution loop. A separate optimizer could improve its prompt, decomposition
50
- rules or tool configuration over time.
51
-
52
- The inspected implementation has several details an experiment must account for:
53
-
54
- - `llm_batch` runs subqueries sequentially. Its name does not imply engine
55
- batching or parallel execution.
56
- - Subqueries call `engine.generate` directly and can resolve one round of
57
- returned tool calls. They do not create child REPL agents. This path should
58
- not be described as arbitrary-depth recursive RLM execution.
59
- - `AgentResult.metadata` accumulates root-call usage. `_make_sub_query`
60
- returns text and does not add leaf or follow-up usage to that accumulator.
61
- Measure every backend request independently for whole-task accounting.
62
- - Root turns and per-call output tokens have limits, but these methods do not
63
- impose one shared subcall/token/deadline budget. A single REPL program can
64
- request many leaves. Enforce shared admission limits in a request broker.
65
- - The REPL checks prohibited substrings and then invokes in-process Python
66
- `exec`. Output truncation happens after execution. These mechanisms are not
67
- process isolation or a hard execution/memory deadline. The project has
68
- separate sandbox facilities; a benchmark must explicitly select isolation
69
- and keep authoritative evaluation data outside the candidate environment.
70
- - `_resolve_context` reads `AgentContext.metadata["context"]` or memory
71
- results, while the normal user input still enters the root prompt.
72
- Put the large corpus in the external-context field, not the user question.
73
- Existing conversation messages are also retained by
74
- [`BaseAgent._build_messages`][base-agent].
75
-
76
- The appropriate comparison remains retrieval versus an external-context
77
- REPL without subcalls versus bounded depth-1 RLM, on dense document
78
- aggregation. Small lookup tasks establish connectivity but give weak
79
- evidence about RLM's value. On a serial Mac GPU, extra model calls can erase
80
- the benefit of smaller contexts; measure complete tasks.
81
-
82
- ## Self-improvement is several separate implementations
83
-
84
- | Mechanism | What the inspected source establishes |
85
- |---|---|
86
- | Learned routing | [`LearnedRouterPolicy`][routing] maps coarse query classes to models using trace outcomes and feedback. This is distinct from training language-model weights. |
87
- | Configuration search | [`SpecSearchOrchestrator`][search] connects diagnosis, typed edit planning, execution, evaluation and recording. Runtime dependencies must be supplied. |
88
- | Candidate gate | [`BenchmarkGate`][gate] compares overall score and per-cluster regressions using a versioned benchmark and repeatable subsample seed. |
89
- | Weight training | [`SFTTrainer`][sft] delegates LoRA training to a separate trainer. [`GRPOTrainer`][grpo] contains a Torch/Transformers training loop with policy and reference models. Neither was executed in this review. |
90
- | Weight updates inside spec search | [`LoraStubApplier`][lora-stub] rejects `LORA_FINETUNE` and raises `NotImplementedError` if applied. Separate trainers do not establish an integrated spec-search training cycle. |
91
-
92
- The [spec-search guide][search-guide] describes a teacher diagnosing local
93
- student failures and proposing changes. Its quickstart uses fake
94
- teacher/student/judge components. It illustrates the orchestration, not
95
- measured improvement by a deployed learning system.
96
-
97
- There is documentation drift worth preserving in a reproduction. The guide's
98
- gate predicate requires improvement on the targeted failure cluster. The
99
- inspected `BenchmarkGate.evaluate` instead requires improvement in overall
100
- score and rejects excessive per-cluster regressions; it receives no target
101
- cluster argument. Its constructor defaults to a 0.05 regression allowance,
102
- while the guide's configuration uses 0.01. `from_config` forwards the supplied
103
- value. Pin the actual configuration and predicate instead of assuming that
104
- the prose, constructor defaults, and configured execution are interchangeable.
105
-
106
- The [learning architecture page][learning] also describes older router names
107
- and a GRPO router stub. Current learned routing is consolidated in
108
- `learning/routing/learned_router.py`, while the separate intelligence GRPO
109
- trainer has implementation code. A blanket claim that "GRPO is a stub"
110
- would therefore be misleading.
111
-
112
- The [paper][paper] is close prior work for the research program: it studies
113
- typed specifications and teacher-guided edits across several components,
114
- with local inference after search. Its reported experiments span multiple
115
- models and hardware classes, including Macs and larger workstations.
116
- They do not establish the same gains on our M1 Max or M4 Pro, or prove that
117
- the checked-out code reproduces every reported experiment. Its acknowledged
118
- limitations include judge bias, statistical precision and search convergence.
119
- We should reproduce a bounded comparison before adopting performance claims.
120
-
121
- ## Integration path
122
-
123
- The current [engine registry][engines] already registers `MLXEngine` through
124
- the shared [`_OpenAICompatibleEngine`][http-engine]. That class accepts a
125
- host URL, probes `/v1/models`, and calls `/v1/chat/completions`. The generic
126
- `OpenAICompatEngine` offers the same interface for explicit endpoints.
127
- This makes using mlx-bun as the inference backend a plausible small
128
- integration, without importing OpenJarvis into the inference engine.
129
-
130
- For a future smoke test, construct the generic engine with mlx-bun's origin
131
- URL, without `/v1`, and choose the exact model ID from `list_models()`.
132
- Check plain completion, tool-call round trips, streaming completion/error
133
- handling, cancellation, reasoning output, model identity and usage against
134
- raw HTTP responses. This review did not perform that test.
135
-
136
- Two adapter behaviors need special attention:
137
-
138
- - Synchronous generation retries a tool-bearing HTTP 400 without `tools`
139
- and `tool_choice`. A successful retry does not establish tool compatibility.
140
- - It takes the maximum of reported prompt tokens and an estimate, and labels
141
- reported prompt tokens as `prompt_tokens_evaluated`. Those fields cannot
142
- establish actual prefill work or cache reuse. Retain raw server measurements.
143
-
144
- Use HTTP for the first comparison. A direct TypeScript implementation can
145
- later use mlx-bun's library if measured requirements justify it.
146
-
147
- ## Recommended direction
148
-
149
- Keep mlx-bun responsible for inference correctness, resource management,
150
- training execution and adapter lifecycle. Keep experimental task loops and
151
- the process that changes them in `harness_research` initially. Use the same
152
- backend for Pi, a controlled loop and OpenJarvis comparisons.
153
-
154
- The next useful steps extend the existing research program:
155
-
156
- 1. Complete the already proposed repeated-failure-feedback experiment in
157
- `harness_research/NEXT_EXPERIMENT.md`. OpenJarvis strengthens the case for
158
- including both a prompt-only comparison and executable loop changes.
159
- 2. Define an immutable run identity covering model artifact, quantization,
160
- adapter, agent code, prompts, tools, memory snapshot, runtime settings,
161
- task revision and evaluation revision. Record all root/leaf/teacher calls.
162
- 3. Add an OpenJarvis baseline through HTTP after the compatibility checks.
163
- Preserve its full configuration and raw request trace.
164
- 4. Run the separate RLM ablation with one shared request budget, isolated
165
- execution and serial GPU admission. Include forced finalization in costs.
166
- 5. Introduce typed candidate edits, frozen evaluation and rollback. Start with
167
- bounded prompt/tool/loop changes before searching many dimensions together.
168
- 6. Connect verified examples to existing LoRA training only after the fixed
169
- task loop is measurable. Compare frozen, controller-only, adapter-only and
170
- combined adaptation, including retention and collection/training/eval cost.
171
-
172
- Personal memory, task scratch state, training data and learned adapters need
173
- separate identities. A useful memory article is not automatically a training
174
- example, and a plausible answer is not automatically a verified success.
175
- Background synthesis, judging and training all consume the same Mac budget.
176
- The existing serialized scheduling proposal remains appropriate for the first
177
- study; this research supplies no evidence for concurrent training and serving.
178
-
179
- The opportunity is a local system that improves verified task outcomes while
180
- remaining usable on a personal Mac. OpenJarvis provides a close comparison
181
- and concrete implementation ideas. Our differentiator must be demonstrated
182
- through that complete operating loop, including its costs and failures.
183
-
184
- [architecture]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/docs/architecture/overview.md
185
- [learning]: https://open-jarvis.github.io/OpenJarvis/architecture/learning/
186
- [paper]: https://arxiv.org/html/2605.17172v1
187
- [rlm]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/agents/rlm.py
188
- [repl]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/agents/rlm_repl.py
189
- [base-agent]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/agents/_stubs.py
190
- [routing]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/routing/learned_router.py
191
- [search]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/spec_search/orchestrator.py
192
- [gate]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/spec_search/gate/benchmark_gate.py
193
- [sft]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/intelligence/sft_trainer.py
194
- [grpo]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/intelligence/grpo_trainer.py
195
- [lora-stub]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/spec_search/execute/appliers/lora_stub.py
196
- [search-guide]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/docs/user-guide/llm-guided-spec-search.md
197
- [engines]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/engine/openai_compat_engines.py
198
- [http-engine]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/engine/_openai_compat.py
@@ -1,249 +0,0 @@
1
- # OpenWiki — evaluation & fit analysis
2
-
3
- **Date:** 2026-07-06
4
- **Author:** investigation (agent), worktree `investigate/openwiki-memory`
5
- **Subject:** [langchain-ai/openwiki](https://github.com/langchain-ai/openwiki) — "a CLI that writes and
6
- maintains agent documentation for your codebase, built specifically for agents to consume."
7
- **Question asked:** how (if at all) does OpenWiki fit inside our memory system ("The Dreaming"), and
8
- is it a good fit anywhere else in mlx-bun?
9
-
10
- ---
11
-
12
- ## TL;DR — four verdicts
13
-
14
- | # | Question | Verdict | One-liner |
15
- |---|----------|---------|-----------|
16
- | 1 | Adopt OpenWiki **as the memory engine**? | ❌ **No** | Architecturally the mirror-image of The Dreaming; would throw away the hard-won decomposition + gate design and drag LangChain into a Bun/MLX-only repo. |
17
- | 2 | Borrow OpenWiki **patterns** into memory? | 🟡 **Marginal** | We already independently arrived at its good ideas, usually in stronger form. One minor borrow (the `_plan.md` durable-plan artifact). |
18
- | 3 | Run OpenWiki **on mlx-bun the repo** (its own agent docs)? | ✅ **Yes, good fit** | It targets exactly our named failure mode — reference-doc drift — and runs as an external dev tool, not a vendored dep. |
19
- | 4 | Point OpenWiki **at our own OpenAI-compatible server**? | ✅ **Yes — the strategic find** | DeepAgents-over-local-mlx-bun is an on-brand, zero-cloud dogfood showcase *and* a hard agentic-tool-use conformance test for the server. |
20
-
21
- The headline: **OpenWiki is not a fit *inside* the memory pipeline, but it is a fit *around* mlx-bun** —
22
- as a doc tool for our own repo and, more interestingly, as a real LangChain agent to run *against* our
23
- server to prove the "drop-in, local, agentic" thesis.
24
-
25
- ---
26
-
27
- ## 1. What OpenWiki is (full rundown)
28
-
29
- A CLI (`npm install -g openwiki`) from LangChain, released **v0.0.1 on 2026-07-05** (i.e. one day old at
30
- time of writing; ~7.7k stars, but 42 open PRs / 48 issues — treat as brand-new and unstable). MIT
31
- licensed. TypeScript/JavaScript.
32
-
33
- **Purpose.** Generate and maintain a repo's documentation *for coding agents*, not for humans. The
34
- generated wiki is "structured markdown optimized for LLM context — headings, cross-references, and
35
- summaries designed for an agent to quickly find relevant context." Motivation from the launch post:
36
- *"Agents write better code when they understand the repo they're working in,"* and stuffing the whole
37
- repo into one `CLAUDE.md` wastes context in large repos.
38
-
39
- **Surface.**
40
- ```
41
- openwiki --init # pick provider + API key, then generate the wiki
42
- openwiki # interactive
43
- openwiki "<request>" # interactive, seeded
44
- openwiki -p "<request>" # one-shot, non-interactive
45
- openwiki --update # refresh from repo changes since last run
46
- ```
47
- - Writes an `openwiki/` directory of markdown pages.
48
- - Patches `AGENTS.md` / `CLAUDE.md` with a pointer to the wiki **and a "when to use it" note**.
49
- - Ships a **GitHub Action** and **GitLab CI** template that open a PR/MR when docs need updating.
50
- - Config in `~/.openwiki/.env`: provider, API key, model id, optional LangSmith tracing.
51
- - Providers: OpenRouter (default, an open model), Fireworks, Baseten, OpenAI, Anthropic, and
52
- **OpenAI-compatible** via `OPENAI_COMPATIBLE_BASE_URL` (also `ANTHROPIC_BASE_URL`). ← load-bearing
53
- for verdict 4.
54
-
55
- ## 2. How OpenWiki works (architecture)
56
-
57
- Built on LangChain's **DeepAgents** + **LangGraph**. The construction is deliberately thin:
58
-
59
- ```ts
60
- const agent = createDeepAgent({
61
- model,
62
- tools: [], // NO custom tools
63
- checkpointer, // thread memory
64
- backend: new LocalShellBackend({ /* vfs → repo root */ }),
65
- systemPrompt: createSystemPrompt(command),
66
- });
67
- ```
68
-
69
- - **No bespoke tools.** It hands a general coding agent a `LocalShellBackend`: a virtual filesystem
70
- mapped to the repo root exposing `ls / read_file / write_file / edit_file / glob / grep` plus a
71
- sandboxed `execute` (120 s timeout, 100 KB output cap). All capability comes from the shell backend.
72
- - **All the IP is in the system prompt + the loop.** The prompt encodes:
73
- - **Discovery → plan.** Before writing, the agent writes a temporary `openwiki/_plan.md` listing
74
- *intended pages, source evidence per page, and remaining questions.*
75
- - **Granularity rules.** ≤~10 primary source files → a `quickstart.md` + at most 1–2 supporting
76
- pages. *"Do not create a directory unless it represents a real documentation area."*
77
- - **One canonical page per concept.** *"Keep each concept in one canonical page… keep the detailed
78
- explanation in the canonical page and make other mentions brief or link-only."* Inline source-file
79
- references so a reader can verify.
80
- - **Surgical, diff-budgeted updates.** On `--update` it *"checks which commits landed since the last
81
- run, uses git diffs to understand what changed, then updates the wiki."* Soft budget: *"if fewer
82
- than about 5 source files changed, update at most 1–2 wiki pages… Updates may be a no-op."*
83
- - **Change detection** by content snapshot (`createOpenWikiContentSnapshot`); persists run metadata
84
- only when the wiki actually changed.
85
- - Streaming LangGraph invocation with a checkpointer keyed by `thread_id` (interactive Q&A over the
86
- wiki + codebase reuses the thread).
87
-
88
- **Design bet:** a *strong single model* + a *good prompt* + a *free-roaming agent* with raw shell
89
- tools. Trust the model to hold the repo in its head and write files directly.
90
-
91
- ## 3. The Dreaming, in one screen (for contrast)
92
-
93
- Our memory system ("The Dreaming", `src/memory/*`, ~12 k LoC, running end-to-end on real data):
94
-
95
- - **Corpus:** the user's conversation history (pointer-DB of `messages` → `chunks` as
96
- `(conv,start,end)` ranges), not a code tree.
97
- - **Engine:** ONE local model (`gemma-4-e4b-it-OptiQ-4bit`) + per-stage LoRAs, loaded once. No cloud.
98
- - **Pipeline:** `SEGMENT → EXTRACT → ROUTE → SECTION-ROUTE → PATCH → NORMALIZE → LINK → WIKIFY →
99
- RECONCILE → COMMIT`, every stage the *smallest atomic task* (binary yes/no preferred).
100
- - **Output:** entity-centric wiki — articles are *things*, with infoboxes, wikilinks, categories.
101
- - **Invariants enforced by code, not the model:** *"LoRAs propose, gates dispose"* — ≥70% prose floor,
102
- every citation survives, weak output → NO-OP, deterministic footnote bijection + wikilink
103
- canonicalization, one git commit per run.
104
- - **Single writer:** *"Chat agents read memory; `mlx-bun memory synthesize` is the only writer."* Reads
105
- go through 7 read-only `memory_*` tools + a bundled skill.
106
- - **Self-healing:** chronological walk; latest statement wins; AI errors silently overwritten.
107
-
108
- **Design bet:** the exact opposite of OpenWiki — a *weak local model* + *heavy decomposition* +
109
- *deterministic scaffolding*. Assume the model **cannot** hold an article in its head or be trusted to
110
- write files freely, and engineer around that.
111
-
112
- ## 4. Head-to-head: same shape, opposite philosophy
113
-
114
- Both are *"corpus → agentic synthesis → LLM-navigable markdown wiki → agent consumes it, kept fresh
115
- incrementally."* That surface similarity is why the question is worth asking. But under the hood they
116
- are mirror images:
117
-
118
- | Axis | OpenWiki | The Dreaming |
119
- |------|----------|--------------|
120
- | Corpus | Code repository | Personal conversation history |
121
- | Model | Strong cloud model (default OpenRouter) | Weak local e4b + LoRAs, no cloud |
122
- | Capacity model | Big context — model holds the repo | *Capacity by decomposition* — can't hold an article |
123
- | Harness | Thin (shell tools + one prompt) | Thick (10-stage DAG, ledgers, gates) |
124
- | Writes | Agent writes files freely | Single writer, gated, git-committed |
125
- | Dedup | Prompt rule ("one canonical page") | Deterministic entity name-match routing |
126
- | Update trigger | `git diff` since last commit | Chronological chunk cursor / new sessions |
127
- | Self-healing | Re-edit page on diff | Chronological latest-value reconcile |
128
- | Determinism | Trusts the model | Code enforces invariants |
129
- | Deps | LangChain + DeepAgents + LangGraph | Bun-native, MLX-only, minimal |
130
-
131
- Pithily: **OpenWiki = smart model, dumb harness. The Dreaming = dumb model, smart harness.** They solve
132
- the same *shape* of problem from opposite ends of the model-capability axis.
133
-
134
- ## 5. The four fit verdicts, argued
135
-
136
- ### Verdict 1 — OpenWiki as the memory engine: ❌ No
137
-
138
- - **Architectural inversion.** The Dreaming's entire thesis is that a local 4-bit e4b *cannot* do
139
- OpenWiki's free-roaming, hold-it-in-context, write-files-directly loop — which is *why* the
140
- decomposition + gate architecture exists. Adopting OpenWiki means discarding the exact design that
141
- makes local synthesis work.
142
- - **Contract violation.** OpenWiki's agent writes files freely; The Dreaming has a single gated writer
143
- with a git-commit-per-run audit trail and NO-OP-on-weak-output. These are incompatible write models.
144
- - **Corpus mismatch.** OpenWiki reads a code tree via shell/grep; The Dreaming reads a pointer-DB of
145
- conversation chunks with chronological self-healing. Different input, different invariants.
146
- - **Identity/deps.** Pulling LangChain + LangGraph into a repo whose stated identity is Bun-native,
147
- MLX-only, minimal-dep, private (see the `mlx-bun scope & framing` and `drop-in replacement` notes)
148
- is a non-starter as a runtime dependency.
149
- - **Maturity.** v0.0.1, one day old. Nothing load-bearing should sit on it yet.
150
-
151
- ### Verdict 2 — Borrow OpenWiki's patterns: 🟡 Marginal
152
-
153
- We have *convergently* arrived at most of OpenWiki's good ideas, usually stronger:
154
-
155
- | OpenWiki idea | Our equivalent | Who's ahead |
156
- |---------------|----------------|-------------|
157
- | `_plan.md` before writing | CREATE flow: sub-cluster → outline → draft | ~tie; their durable, reviewable *plan artifact* is a nice touch |
158
- | Soft diff budget, updates may be no-op | Idempotency ledger + conservative gate + NO-OP | **us** (ledger is stronger than a prompt heuristic) |
159
- | One canonical page (prompt rule) | Deterministic entity name-match routing | **us** (mechanism > instruction) |
160
- | Patch `AGENTS.md`/`CLAUDE.md` with pointer | 7 read-only `memory_*` tools + bundled skill | **us** (tools > prose pointer) |
161
- | git-diff-driven refresh | chronological chunk cursor | different corpus; both valid |
162
-
163
- **Only genuinely fresh borrow:** emit a durable, auditable **plan artifact** (their `_plan.md`) in the
164
- CREATE flow, so a synthesis run's *intended* article/section changes are reviewable in the git diff
165
- alongside the result. Low effort, small upside. Not worth a dedicated work item; fold in opportunistically.
166
-
167
- ### Verdict 3 — Run OpenWiki on mlx-bun the repo: ✅ Good fit
168
-
169
- This is where OpenWiki was literally built to help, and mlx-bun is close to a canonical target:
170
-
171
- - **It attacks our named failure mode.** `CLAUDE.md` calls reference-doc drift *"the observed failure
172
- mode"* (the 2026-07-03 sweep found undocumented flags, dead version pins). The doc-map even carries a
173
- manual chore: *"keep these lists in sync with `ls docs/…`."* OpenWiki's diff-driven refresh + CI-PR is
174
- exactly this job.
175
- - **Additive, not a replacement.** It would generate a *derived, agent-facing structural index of the
176
- code* — it does **not** replace the curated, opinionated human docs (`PLAN.md` is "the engineering
177
- contract"; `STATUS.md`, design docs). Think: an auto-maintained `openwiki/` map of `src/` that points
178
- back into the hand-written design docs.
179
- - **Nice synergy with the vault.** The memory vault already symlinks mlx-bun docs into
180
- `~/.mlx-bun/wiki/Reference/` (read-only). An auto-maintained repo wiki would flow straight into that
181
- Reference surface — the personal vault gets a fresher code map for free.
182
- - **Runs as an external dev tool**, a global npm CLI in CI — *not* a vendored dependency. No LangChain
183
- contamination of the shipped codebase. This sidesteps the Verdict-1 dependency objection entirely.
184
-
185
- **Caveat:** the one tension is "cloud API on a local/private repo." Verdict 4 dissolves it.
186
-
187
- ### Verdict 4 — Point OpenWiki at our own OpenAI-compatible server: ✅ The strategic find
188
-
189
- OpenWiki speaks **OpenAI-compatible base URL**; mlx-bun *is* an OpenAI-compatible server (the whole
190
- "drop-in replacement for mlx-lm / serving speed is the user metric" thesis). Compose them:
191
-
192
- ```
193
- OPENAI_COMPATIBLE_BASE_URL=http://localhost:<mlx-bun-port> \
194
- OPENAI_COMPATIBLE_API_KEY=… openwiki --init # generate mlx-bun's own wiki, 100% local
195
- ```
196
-
197
- Why this is the most interesting outcome of the investigation:
198
-
199
- 1. **On-brand, zero-cloud.** Resolves the Verdict-3 tension: a real LangChain agent documents our repo
200
- with *no* cloud call, on a Gemma running in mlx-bun. Directly demonstrates the `local-to-you` and
201
- `install-to-chat` theses on an external, third-party agent.
202
- 2. **A hard conformance test.** DeepAgents drives many tool calls + long contexts + streaming. Chat
203
- parity is easy; *agentic tool-use conformance* is the bar that actually matters for "agents need the
204
- server" (`serving speed is the user metric`). If OpenWiki runs unmodified end-to-end against our
205
- server, that's a strong, concrete proof point for the README/website. If it *doesn't*, we've found a
206
- real function-calling / prefill / KV gap under agentic load — also valuable.
207
- 3. **Coverage/stress.** It exercises the server the way a coding agent does (glob/grep/read/write loops,
208
- big prefills), complementing the batch/spec-decode perf work with a realistic agentic workload.
209
-
210
- **Caveat to measure, not assume:** DeepAgents presumes a *capable* model — the very assumption The
211
- Dreaming rejects for local e4b. A 4-bit e4b may drive the free-roaming loop poorly and produce a
212
- mediocre wiki. Mitigations: point it at a larger local model (the 12B parity target) via the same
213
- server, and/or judge output quality explicitly. Either way the *conformance* result (does the loop run?)
214
- is decoupled from the *quality* result (is the wiki good?), and both are worth knowing.
215
-
216
- ## 6. Recommendation — what to actually do
217
-
218
- 1. **Do not** put OpenWiki inside the memory pipeline. The Dreaming is more mature for its constraints
219
- and philosophically opposite. (Verdicts 1 & 2.)
220
- 2. **Spike Verdict 4 first — it's the highest-information, lowest-cost move.** Point OpenWiki at a
221
- running mlx-bun server (Josh runs the server; no session starts it) and try `openwiki --init` on a
222
- small repo, then on mlx-bun itself. Outcome is binary-useful: either a showcase demo of
223
- "third-party LangChain agent runs locally on mlx-bun," or a concrete agentic-tool-use bug list for
224
- the server. Bench it under the standard preflight if any perf number gets quoted
225
- (`dirty-machine-numbers-are-garbage`).
226
- 3. **If the spike is clean,** consider OpenWiki as an *external CI doc tool* for the repo (Verdict 3):
227
- an auto-maintained `openwiki/` structural map that feeds the vault's `Reference/` surface. Keep it
228
- clearly subordinate to the hand-written `PLAN.md`/design docs.
229
- 4. **Opportunistically** add a durable `_plan.md`-style plan artifact to the memory CREATE flow for
230
- reviewability (Verdict 2). Not a standalone work item.
231
-
232
- ## 7. Risks & unknowns
233
-
234
- - OpenWiki is **v0.0.1, ~1 day old**, 42 open PRs / 48 issues — API and behavior will churn. Pin a
235
- commit if used in CI.
236
- - **Local-model quality** driving DeepAgents is unproven (contradicts our own capacity-by-decomposition
237
- finding). Measure; don't assume the wiki is good just because the loop runs.
238
- - **DeepAgents ⇄ our server function-calling compatibility** is the actual thing under test in Verdict
239
- 4 — tool-call formatting, streaming, and long-prefill behavior are where it could break.
240
- - Do **not** treat any OpenWiki-generated wiki as a source of truth over the curated docs; it's a
241
- derived index.
242
-
243
- ## Sources
244
-
245
- - [langchain-ai/openwiki](https://github.com/langchain-ai/openwiki) — repo, README, `src/agent/*`
246
- - [LangChain blog — Introducing OpenWiki](https://www.langchain.com/blog/introducing-openwiki-an-open-source-agent-for-repo-documentation)
247
- - Internal: `docs/design/memory-system.md`, `memory-synthesis.md`, `memory-inference-path.md`,
248
- `write-pipeline-entity.md`, `the-dreaming-master-plan.md`, `the-dreaming-handoff.md`,
249
- `docs/reference/memory.md`; `src/memory/*` (~12 k LoC).