mlx-bun 0.4.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 (601) hide show
  1. package/README.md +1453 -88
  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 +10 -8
  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 +12 -10
  78. package/src/{serve → server}/chat-stage.ts +27 -22
  79. package/src/{client.ts → server/client.ts} +28 -2
  80. package/src/{serve → server}/completion-executor.ts +42 -42
  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 +42 -83
  85. package/src/server/generated-token-history.ts +57 -0
  86. package/src/{serve → server}/http.ts +25 -13
  87. package/src/{serve → server}/inference-request.ts +5 -5
  88. package/src/server/job-routes.ts +20 -0
  89. package/src/server/media-prompt.ts +63 -0
  90. package/src/server/memory-completion-client.ts +46 -0
  91. package/src/server/model-routes.ts +192 -0
  92. package/src/{serve → server}/openai-wire.ts +3 -2
  93. package/src/{serve → server}/pipeline.ts +1 -1
  94. package/src/server/prompt-builder.ts +13 -0
  95. package/src/server/prompt-contracts.ts +17 -0
  96. package/src/server/proxy-routes.ts +187 -0
  97. package/src/server/publishing-routes.ts +41 -0
  98. package/src/{serve → server}/request-plan.ts +8 -8
  99. package/src/{serve → server}/request-prep.ts +82 -68
  100. package/src/{serve → server}/responses-client.ts +30 -13
  101. package/src/{responses.ts → server/responses.ts} +12 -93
  102. package/src/server/routes.ts +205 -0
  103. package/src/server/start.ts +72 -0
  104. package/src/server/status-routes.ts +108 -0
  105. package/src/{serve → server}/text-completion-stage.ts +25 -4
  106. package/src/server/text-prompt.ts +12 -0
  107. package/src/{serve → server}/token-streams.ts +36 -38
  108. package/src/server/worker-routes.ts +311 -0
  109. package/src/storage/paths.ts +61 -0
  110. package/src/web/assets.ts +37 -0
  111. package/src/web/{src → browser}/api.ts +5 -23
  112. package/src/web/browser/chat-host.ts +17 -0
  113. package/src/web/browser/installed-panels.ts +6 -0
  114. package/src/web/browser/main.ts +55 -0
  115. package/src/web/browser/markdown.ts +279 -0
  116. package/src/web/browser/memory-panel.ts +9 -0
  117. package/src/web/browser/palette.ts +64 -0
  118. package/src/web/browser/protocol.ts +13 -0
  119. package/src/web/browser/shell.ts +467 -0
  120. package/src/web/{src → browser}/status.ts +32 -36
  121. package/src/web/build.ts +51 -0
  122. package/src/web/public/app.html +1054 -0
  123. package/src/web/{sw.js → public/sw.js} +4 -3
  124. package/src/web/{vendor → public/vendor}/hljs-theme.css +2 -2
  125. package/src/web/{vendor → public/vendor}/hljs.js +2 -2
  126. package/THIRD_PARTY_LICENSES.md +0 -51
  127. package/docs/README.md +0 -94
  128. package/docs/archive/hlg-sampling.md +0 -350
  129. package/docs/archive/investigations/audio-input-plan.md +0 -356
  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/web-ui-pass-plan.md +0 -213
  174. package/docs/archive/planning/website-readme-pass-plan.md +0 -224
  175. package/docs/design/batching.md +0 -1841
  176. package/docs/design/decode-speed-program.md +0 -2349
  177. package/docs/design/dreaming-nightly-pipeline.md +0 -684
  178. package/docs/design/generic-model-support.md +0 -705
  179. package/docs/design/kv-cache.md +0 -824
  180. package/docs/design/orpo-training.md +0 -680
  181. package/docs/design/speculative-decoding.md +0 -1990
  182. package/docs/design/turboquant.md +0 -2212
  183. package/docs/design/unified-engine-frontier-plan.md +0 -1880
  184. package/docs/design/web-chat-redesign.md +0 -695
  185. package/docs/planning/PRODUCT_ROADMAP.md +0 -594
  186. package/docs/planning/ResearchTopics.md +0 -119
  187. package/docs/planning/release-notes-v0.4.0.md +0 -45
  188. package/docs/planning/video-series.md +0 -421
  189. package/docs/reference/benchmarks.md +0 -3613
  190. package/docs/reference/cli.md +0 -585
  191. package/docs/reference/distribution.md +0 -355
  192. package/docs/reference/environment.md +0 -398
  193. package/docs/reference/glossary.md +0 -39
  194. package/docs/reference/library-api.md +0 -674
  195. package/docs/reference/memory.md +0 -260
  196. package/docs/reference/models.md +0 -334
  197. package/docs/reference/server-api.md +0 -1775
  198. package/docs/reference/server-config.md +0 -846
  199. package/docs/reference/training.md +0 -462
  200. package/docs/reference/troubleshooting.md +0 -158
  201. package/src/admission-plan.ts +0 -18
  202. package/src/audio/conformer.ts +0 -647
  203. package/src/audio/decode.ts +0 -133
  204. package/src/audio/features.ts +0 -202
  205. package/src/audio/transcode.ts +0 -67
  206. package/src/backends/mlx/assistant-target.ts +0 -46
  207. package/src/backends/mlx/autoregressive-draft-rows.ts +0 -120
  208. package/src/backends/mlx/autoregressive.ts +0 -108
  209. package/src/backends/mlx/batch-group.ts +0 -1790
  210. package/src/backends/mlx/cache-attachment.ts +0 -67
  211. package/src/backends/mlx/cache-layout.ts +0 -31
  212. package/src/backends/mlx/checkpoint-state.ts +0 -53
  213. package/src/backends/mlx/continuation-persistence.ts +0 -106
  214. package/src/backends/mlx/continuation-request.ts +0 -43
  215. package/src/backends/mlx/continuation.ts +0 -77
  216. package/src/backends/mlx/diffusion.ts +0 -39
  217. package/src/backends/mlx/draft-target.ts +0 -32
  218. package/src/backends/mlx/evaluation.ts +0 -105
  219. package/src/backends/mlx/fill-append.ts +0 -45
  220. package/src/backends/mlx/full-kv-row-append.ts +0 -32
  221. package/src/backends/mlx/full-kv-row-donor.ts +0 -54
  222. package/src/backends/mlx/full-transitioning-kv-rows.ts +0 -65
  223. package/src/backends/mlx/gateway-binding.ts +0 -130
  224. package/src/backends/mlx/graph.ts +0 -38
  225. package/src/backends/mlx/kv-codec.ts +0 -9
  226. package/src/backends/mlx/kv-maintenance.ts +0 -133
  227. package/src/backends/mlx/kv-tensor-rows.ts +0 -212
  228. package/src/backends/mlx/memory-client.ts +0 -189
  229. package/src/backends/mlx/methods.ts +0 -90
  230. package/src/backends/mlx/model-prompt.ts +0 -164
  231. package/src/backends/mlx/model-serving.ts +0 -79
  232. package/src/backends/mlx/prefill-cohort.ts +0 -89
  233. package/src/backends/mlx/prefill-rows.ts +0 -200
  234. package/src/backends/mlx/prefill.ts +0 -33
  235. package/src/backends/mlx/projected-context-rows.ts +0 -72
  236. package/src/backends/mlx/request-policy.ts +0 -20
  237. package/src/backends/mlx/request-state-policy.ts +0 -41
  238. package/src/backends/mlx/rollback.ts +0 -89
  239. package/src/backends/mlx/row-sampling.ts +0 -49
  240. package/src/backends/mlx/serial-executor.ts +0 -242
  241. package/src/backends/mlx/speculative-group.ts +0 -359
  242. package/src/backends/mlx/speculative-round.ts +0 -161
  243. package/src/backends/mlx/speculative.ts +0 -114
  244. package/src/backends/mlx/state-rows.ts +0 -104
  245. package/src/backends/mlx/state-views.ts +0 -46
  246. package/src/backends/mlx/target-layout-capability.ts +0 -35
  247. package/src/backends/mlx/text-engine.ts +0 -73
  248. package/src/backends/mlx/transitioning-kv-rows.ts +0 -165
  249. package/src/chat-template.ts +0 -382
  250. package/src/cli.ts +0 -3168
  251. package/src/config.ts +0 -399
  252. package/src/contracts/completion.ts +0 -16
  253. package/src/contracts/execution.ts +0 -60
  254. package/src/contracts/generation.ts +0 -103
  255. package/src/contracts/host.ts +0 -7
  256. package/src/contracts/pi-provider.ts +0 -30
  257. package/src/contracts/pi.ts +0 -259
  258. package/src/contracts/prefix-cache.ts +0 -23
  259. package/src/contracts/resources.ts +0 -25
  260. package/src/contracts/sampling.ts +0 -23
  261. package/src/contracts/scheduling.ts +0 -45
  262. package/src/contracts/tsconfig.json +0 -14
  263. package/src/dataset/generators.ts +0 -1087
  264. package/src/dataset/index.ts +0 -12
  265. package/src/dataset/job.ts +0 -81
  266. package/src/dataset/llm.ts +0 -71
  267. package/src/dataset/registry.ts +0 -528
  268. package/src/diffusion/diffusion-generate.ts +0 -507
  269. package/src/download.ts +0 -505
  270. package/src/embed.ts +0 -77
  271. package/src/engine/admission.ts +0 -59
  272. package/src/engine/cancellation.ts +0 -38
  273. package/src/engine/engine.ts +0 -56
  274. package/src/engine/execution-coordinator.ts +0 -70
  275. package/src/engine/execution-plan.ts +0 -53
  276. package/src/engine/resources.ts +0 -53
  277. package/src/engine/scheduler.ts +0 -72
  278. package/src/engine/session.ts +0 -247
  279. package/src/eval/README.md +0 -130
  280. package/src/eval/ifeval.ts +0 -81
  281. package/src/eval/kl-prompts.ts +0 -29
  282. package/src/eval/kl.ts +0 -590
  283. package/src/eval/perplexity.ts +0 -164
  284. package/src/eval/quality-db.ts +0 -92
  285. package/src/eval/reference-logits.ts +0 -207
  286. package/src/eval/runner.ts +0 -124
  287. package/src/eval/score.ts +0 -49
  288. package/src/eval/tasks/bfcl.ts +0 -535
  289. package/src/eval/tasks/gsm8k.ts +0 -98
  290. package/src/eval/tasks/hashhop.ts +0 -139
  291. package/src/eval/tasks/humaneval.ts +0 -275
  292. package/src/eval/tasks/ifeval.ts +0 -525
  293. package/src/eval/tasks/mmlu.ts +0 -157
  294. package/src/eval/ultrafeedback.ts +0 -60
  295. package/src/evaldb.ts +0 -199
  296. package/src/expert-io.ts +0 -393
  297. package/src/expert-offload-build.ts +0 -77
  298. package/src/expert-offload.ts +0 -76
  299. package/src/expert-residency.ts +0 -1134
  300. package/src/expert-usage.ts +0 -415
  301. package/src/fill/echo-index.ts +0 -188
  302. package/src/fill/fill-session.ts +0 -452
  303. package/src/fill/proposal.ts +0 -68
  304. package/src/fill/schema-rows.ts +0 -506
  305. package/src/fill/tool-boundary.ts +0 -103
  306. package/src/fit.ts +0 -249
  307. package/src/generate.ts +0 -1346
  308. package/src/grammar.ts +0 -591
  309. package/src/harness-pi.ts +0 -184
  310. package/src/hf-push.ts +0 -628
  311. package/src/hub-rest.ts +0 -242
  312. package/src/index.ts +0 -63
  313. package/src/inference/denoising.ts +0 -17
  314. package/src/inference/draft-acceptance.ts +0 -41
  315. package/src/inference/draft-output.ts +0 -49
  316. package/src/inference/graph.ts +0 -33
  317. package/src/inference/prefill.ts +0 -39
  318. package/src/inference/rollback.ts +0 -7
  319. package/src/jobs/index.ts +0 -31
  320. package/src/jobs/job-entry.ts +0 -107
  321. package/src/jobs/task-client.ts +0 -19
  322. package/src/jobs/types.ts +0 -2
  323. package/src/kv-scheme.ts +0 -257
  324. package/src/kv-store.ts +0 -1099
  325. package/src/lab/README.md +0 -18
  326. package/src/lab/curve/curve-designer.html +0 -303
  327. package/src/lab/curve/curve-sampler.ts +0 -122
  328. package/src/lab/expert-trace/expert-trace.ts +0 -69
  329. package/src/lab/paged-kv/paged-kv-rows.ts +0 -83
  330. package/src/lab/paged-kv/paged-kv.ts +0 -270
  331. package/src/library.ts +0 -40
  332. package/src/lora.ts +0 -408
  333. package/src/md-modules.d.ts +0 -49
  334. package/src/media-fetch.ts +0 -442
  335. package/src/memory/article.ts +0 -558
  336. package/src/memory/chunk-validation.ts +0 -150
  337. package/src/memory/chunk.ts +0 -318
  338. package/src/memory/cluster.ts +0 -351
  339. package/src/memory/coverage.ts +0 -134
  340. package/src/memory/crosslink.ts +0 -0
  341. package/src/memory/db.ts +0 -253
  342. package/src/memory/entity.ts +0 -203
  343. package/src/memory/gate.ts +0 -187
  344. package/src/memory/history.ts +0 -152
  345. package/src/memory/ingest.ts +0 -335
  346. package/src/memory/model.ts +0 -183
  347. package/src/memory/normalize.ts +0 -671
  348. package/src/memory/parse.ts +0 -22
  349. package/src/memory/pipeline.ts +0 -275
  350. package/src/memory/prompts.ts +0 -65
  351. package/src/memory/query.ts +0 -334
  352. package/src/memory/reconcile.ts +0 -734
  353. package/src/memory/redirect.ts +0 -108
  354. package/src/memory/reindex.ts +0 -325
  355. package/src/memory/resolve.ts +0 -307
  356. package/src/memory/rest.ts +0 -245
  357. package/src/memory/route.ts +0 -272
  358. package/src/memory/schedule.ts +0 -165
  359. package/src/memory/stages.ts +0 -777
  360. package/src/memory/synthesize.ts +0 -1638
  361. package/src/memory/tools.ts +0 -749
  362. package/src/memory/vault.ts +0 -1194
  363. package/src/memory/wikify.ts +0 -1064
  364. package/src/mlx/array.ts +0 -388
  365. package/src/mlx/autograd.ts +0 -304
  366. package/src/mlx/checkpoint.ts +0 -149
  367. package/src/mlx/compile.ts +0 -168
  368. package/src/mlx/custom-vjp.ts +0 -188
  369. package/src/mlx/ffi.ts +0 -512
  370. package/src/mlx/materialize.ts +0 -23
  371. package/src/mlx/metal-kernel.ts +0 -159
  372. package/src/mlx/ops.ts +0 -1021
  373. package/src/mlx/quantized-rows.ts +0 -36
  374. package/src/mlx/token-bitmask.ts +0 -52
  375. package/src/mlx/turboquant-kv-decode.ts +0 -82
  376. package/src/mlx/turboquant-kv-inverse.ts +0 -122
  377. package/src/mlx/turboquant-ops.ts +0 -861
  378. package/src/mlx/turboquant-tables.ts +0 -237
  379. package/src/mmap.ts +0 -90
  380. package/src/model/artifact-identity.ts +0 -73
  381. package/src/model/batched-kv.ts +0 -235
  382. package/src/model/batched-mask.ts +0 -279
  383. package/src/model/batched-quant.ts +0 -212
  384. package/src/model/batched-quantized-kv.ts +0 -144
  385. package/src/model/batched-rotating-quant.ts +0 -353
  386. package/src/model/batched-rotating-state.ts +0 -149
  387. package/src/model/batched-rotating.ts +0 -338
  388. package/src/model/batched-row-storage.ts +0 -179
  389. package/src/model/batched-ssm.ts +0 -52
  390. package/src/model/batched-turboquant-kv.ts +0 -93
  391. package/src/model/compiled-decode.ts +0 -712
  392. package/src/model/decoded-kv-donor.ts +0 -12
  393. package/src/model/delayed-quantized-kv.ts +0 -72
  394. package/src/model/delayed-rotating-quantized-kv.ts +0 -93
  395. package/src/model/delayed-turboquant-kv.ts +0 -55
  396. package/src/model/diffusion-gemma.ts +0 -1026
  397. package/src/model/factory.ts +0 -189
  398. package/src/model/fingerprint.ts +0 -33
  399. package/src/model/flash-attention.ts +0 -694
  400. package/src/model/full-prefill-padding.ts +0 -56
  401. package/src/model/full-prefill-row.ts +0 -105
  402. package/src/model/gemma4-base.ts +0 -2351
  403. package/src/model/gemma4.ts +0 -1315
  404. package/src/model/generated/gemma4-12b.ts +0 -429
  405. package/src/model/generated/gemma4-26b.ts +0 -448
  406. package/src/model/generated/gemma4-e4b.ts +0 -717
  407. package/src/model/generated/index.ts +0 -18
  408. package/src/model/glm52-atlas.ts +0 -511
  409. package/src/model/glm52-cache.ts +0 -792
  410. package/src/model/glm52-config.ts +0 -262
  411. package/src/model/glm52-container.ts +0 -305
  412. package/src/model/glm52-coupling.ts +0 -388
  413. package/src/model/glm52-dsa.ts +0 -606
  414. package/src/model/glm52-expert-layout.ts +0 -253
  415. package/src/model/glm52-layout.ts +0 -152
  416. package/src/model/glm52-memory.ts +0 -500
  417. package/src/model/glm52-mla.ts +0 -792
  418. package/src/model/glm52-moe.ts +0 -223
  419. package/src/model/glm52-pilot.ts +0 -537
  420. package/src/model/glm52-reference.ts +0 -445
  421. package/src/model/glm52-residency.ts +0 -557
  422. package/src/model/glm52-resident-weights.ts +0 -135
  423. package/src/model/glm52-streamed-experts.ts +0 -453
  424. package/src/model/glm52-streamed-metal.ts +0 -610
  425. package/src/model/glm52-weights.ts +0 -503
  426. package/src/model/glm52.ts +0 -1132
  427. package/src/model/implementation.ts +0 -69
  428. package/src/model/kv-attention-view.ts +0 -67
  429. package/src/model/minicpm5.ts +0 -376
  430. package/src/model/profile.ts +0 -443
  431. package/src/model/qwen-append.ts +0 -12
  432. package/src/model/qwen-conv.ts +0 -52
  433. package/src/model/qwen3-delta-state.ts +0 -74
  434. package/src/model/qwen3-delta.ts +0 -451
  435. package/src/model/qwen3-moe.ts +0 -404
  436. package/src/model/qwen3-mrope.ts +0 -252
  437. package/src/model/qwen3.ts +0 -277
  438. package/src/model/qwen3_5-checkpoint.ts +0 -164
  439. package/src/model/qwen3_5.ts +0 -819
  440. package/src/model/rotating-kv-donor.ts +0 -35
  441. package/src/model/rotating-kv-layout.ts +0 -262
  442. package/src/model/rotating-row-transaction.ts +0 -35
  443. package/src/model/speculative-rotating-kv.ts +0 -101
  444. package/src/model/ssm-prefill-padding.ts +0 -39
  445. package/src/model/support.ts +0 -102
  446. package/src/model/trellis-balanced-scatter.ts +0 -51
  447. package/src/model/trellis-linear.ts +0 -672
  448. package/src/model/trellis-shared-m.ts +0 -151
  449. package/src/model/trellis-shared-scatter.ts +0 -144
  450. package/src/model/trellis-splitk-prefill.ts +0 -158
  451. package/src/model/trellis-tiled-prefill.ts +0 -136
  452. package/src/model/trellis-vector-expand.ts +0 -62
  453. package/src/model/trellis-wide-prefill.ts +0 -94
  454. package/src/model/turboquant-codec.ts +0 -83
  455. package/src/model/universal/archs.ts +0 -332
  456. package/src/model/universal/dense.ts +0 -612
  457. package/src/model/universal/modules.ts +0 -170
  458. package/src/model/universal/rope.ts +0 -381
  459. package/src/native/expert_io.c +0 -523
  460. package/src/native/frame_extract.swift +0 -140
  461. package/src/native-pack.ts +0 -162
  462. package/src/pi-provider.ts +0 -53
  463. package/src/pi-session.ts +0 -81
  464. package/src/pi-terminal.ts +0 -274
  465. package/src/pi-web.ts +0 -1932
  466. package/src/preflight.ts +0 -158
  467. package/src/prompt-cache.ts +0 -460
  468. package/src/quantize/allocator.ts +0 -627
  469. package/src/quantize/atomic-output.ts +0 -38
  470. package/src/quantize/calibration.ts +0 -181
  471. package/src/quantize/config-writer.ts +0 -145
  472. package/src/quantize/index.ts +0 -84
  473. package/src/quantize/job.ts +0 -162
  474. package/src/quantize/quantizer.ts +0 -666
  475. package/src/quantize/rotate.ts +0 -603
  476. package/src/quantize/safetensors-writer.ts +0 -249
  477. package/src/quantize/sensitivity.ts +0 -216
  478. package/src/quantize/trellis.ts +0 -586
  479. package/src/quantize/weight-transform.ts +0 -292
  480. package/src/registry.ts +0 -602
  481. package/src/runtime-config.ts +0 -81
  482. package/src/safetensors.ts +0 -158
  483. package/src/sampler.ts +0 -1011
  484. package/src/serve/admin-routes.ts +0 -184
  485. package/src/serve/assets/curve-terrain.html +0 -105
  486. package/src/serve/assets/training-inference-map.html +0 -575
  487. package/src/serve/aux-routes.ts +0 -132
  488. package/src/serve/batch-scheduler.ts +0 -8
  489. package/src/serve/checkpoint-identity.ts +0 -64
  490. package/src/serve/generation-gateway.ts +0 -496
  491. package/src/serve/isolate.ts +0 -609
  492. package/src/serve/kv-budget.ts +0 -14
  493. package/src/serve/lab-routes.ts +0 -341
  494. package/src/serve/lane-registry.ts +0 -45
  495. package/src/serve/model-admin-routes.ts +0 -155
  496. package/src/serve/model-binding.ts +0 -43
  497. package/src/serve/model-host.ts +0 -511
  498. package/src/serve/parent-application.ts +0 -56
  499. package/src/serve/prompt-response-trace.ts +0 -147
  500. package/src/serve/response-lease.ts +0 -24
  501. package/src/serve/session-search.ts +0 -326
  502. package/src/serve/static-routes.ts +0 -101
  503. package/src/server.ts +0 -1314
  504. package/src/spec/assistant-rows.ts +0 -92
  505. package/src/spec/assistant-source.ts +0 -126
  506. package/src/spec/cache-identity.ts +0 -22
  507. package/src/spec/deepspec-rows.ts +0 -29
  508. package/src/spec/deepspec-source.ts +0 -145
  509. package/src/spec/dflash-source.ts +0 -149
  510. package/src/spec/drafter.ts +0 -304
  511. package/src/spec/dspark/ab-stats.ts +0 -136
  512. package/src/spec/dspark/calibration.ts +0 -112
  513. package/src/spec/dspark/data-dflash.ts +0 -156
  514. package/src/spec/dspark/data.ts +0 -201
  515. package/src/spec/dspark/deepspec-module.ts +0 -776
  516. package/src/spec/dspark/generate-dflash.ts +0 -245
  517. package/src/spec/dspark/generate.ts +0 -290
  518. package/src/spec/dspark/loader.ts +0 -23
  519. package/src/spec/dspark/loss.ts +0 -213
  520. package/src/spec/dspark/module-dflash.ts +0 -560
  521. package/src/spec/dspark/module.ts +0 -540
  522. package/src/spec/dspark/quantize-drafter.ts +0 -91
  523. package/src/spec/dspark/sample.ts +0 -112
  524. package/src/spec/generate.ts +0 -276
  525. package/src/spec/glm52-mtp-graph.ts +0 -29
  526. package/src/spec/glm52-mtp-rows.ts +0 -132
  527. package/src/spec/glm52-mtp-source.ts +0 -317
  528. package/src/spec/glm52-mtp-state.ts +0 -33
  529. package/src/spec/ngram-source.ts +0 -204
  530. package/src/spec/projected-draft-rows.ts +0 -73
  531. package/src/spec/qwen-mtp-module.ts +0 -171
  532. package/src/spec/qwen-mtp-rows.ts +0 -219
  533. package/src/spec/qwen-mtp-source.ts +0 -383
  534. package/src/spec/qwen-mtp-state.ts +0 -30
  535. package/src/spec/serve-loop.ts +0 -585
  536. package/src/spec/source.ts +0 -215
  537. package/src/spec/two-model-rows.ts +0 -61
  538. package/src/spec/two-model.ts +0 -113
  539. package/src/ssd-cache.ts +0 -372
  540. package/src/ssd-durability.ts +0 -211
  541. package/src/tokenizer.ts +0 -335
  542. package/src/tool-approvals.ts +0 -131
  543. package/src/tool-call.ts +0 -695
  544. package/src/train/dataset.ts +0 -484
  545. package/src/train/diffusion-lora.ts +0 -216
  546. package/src/train/export.ts +0 -32
  547. package/src/train/flash-cce.ts +0 -1234
  548. package/src/train/forward.ts +0 -266
  549. package/src/train/fuse.ts +0 -243
  550. package/src/train/index.ts +0 -46
  551. package/src/train/job.ts +0 -205
  552. package/src/train/lora-params.ts +0 -254
  553. package/src/train/loss.ts +0 -1591
  554. package/src/train/merge.ts +0 -195
  555. package/src/train/optimizer.ts +0 -183
  556. package/src/train/prefix-shared.ts +0 -490
  557. package/src/train/rank.ts +0 -137
  558. package/src/train/segmented.ts +0 -1828
  559. package/src/train/steel-qmm-header.ts +0 -1461
  560. package/src/train/trainer.ts +0 -1221
  561. package/src/train/watch.ts +0 -542
  562. package/src/vision/diffusion-vision.ts +0 -620
  563. package/src/vision/embedder.ts +0 -168
  564. package/src/vision/preprocess.ts +0 -247
  565. package/src/vision/prompt.ts +0 -373
  566. package/src/vision/qwen3vl-preprocess.ts +0 -409
  567. package/src/vision/qwen3vl-prompt.ts +0 -196
  568. package/src/vision/qwen3vl-tower.ts +0 -555
  569. package/src/vision/siglip.ts +0 -599
  570. package/src/vision/video-frames.ts +0 -148
  571. package/src/web/app.html +0 -2143
  572. package/src/web/app.js +0 -5703
  573. package/src/web/skills/memory/SKILL.md +0 -120
  574. package/src/web/skills/web-research/SKILL.md +0 -46
  575. package/src/web/skills.ts +0 -97
  576. package/src/web/src/adapters-panel.ts +0 -288
  577. package/src/web/src/assistant.ts +0 -451
  578. package/src/web/src/chat.ts +0 -1057
  579. package/src/web/src/composer.ts +0 -959
  580. package/src/web/src/dataset.ts +0 -132
  581. package/src/web/src/finetune.ts +0 -267
  582. package/src/web/src/hub.ts +0 -428
  583. package/src/web/src/main.ts +0 -98
  584. package/src/web/src/markdown.ts +0 -0
  585. package/src/web/src/memory-panel.ts +0 -572
  586. package/src/web/src/model-picker.ts +0 -159
  587. package/src/web/src/palette.ts +0 -346
  588. package/src/web/src/protocol.ts +0 -26
  589. package/src/web/src/quantize.ts +0 -167
  590. package/src/web/src/rag.ts +0 -274
  591. package/src/web/src/sessions.ts +0 -469
  592. package/src/web/src/shell.ts +0 -804
  593. package/src/web/src/ui-catalog.ts +0 -78
  594. package/src/web/vendor/README.md +0 -61
  595. package/src/web-assets.ts +0 -47
  596. package/src/web-tools.ts +0 -478
  597. package/src/weights.ts +0 -255
  598. /package/src/{serve → server}/completion-sink.ts +0 -0
  599. /package/src/web/{icon.svg → public/icon.svg} +0 -0
  600. /package/src/web/{manifest.webmanifest → public/manifest.webmanifest} +0 -0
  601. /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).