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,646 +0,0 @@
1
- # CLI reference
2
-
3
- Every mlx-bun verb, from `src/cli.ts`. Commands are shown as
4
- `mlx-bun <verb>`; from a clone the identical command is
5
- `bun src/cli.ts <verb>`. `mlx-bun help <verb>` (or `mlx-bun <verb> --help`)
6
- prints the full flag list for any command; `mlx-bun --version` (also `-v` or
7
- `mlx-bun version`) prints the version.
8
-
9
- **Model arguments are substring queries** against the registry (`e4b`,
10
- `12B`, `qwen`, a repo substring); a query that matches more than one model
11
- errors and lists the candidates. A directory containing `config.json` is
12
- loaded directly wherever a model is accepted (`serve`, `pi`, `benchmark`,
13
- `embed`, `fuse`, `convert`, `perplexity`).
14
-
15
- **Bare `mlx-bun`** (no verb, or only options such as `mlx-bun --port 9000`)
16
- runs `serve`. Explicit verbs and `--help`/`--version` still win.
17
-
18
- **Unknown flags are ignored**, not rejected — `mlx-bun serve --kv-bits 4`
19
- starts a server as if the flag were absent. The exceptions are `fuse` and
20
- `convert`, which refuse the mlx-lm flags they don't implement (listed under
21
- each verb).
22
-
23
- ## Verb index
24
-
25
- | Verb | Does | mlx-lm counterpart |
26
- |---|---|---|
27
- | `serve` | OpenAI/Anthropic-compatible server + web app | `mlx_lm.server` |
28
- | `pi` | built-in coding agent on a local model | — (`mlx_lm.chat` is the nearest) |
29
- | `harness pi` | connect your own pi install to the local server | — |
30
- | `generate` (`gen`) | one-shot generation, no server | `mlx_lm.generate` |
31
- | `embed` | text embeddings, no server | — |
32
- | `transcribe` | speech-to-text from an audio file, no server | — (`mlx_whisper` CLI is the nearest) |
33
- | `dictate` | push-to-talk microphone dictation → print / clipboard / typed keystrokes | — |
34
- | `get` | download a model (resumable, verified) | `mlx_lm.manage` (partial) |
35
- | `scan` | re-index the Hugging Face cache | `mlx_lm.manage --scan` |
36
- | `ls` | list downloaded models | `mlx_lm.manage --scan` |
37
- | `gc` | reclaim superseded snapshots + dead blobs | `mlx_lm.manage --delete` (different unit) |
38
- | `fit` | will it fit? memory + speed assessment | — (`optiq latency`) |
39
- | `train` | LoRA fine-tune (SFT / DPO / ORPO) | `mlx_lm.lora --train` |
40
- | `train-watch` | live dashboard for a training run | — |
41
- | `fuse` | merge an adapter into the base weights | `mlx_lm.fuse` |
42
- | `convert` | quantize an HF model into a local MLX snapshot | `mlx_lm.convert` (+ `mlx_lm.dynamic_quant`, `optiq convert`) |
43
- | `upload` | push a model directory to the Hub | `mlx_lm.upload` |
44
- | `perplexity` | perplexity over a local dataset | `mlx_lm.perplexity` |
45
- | `memory` (`setup`) | the assistant's personal wiki | — |
46
- | `benchmark` (`bench`) | decode/prefill speed of our stack | `mlx_lm.benchmark` |
47
- | `evals` | recorded benchmark runs | — |
48
- | `help` | overview or per-verb help | — |
49
-
50
- ## Serving & agents
51
-
52
- ### `serve` — run the server
53
-
54
- Start the OpenAI/Anthropic-compatible server plus the browser web app.
55
-
56
- ```sh
57
- mlx-bun serve # default model
58
- mlx-bun serve e4b # pick a model by substring
59
- mlx-bun serve --model ./fused_model # explicit path (mlx_lm.server spelling)
60
- mlx-bun serve e4b --no-open # don't open the chat UI
61
- mlx-bun serve GLM-5.2 --context-length 4096
62
- ```
63
-
64
- `serve` takes the model as a positional, `--query <q>`, or `--model <path|query>`
65
- (`--model` wins). The flag set below is **shared with `mlx-bun pi`**. Defaults,
66
- semantics, and which combinations compose live in
67
- **[server-config.md](server-config.md)** — this page only names them.
68
-
69
- Library requests support delayed uniform or per-layer affine conversion with
70
- qualified shared drafting providers, including rotating caches. CLI affine
71
- quantization starts at zero.
72
-
73
- The shared executor supports qualified Qwen MTP and start-zero
74
- TurboQuant at one or several active rows; `--batch 1` still selects the
75
- legacy serial control. No new CLI flag is required for the shared interfaces.
76
- Full-attention and rotating targets, including Llama, MiniCPM and Gemma, use shared bf16, uniform KV4/KV8, per-layer affine KV or TurboQuant
77
- prompt lookup and standalone drafting, including generated RAM/SSD state.
78
- Gemma assistant drafting also shares these target layouts and caches its last true target
79
- hidden alongside target KV through the same RAM/SSD interfaces.
80
- DeepSpec and DSpark use the same executor and persist their projected context through those
81
- interfaces. DeepSpec accepts bf16 or affine-quantized weights; DSpark retains
82
- its Markov/RNN head and checkpoint confidence policy.
83
-
84
- Shared Qwen MTP retains completed decode state through the existing
85
- `--prompt-cache` and `--ssd-cache` settings.
86
-
87
- | Group | Flags |
88
- |---|---|
89
- | Network | `--host`, `--port`, `--no-open`, `--allow-private-media` |
90
- | Memory & caches | `--memory-budget`, `--kv-budget`, `--prompt-cache`, `--ssd-cache`, `--ssd-cache-max`, `--ssd-cache-verify`, `--ssd-demote-idle`, `--generation-checkpoint` |
91
- | Process model | `--isolate`, `--model-pool`, `--unix` (internal — the engine half of `--isolate`) |
92
- | Scheduling | `--batch` (`--decode-concurrency` accepted as the mlx_lm.server alias) |
93
- | KV cache | `--kv-quant`, `--paged-kv`, `--paged-kv-block-size` |
94
- | Adapters (compatible sets can batch) | `--adapter` (`--adapter-path` alias) |
95
- | Speculative decoding (Qwen methods and full-attention/rotating lookup/standalone and Gemma assistant/DeepSpec/DSpark drafting share execution) | `--draft-model`, `--draft-kind`, `--num-draft-tokens`, `--ngram-max`, `--ngram-min` |
96
- | GLM-5.2 | `--mtp`, `--context-length` |
97
- | Sampling defaults | `--temperature` (`--temp` alias), `--top-p`, `--top-k`, `--max-tokens`, `--thinking`, `--hlg-sampling`, `--hlg-width`, `--hlg-shoulder`, `--hlg-toe`, `--hlg-pivot-offset` |
98
- | Parity tier | `--l1`, `--l2` (`--l3` errors — removed) |
99
- | Kill switches | `--compiled-decode`, `--compiled-activations`, `--fused-sdpa`, `--force-wire`, `--expert-offload` |
100
-
101
- Serving treats memory estimates as advisory by default and attempts the request.
102
- `--memory-budget` opts into estimated admission limits; `--kv-budget` opts
103
- into aggregate KV limits. `--max-tokens` supplies an explicit output cap.
104
-
105
- Endpoints: `/v1/chat/completions`, `/v1/completions`, `/v1/messages`,
106
- `/v1/responses`, `/v1/embeddings`, `/v1/models`, `/v1/adapters`, `/health`,
107
- `/stats`, `/fit`, `/library`, `/downloads`; the web app at `/` (`/chat`,
108
- `/status`, `/quantize`, `/finetune`, `/dataset` deep-link its views). Schemas
109
- in [server-api.md](server-api.md).
110
-
111
- ### `pi` — built-in coding agent
112
-
113
- Run the pi coding agent's terminal UI in-process against a local model —
114
- pi is bundled, nothing to install. Reuses a healthy server on the chosen
115
- port; otherwise starts one that lives exactly as long as the session.
116
-
117
- ```sh
118
- mlx-bun pi # interactive session
119
- mlx-bun pi fix the failing test # pre-fill the first turn
120
- mlx-bun pi -p "explain this repo" # one-shot: print the reply and exit
121
- mlx-bun pi -p --json "summarize README" # one-shot with the full event stream
122
- mlx-bun pi --mode rpc # JSONL RPC over stdio
123
- mlx-bun pi -q qwen --port 8090 # model + server flags for the session server
124
- git diff | mlx-bun pi -p "review this" # piped stdin makes it one-shot too
125
- ```
126
-
127
- | Flag | Meaning |
128
- |---|---|
129
- | `-q`, `--query <q>` | model to serve when starting a session server |
130
- | `-p`, `--print [msg]` | one-shot print mode (also reads piped stdin) |
131
- | `--json` | with `-p`: emit the full event stream as JSON |
132
- | `--mode json\|rpc\|text` | `json` = print + JSON, `rpc` = JSONL RPC over stdio, `text` = print |
133
- | `--verbose` | verbose agent logging |
134
- | every `serve` flag | applies to the session server; ignored (with a note) when reusing a running one |
135
-
136
- Other pi flags are dropped with a note — the full pi surface (`--continue`,
137
- `--resume`, extensions, themes) lives in your own pi via `harness pi`.
138
- `mlx-bun help pi` is our help; `mlx-bun pi --help` prints it only when it is
139
- the sole argument.
140
-
141
- ### `harness pi` — connect your own pi
142
-
143
- For people who already run [pi](https://www.npmjs.com/package/@earendil-works/pi-coding-agent):
144
- writes one reversible extension, `~/.pi/agent/extensions/mlx-bun-provider.ts`,
145
- that registers `mlx-bun` as a pi provider. Models are discovered live from
146
- `/v1/models` at pi startup (the list baked at install time is the fallback
147
- when the server is down), exposed under the stable id `mlx-bun/local`. It
148
- never touches your existing pi config.
149
-
150
- ```sh
151
- mlx-bun harness pi # install; requires pi on PATH
152
- mlx-bun harness pi --base-url http://127.0.0.1:8090/v1
153
- mlx-bun harness pi --remove # delete the extension
154
- pi --provider mlx-bun # then run pi as usual
155
- pi --models "mlx-bun/*" # or scope cycling
156
- ```
157
-
158
- #### LoRA adapters from pi: the adapter extension
159
-
160
- `scripts/packaging/pi-extensions/mlx-bun-adapter.ts` ships with the repo and
161
- adds an `/adapter` command to pi. Install by copying (or symlinking) it into
162
- `~/.pi/agent/extensions/`, then `/reload` inside pi:
163
-
164
- ```sh
165
- cp scripts/packaging/pi-extensions/mlx-bun-adapter.ts ~/.pi/agent/extensions/
166
- MLX_BUN_URL=http://127.0.0.1:8080 pi --provider mlx-bun
167
- ```
168
-
169
- | In pi | Effect |
170
- |---|---|
171
- | `/adapter` or `/adapter list` | list adapters on disk (`/v1/adapters/available`), which are loaded, and the active one |
172
- | `/adapter <id>` | mount it if needed (`POST /v1/adapters`) and inject `adapter: <id>` into every request |
173
- | `/adapter off` | back to the base model (no field sent) |
174
-
175
- The extension reads the server URL from `MLX_BUN_URL` (its built-in fallback
176
- is port 8090, so set it to match your server). Default is no adapter; the
177
- mechanism is pi's `before_provider_request` hook, the same one the web chat's
178
- adapter selector uses. Serving-side detail: [server-api.md](server-api.md#adapters-lora-hot-swap)
179
- and [docs/design/web-chat-redesign.md](../design/web-chat-redesign.md).
180
-
181
- ### `generate` (alias `gen`) — one-shot generation
182
-
183
- Load the model, generate, print, exit. The prompt is rendered through the
184
- chat template unless `--raw`.
185
-
186
- ```sh
187
- mlx-bun generate e4b "a haiku about metal shaders"
188
- mlx-bun gen e4b --prompt "…" --max-tokens 512 --seed 42
189
- mlx-bun generate qwen --raw --prompt "def fib(n):" --temperature 0
190
- ```
191
-
192
- | Flag | Meaning |
193
- |---|---|
194
- | `[query]` / `--query <q>` | model (auto-picks when omitted) |
195
- | `--prompt "…"` | the prompt (or pass it as the positional after the model) |
196
- | `--raw` | skip the chat template |
197
- | `--max-tokens <n>` | completion cap |
198
- | `--temperature <n>` (`--temp` alias), `--top-p`, `--top-k`, `--seed` | sampling |
199
- | `--l1` / `--l2`, `--kv-quant`, `--fused-sdpa`, `--compiled-decode`, `--compiled-activations` | decode route, same meaning as for `serve` |
200
-
201
- ### `embed` — text embeddings
202
-
203
- Embeddings from a local Qwen3-Embedding model, no server. One JSON vector
204
- per input line.
205
-
206
- ```sh
207
- mlx-bun embed --text "hello world"
208
- mlx-bun embed Qwen3-Embedding "hello world"
209
- printf 'line one\nline two\n' | mlx-bun embed --json
210
- mlx-bun embed --instruct "Retrieve passages that answer the question" --text "what is a KV cache?"
211
- ```
212
-
213
- | Flag | Meaning |
214
- |---|---|
215
- | `[query]` / `--query <q>` | embedding model; omitted = the first downloaded embedding model (errors with a `get` suggestion when none) |
216
- | `--text "…"` | text to embed (omit to read one text per stdin line) |
217
- | `--instruct "…"` | Qwen3-Embedding query instruction; omit for plain document embeddings |
218
-
219
- ### `transcribe` — speech-to-text
220
-
221
- Whisper transcription of one audio file with a local `mlx-community/whisper-*`
222
- checkpoint, no server. WAV decodes natively; other containers CoreAudio can
223
- read (mp3/m4a/aac/flac/ogg/aiff, mp4/mov audio…) decode in-process through
224
- AudioToolbox. Model support
225
- and the oracle contract: [models.md](models.md#supported-models).
226
-
227
- ```sh
228
- mlx-bun transcribe meeting.m4a # first downloaded Whisper, language auto-detected
229
- mlx-bun transcribe talk.wav --language en --format srt > talk.srt
230
- mlx-bun transcribe note.wav --beam-size 5 --prompt "Sotto, SwiftUI, Metal" --verbose
231
- ```
232
-
233
- | Flag | Meaning |
234
- |---|---|
235
- | `<audio-file>` | required positional |
236
- | `[query]` / `--model <path\|query>` | Whisper model; omitted = the first downloaded `whisper` checkpoint (errors with a `get` suggestion when none) |
237
- | `--language <code\|name>` | `en`, `japanese`, …; `auto` or omitted detects from the first 30 s |
238
- | `--task translate` | translate to English |
239
- | `--beam-size <n>` | beam search (default greedy) |
240
- | `--temperature <t>` | one temperature; default is mlx-whisper's `(0, 0.2, …, 1.0)` fallback ladder gated by compression-ratio / log-prob thresholds |
241
- | `--no-fallback` | temperature 0 only |
242
- | `--prompt "…"` | initial prompt (vocabulary hints, up to 223 tokens are kept) |
243
- | `--no-timestamps` | text-only decoding |
244
- | `--no-condition` | do not feed the previous window's text as the next prompt |
245
- | `--vad`, `--vad-threshold <t>`, `--vad-model <path>` | Silero VAD gate: no detected speech → empty output, Whisper never runs. Weights: `ggml-org/whisper-vad` in the HF cache (885 KB) or an explicit ggml path |
246
- | `--word-timestamps` | word-level timing in `verbose_json` (`words` per segment) |
247
- | `--faithful` | oracle-parity graph instead of the fast path (fused attention, compiled decoder step) |
248
- | `--audio-ctx <n>` | Lab: encode only n of the 1500 encoder positions (whisper.cpp `-ac`); degrades below ~1024 |
249
- | `--format <f>` | `text` (default) · `json` · `verbose_json` · `srt` · `vtt` |
250
- | `--verbose` | per-segment time ranges and a realtime-factor summary on stderr |
251
-
252
- ### `dictate` — push-to-talk from the microphone
253
-
254
- Streams the mic (AVAudioEngine sidecar `mlx-bun-mic-capture`, built from
255
- `src/native/mic_capture.swift` on first use with swiftc, or shipped beside
256
- the binary) into a transcription session while you speak, so every
257
- finished 30 s window is transcribed during capture and the result lands
258
- about one window after you stop. Silence never runs Whisper (Silero VAD).
259
- macOS prompts for Microphone permission; `--hotkey` needs Input Monitoring
260
- and `--type` needs Accessibility for your terminal app.
261
-
262
- ```sh
263
- mlx-bun dictate # Enter starts/stops a take; prints the text
264
- mlx-bun dictate --hotkey --copy # hold Right Option, transcript → clipboard
265
- mlx-bun dictate --hotkey --type # …typed into the frontmost app
266
- mlx-bun dictate --server http://localhost:8090 --vocabulary "Sotto,SwiftUI,Metal"
267
- ```
268
-
269
- | Flag | Meaning |
270
- |---|---|
271
- | `[query]` / `--model <path\|query>` | Whisper model for in-process transcription (default: first downloaded `whisper` checkpoint) |
272
- | `--server <url>` | use a running server's `/v1/audio/sessions` instead |
273
- | `--hotkey [keycode]` | hold-to-talk on a macOS virtual keycode (default 61, Right Option) instead of Enter toggling |
274
- | `--language`, `--beam-size`, `--prompt`, `--vocabulary "a,b"`, `--no-vad` | decoding, as for `transcribe` |
275
- | `--idle-unload <s>` / `--resident` | release the weights after idle seconds (0 = after every take; default 30) or keep them loaded |
276
- | `--copy` / `--type` / `--type-delay <s>` | clipboard / System Events keystrokes into the frontmost app (delay defaults to 1 s in Enter mode so you can Cmd-Tab, 0 with `--hotkey`) |
277
- | `--json` | one OpenAI-style `{object:"list",data:[…]}` object instead of bare arrays |
278
-
279
- Server equivalent: `mlx-bun serve <embedding-model>` then
280
- [`POST /v1/embeddings`](server-api.md#post-v1embeddings-openai-embeddings-api).
281
-
282
- ## Models & disk
283
-
284
- Full guide: [models.md](models.md).
285
-
286
- ### `get` — download a model
287
-
288
- Resumable (Range requests against partial blobs), sha256-verified download
289
- into the standard Hugging Face cache over plain HTTPS (no Xet). Complete
290
- blobs and partial prefixes are credited before transfer, and the volume must
291
- fit the remainder plus a 1 GiB reserve. Uses `HF_TOKEN` / `hf auth login`
292
- credentials when present.
293
-
294
- ```sh
295
- mlx-bun get mlx-community/gemma-4-12B-it-OptiQ-4bit
296
- mlx-bun get 12B # no "/" = registry query; re-gets/refreshes the match
297
- mlx-bun get mlx-community/MiniCPM5-1B-OptiQ-4bit --revision main
298
- ```
299
-
300
- `--revision <rev>` selects a git revision. When upstream has pushed a new
301
- revision the previous snapshot stays on disk — `get` says so and `gc`
302
- reclaims it. GLM-5.2 specifics: [models.md](models.md#glm-52-on-a-32-gb-mac).
303
-
304
- ### `scan` — index your cache
305
-
306
- Re-index the HF cache into the registry (config + safetensors headers, never
307
- tensor bytes) so `ls`, `serve`, and `fit` resolve models by substring.
308
-
309
- ```sh
310
- mlx-bun scan
311
- ```
312
-
313
- ### `ls` — list models
314
-
315
- One row per repo (canonical revision, `refs/main`); superseded snapshots are
316
- hidden.
317
-
318
- ```sh
319
- mlx-bun ls # size, params, quant, license, capabilities
320
- mlx-bun ls gemma # filter by substring
321
- mlx-bun ls --vision --max-size 10GB # vision-capable, under 10 GB
322
- mlx-bun ls --all-revisions # one row per cached snapshot (canonical marked *)
323
- ```
324
-
325
- ### `gc` — reclaim disk
326
-
327
- Delete superseded snapshots and the blobs only they reference. Prints the
328
- plan by default.
329
-
330
- ```sh
331
- mlx-bun gc # dry run: what would be reclaimed
332
- mlx-bun gc --yes # delete
333
- mlx-bun gc --yes --force # also prune snapshots holding files the canonical revision lacks
334
- ```
335
-
336
- `--dry-run` never deletes even with `--yes`. The same planner backs
337
- [`GET /api/gc/plan` / `POST /api/gc/execute`](server-api.md#get-apigcplan--post-apigcexecute).
338
-
339
- ### `fit` — memory contract
340
-
341
- Deterministic memory assessment: does it fit, max safe context, predicted
342
- tok/s — from safetensors headers, the config's KV bytes/token, a calibrated
343
- prefill transient, and the wired-memory ceiling.
344
-
345
- ```sh
346
- mlx-bun fit gemma --ctx 32768 # this machine
347
- mlx-bun fit gemma --ctx 8192 --skus # across the Apple Silicon lineup
348
- mlx-bun fit qwen --kv-quant 4 # bill a 4-bit-quantized KV cache
349
- mlx-bun fit GLM-5.2 # streamed-artifact plan (resident weights, expert slabs, KV, reserves)
350
- ```
351
-
352
- | Flag | Meaning |
353
- |---|---|
354
- | `--ctx <tokens>` | context size to assess |
355
- | `--kv-quant 4\|8\|config\|off` | bill the KV cache at the quantized bytes/element (`config` needs a model that ships `kv_config.json`; `turbo` is not accepted here) |
356
- | `--skus` | also print the Apple silicon SKU matrix (not applicable to the streamed GLM-5.2 artifact) |
357
-
358
- ## Training & model creation
359
-
360
- Full reference: [training.md](training.md); guided walkthrough:
361
- [docs/reference/training.md](./training.md).
362
-
363
- ### `train` — LoRA fine-tune
364
-
365
- SFT / DPO / ORPO on `<dir>/train.jsonl` (+ optional `valid.jsonl`). Rows are
366
- `{prompt, chosen, rejected}` for dpo/orpo or `{messages|text}` for sft. Runs
367
- in the foreground and saves a mountable adapter.
368
-
369
- ```sh
370
- mlx-bun train e4b --data ./prefs # ORPO (default)
371
- mlx-bun train e4b --data ./prefs --method sft
372
- mlx-bun train e4b --data ./prefs --dry-run # inspect data + resolved plan, don't train
373
- mlx-bun train cpm5 --data ./prefs --iters 400 --save-every 50 --adapter ~/adapters/cpm5-orpo
374
- nohup mlx-bun train e4b --data ./prefs & # long runs: detach from your shell
375
- ```
376
-
377
- | Flag | Meaning |
378
- |---|---|
379
- | `<model>` / `--query <q>` | model to fine-tune (auto-picks when omitted) |
380
- | `--data <dir>` | dataset dir (required) |
381
- | `--method sft\|dpo\|orpo` | objective |
382
- | `--adapter <dir>` | output adapter dir (default under `~/.cache/mlx-bun/mlx-bun-finetunes/`) |
383
- | `--iters`, `--lr`, `--rank`, `--scale`, `--seq`, `--batch`, `--grad-accum`, `--grad-clip`, `--seed`, `--val-size` | loop hyperparameters (method-dependent defaults: `mlx-bun help train`) |
384
- | `--lambda <f>`, `--sft-scope full\|response` | ORPO odds-ratio weight and chosen-NLL scope |
385
- | `--seg <n>`, `--no-segment` | segmented backward (layers per segment / off) |
386
- | `--no-flash`, `--no-prefix` | disable the flash-CCE head / prefix-sharing |
387
- | `--save-every <n>`, `--resume <dir>` | checkpoint cadence / warm-start LoRA weights |
388
- | `--dry-run` | print the plan, don't train |
389
-
390
- ### `train-watch` — live training dashboard
391
-
392
- Tails `<adapter-dir>/metrics.jsonl` (written by `train` and the web
393
- fine-tune tile) and renders live loss / speed / memory.
394
-
395
- ```sh
396
- mlx-bun train-watch ~/.cache/mlx-bun/mlx-bun-finetunes/orpo-e4b
397
- mlx-bun train-watch --adapter ~/adapters/cpm5-orpo
398
- ```
399
-
400
- ### `fuse` — merge an adapter into the base
401
-
402
- Folds LoRA deltas into the base weights and writes a standalone snapshot
403
- (weights + config + tokenizer); a quantized base keeps its per-module
404
- quantization layout. Flag names follow `mlx_lm.fuse`.
405
-
406
- ```sh
407
- mlx-bun fuse e4b --adapter ./adapters --save-path ./fused_model
408
- mlx-bun fuse --model ./base-snapshot --adapter-path ./adapters
409
- mlx-bun serve ./fused_model
410
- ```
411
-
412
- | Flag | Meaning |
413
- |---|---|
414
- | `<model>` / `--model` | base model (query or snapshot path) |
415
- | `--adapter <dir>` (`--adapter-path` alias) | adapter directory (`adapters.safetensors` + `adapter_config.json`); default `adapters` |
416
- | `--save-path <dir>` | output directory; default `fused_model` |
417
-
418
- Refused with an error (mlx_lm.fuse flags not implemented): `--de-quantize`,
419
- `--dequantize`, `--export-gguf`, `--gguf-path`, `--upload-repo`.
420
-
421
- ### `convert` — quantize a model
422
-
423
- Quantize an HF model (local path, downloaded model, or repo id — an
424
- un-downloaded repo is fetched first) into a local MLX snapshot: uniform
425
- affine 4/8-bit, or mixed precision via `--target-bpw` (sensitivity sweep +
426
- per-layer bit knapsack). Same engine as the web `/api/quantize`.
427
-
428
- ```sh
429
- mlx-bun convert Qwen/Qwen3-4B -q # uniform 4-bit → ./mlx_model
430
- mlx-bun convert --hf-path Qwen/Qwen3-4B -q --q-bits 8 --mlx-path ./qwen3-8bit
431
- mlx-bun convert Qwen/Qwen3-4B --target-bpw 4.5 # mixed precision (implies -q)
432
- mlx-bun convert ./qwen3.5-bf16 -q --rotate-weights # fold the TurboQuant rotation, then quantize
433
- mlx-bun convert Qwen/Qwen3-4B -q --upload-repo you/qwen3-4b-4bit
434
- ```
435
-
436
- | Flag | Meaning |
437
- |---|---|
438
- | `--hf-path <src>` (`--model` or the bare positional) | source model |
439
- | `--mlx-path <dir>` | output directory; must not already exist (mlx_lm.convert behavior) |
440
- | `-q`, `--quantize`, `--q-bits 4\|8`, `--q-group-size 32\|64` | uniform affine quantization |
441
- | `--target-bpw <f>`, `--candidate-bits <list>`, `--calibration-mix optiq\|<jsonl>`, `--n-calibration <n>` | mixed precision (writes per-module bits into `config.json`) |
442
- | `--rotate-weights`, `--rotation-seed <n>` | fold the offline TurboQuant rotation first (auto-detects Llama / Qwen3.5 trunk / Qwen MTP; an MTP companion must use its trunk's seed); recipe recorded in `optiq_metadata.json` |
443
- | `--upload-repo <id>` | push the result afterwards (token checked before any work starts) |
444
-
445
- Refused with an error: `--dtype`, `-d`/`--dequantize`, `--quant-predicate`,
446
- `--q-mode` other than `affine`, and plain non-quantizing conversion (pass `-q`
447
- or `--target-bpw`).
448
-
449
- ### `upload` — push to the Hugging Face Hub
450
-
451
- Native push-to-hub, no Python: creates the repo if needed, uploads via the
452
- git-LFS batch protocol, commits. Flag names match `mlx_lm.upload`.
453
-
454
- ```sh
455
- mlx-bun upload --path ./fused_model --upload-repo you/my-model
456
- mlx-bun upload --path ./mlx_model --upload-repo you/my-model --private
457
- ```
458
-
459
- Needs a WRITE token from `~/.mlx-bun/hf.json` (web UI Settings), `$HF_TOKEN`,
460
- or `~/.cache/huggingface/token` (`hf auth login`); errors before uploading
461
- anything when none is found. `--private` is an mlx-bun extension.
462
-
463
- ### `perplexity` — evaluate on your data
464
-
465
- `mlx_lm.perplexity` methodology exactly (seeded sample order, concatenate,
466
- non-overlapping rows, f32 CE at every position, delta-method standard
467
- error) over a **local** `.jsonl` (`{"text": …}` rows) or `.txt` file — never
468
- an HF dataset download.
469
-
470
- ```sh
471
- mlx-bun perplexity e4b --data-path ./corpus.jsonl
472
- mlx-bun perplexity ./fused_model --data-path ./corpus.txt --sequence-length 1024 --num-samples -1 --batch-size 4 --seed 7
473
- ```
474
-
475
- Flags: `<model>` (`--model` / `--query` accepted), `--data-path <file>`
476
- (required), `--sequence-length <n>`, `--num-samples <n>` (`-1` = all),
477
- `--batch-size <n>`, `--seed <n>`.
478
-
479
- ## Memory
480
-
481
- ### `memory` (alias `setup`) — the personal wiki
482
-
483
- A local, git-tracked Markdown wiki at `~/.mlx-bun/wiki` that loads into
484
- every `mlx-bun pi` / `mlx-bun serve` session. Full guide:
485
- [memory.md](memory.md). `mlx-bun memory` with no subcommand runs `status`.
486
-
487
- ```sh
488
- mlx-bun memory init # create the wiki (idempotent); offers import + nightly job
489
- mlx-bun memory status # path, article count, git + schedule state
490
- mlx-bun memory open # open the vault in Obsidian (falls back to Finder)
491
- mlx-bun memory open Archie_Project # open one article
492
- mlx-bun memory list # article titles + read-only Reference docs
493
- mlx-bun memory search kv cache # search from the terminal
494
- mlx-bun memory read Archie_Project # print an article (stem)
495
- mlx-bun memory toc Archie_Project # headings + anchors
496
- mlx-bun memory section Archie_Project decisions # one section by anchor
497
- mlx-bun memory links Archie_Project # outbound + inbound wikilinks
498
- mlx-bun memory synthesize # conversations → articles, the full local DAG
499
- mlx-bun memory synthesize --dry-run # plan only, never writes the vault
500
- mlx-bun memory segment --limit 20 # one stage worker (also: extract, route, synthesize-stage)
501
- mlx-bun memory extract --convs a1b2,c3d4 # restrict a stage to specific conversations
502
- mlx-bun memory link --limit 50 # deterministic cross-linking pass (no model)
503
- mlx-bun memory schedule --at 03:00 # install the nightly launchd job
504
- mlx-bun memory unschedule # remove it
505
- ```
506
-
507
- | Subcommand | Aliases | Meaning |
508
- |---|---|---|
509
- | `init` | `setup` | create the wiki; offers to import an existing vault and install the nightly job (TTY prompts; non-interactive shells take the defaults) |
510
- | `status` | | path, counts, git + schedule state |
511
- | `open [article]` | `browse` | open the vault or one article |
512
- | `list` | | article titles + `Reference/` docs |
513
- | `search <query>` | | ranked article hits with sample lines |
514
- | `read <article>` | | print an article |
515
- | `toc <article>` | | headings + anchors |
516
- | `section <article> <anchor>` | | print one section |
517
- | `links <article>` | | resolved outbound + inbound wikilinks |
518
- | `synthesize` | `pipeline`, `all` | run the full synthesis DAG; `--dry-run` plans without writing. `--since` and `--model` are parsed but the pipeline does not consume them yet (`src/memory/pipeline.ts` marks `model` reserved) |
519
- | `segment` · `extract` · `route` · `synthesize-stage` | `stage-synthesize` | run one decomposed, resumable stage worker (`--limit <n>` except `route`; `--convs a,b`) |
520
- | `link` | | inline-link first mentions + rebuild `## See also` (`--limit <n>`; no model) |
521
- | `schedule` | | install the nightly launchd job (`--at HH:MM`) |
522
- | `unschedule` | | remove it |
523
-
524
- An unknown subcommand prints the help and exits non-zero, so launchd jobs
525
- and scripts can detect typos.
526
-
527
- ## Measurement
528
-
529
- ### `benchmark` (alias `bench`) — measure our stack
530
-
531
- Runs mlx-bun by itself (greedy decode, in-process) and records the median
532
- to the eval DB.
533
-
534
- ```sh
535
- mlx-bun bench e4b --tokens 256 --runs 3
536
- mlx-bun bench --model ./fused_model --prompt-tokens 4096 --kv-quant turbo:k8v3
537
- ```
538
-
539
- | Flag | Meaning |
540
- |---|---|
541
- | `[query]` / `--query` / `--model <path\|query>` | model (auto-picks when omitted) |
542
- | `--tokens <n>` | tokens decoded per run |
543
- | `--runs <n>` | runs (median reported) |
544
- | `--prompt-tokens <n>` | pad the prompt to about n tokens (long-context decode) |
545
- | `--kv-quant config\|off\|4\|8\|turbo[:k<bits>v<bits>]` | KV scheme for the run |
546
- | `--compiled-decode`, `--compiled-activations`, `--fused-sdpa` | kill switches; A/B by running twice |
547
-
548
- For **quotable, cross-stack** numbers use the preflight-gated harness from
549
- the repo — it spawns the real CLI at its real defaults next to the mlx-lm
550
- and optiq reference servers and writes a dated report:
551
-
552
- ```sh
553
- bun scripts/bench-serve.ts all
554
- bun scripts/bench-serve.ts all --models cpm5,e4b --arms mlx-bun,mlx-lm --out report.md
555
- bun scripts/bench-serve.ts all --models qwen27b --arms mlx-bun-serial,mlx-bun --logprobs --top-logprobs 3
556
- # Same KV settings on both executors
557
- bun scripts/bench-serve.ts all --models qwen27b --arms mlx-bun-serial,mlx-bun --kv-quant 4
558
- # Same adapter settings on both execution arms:
559
- bun scripts/bench-serve.ts all --models e4b --arms mlx-bun-serial,mlx-bun --adapter fixtures/adapters/upper
560
- ```
561
-
562
- Curated results: [benchmarks.md](benchmarks.md).
563
-
564
- ### `evals` — recorded runs
565
-
566
- ```sh
567
- mlx-bun evals # table: when, stack, model, bench, KV, prefill, decode, TTFT, peak, commit
568
- mlx-bun evals --limit 50
569
- mlx-bun evals --raw # JSON lines for scripts/jq
570
- mlx-bun evals --clear # archive the DB to a timestamped backup and start fresh
571
- ```
572
-
573
- ## mlx-lm compatibility
574
-
575
- mlx-bun borrows mlx-lm's verb and flag vocabulary so scripts drop in with a
576
- rename of the executable: `mlx_lm.<verb> …` becomes `mlx-bun <verb> …`.
577
- There is no `mlx-bun.<verb>` dotted alias (the package installs one binary,
578
- `mlx-bun`). Surface parity is not architecture parity: a verb run against an
579
- unsupported architecture errors clearly rather than guessing.
580
-
581
- ### What maps to what
582
-
583
- | mlx-lm | mlx-bun | Accepted mlx-lm spellings | Not accepted |
584
- |---|---|---|---|
585
- | `mlx_lm.server` | `serve` | `--model`, `--host`, `--port`, `--adapter-path`, `--temp`, `--top-p`, `--top-k`, `--max-tokens`, `--draft-model`, `--num-draft-tokens`, `--decode-concurrency` (semantics differ — [server-config.md](server-config.md)) | `--prompt-cache-size`/`--prompt-cache-bytes` (use `--prompt-cache`), `--min-p`, `--chat-template`, `--chat-template-args`, `--use-default-chat-template`, `--trust-remote-code`, `--log-level`, `--allowed-origins`, `--pipeline`, `--prefill-step-size`, `--prompt-concurrency` — silently ignored |
586
- | `mlx_lm.generate` | `generate` | `--prompt`, `--max-tokens`, `--temp`, `--top-p`, `--top-k`, `--seed` | `--kv-bits`/`--kv-group-size`/`--quantized-kv-start` (use `--kv-quant`), `--min-p`, `--xtc-*`, `--prompt-cache-file`, `--max-kv-size`, `--adapter-path`, `--draft-model`, `--system-prompt`, `--ignore-chat-template` (use `--raw`), `--verbose` — silently ignored |
587
- | `mlx_lm.chat` | `pi` / the web chat | — | no terminal REPL verb; `pi` is the agent, `serve` opens the chat UI |
588
- | `mlx_lm.convert` | `convert` | `--hf-path`, `--mlx-path`, `-q`/`--quantize`, `--q-bits`, `--q-group-size`, `--q-mode affine`, `--upload-repo` | `--dtype`, `-d`/`--dequantize`, `--quant-predicate`, non-affine `--q-mode`, plain non-quantizing conversion — **refused** |
589
- | `mlx_lm.fuse` | `fuse` | `--model`, `--adapter-path`, `--save-path` | `--de-quantize`, `--export-gguf`, `--gguf-path`, `--upload-repo` — **refused** |
590
- | `mlx_lm.lora --train` | `train` | `--data`, `--iters`, `--seed` (same names); otherwise own names (`--method`, `--adapter`, `--lr`, `--rank`, `--seq`, `--batch`, `--grad-accum`, `--save-every`, `--resume`) | `--train`/`--test`, `--config` (YAML), `--fine-tune-type`, `--adapter-path`, `--learning-rate`, `--max-seq-length`, `--batch-size`, `--num-layers`, `--mask-prompt`, `--optimizer` — silently ignored |
591
- | `mlx_lm.upload` | `upload` | `--path`, `--upload-repo` (+ `--private`) | — |
592
- | `mlx_lm.perplexity` | `perplexity` | `--model`, `--sequence-length`, `--num-samples`, `--batch-size`, `--seed`; `--data-path` is a local file | HF dataset ids |
593
- | `mlx_lm.benchmark` | `benchmark` | `--model` | `-p`/`--prompt-tokens` short form, `-g`/`--generation-tokens`, `-b`/`--batch-size`, `-n`/`--num-trials` (ours: `--prompt-tokens`, `--tokens`, `--runs`; one stream) |
594
- | `mlx_lm.manage` | `get` / `scan` / `ls` / `gc` | — | `--scan`/`--delete`/`--pattern` flag forms; `gc` deletes superseded snapshots, not whole repos |
595
- | `mlx_lm.dynamic_quant` | `convert --target-bpw` | — | the `dynamic_quant` verb name |
596
-
597
- mlx-optiq's CLI (`optiq convert` / `serve` / `lora` / `benchmark` / `eval` /
598
- `latency` / `kv-cache` / `lab`) maps onto the same verbs where the concept
599
- exists: `optiq convert` → `convert --target-bpw`; `optiq serve --kv-config`
600
- → `serve --kv-quant config` (the `--l2` preset); `optiq latency` → `fit`;
601
- `optiq lab` → the web app served by `serve`. `optiq eval` and `optiq
602
- kv-cache` have no verb (below).
603
-
604
- ### mlx-lm entry points: covered / not covered
605
-
606
- Against the console scripts the pinned oracle ships
607
- (`mlx_lm-*.dist-info/entry_points.txt` in the oracle venv). The scoping
608
- behind each "not covered" row is in
609
- [docs/reference/cli.md](./cli.md).
610
-
611
- | Entry point | Status | Where |
612
- |---|---|---|
613
- | `mlx_lm.server` | covered | `serve` (incl. `--draft-model` speculative decoding) |
614
- | `mlx_lm.generate` | covered | `generate` |
615
- | `mlx_lm.chat` | covered differently | `pi` (agent TUI) + web chat; no plain REPL |
616
- | `mlx_lm.convert` | covered | `convert` (quantizing paths only) |
617
- | `mlx_lm.dynamic_quant` | covered | `convert --target-bpw` (sensitivity scan + per-layer bits) |
618
- | `mlx_lm.lora` | covered (train) | `train`; the `--test` evaluation mode is not covered |
619
- | `mlx_lm.fuse` | covered | `fuse` (no dequantize / GGUF / upload) |
620
- | `mlx_lm.upload` | covered | `upload` |
621
- | `mlx_lm.perplexity` | covered | `perplexity` (local files only) |
622
- | `mlx_lm.benchmark` | covered | `benchmark` (own flag names; `evals` views the DB) |
623
- | `mlx_lm.manage` | covered | `get` / `scan` / `ls` / `gc` |
624
- | `mlx_lm.cache_prompt` | not covered | no on-disk prompt-cache files; the server's prompt cache (+ `--ssd-cache`) is the equivalent for served traffic |
625
- | `mlx_lm.evaluate` | not covered | no lm-evaluation-harness backend; `benchmark`/`evals`/`perplexity` are the native measurement, and the `/v1` API accepts external harnesses |
626
- | `mlx_lm.awq` | not covered | activation-aware weight quantization |
627
- | `mlx_lm.dwq` | not covered | distilled weight quantization |
628
- | `mlx_lm.gptq` | not covered | Hessian-conditioned rounding |
629
- | `mlx_lm.share` | not covered | distributed cache share |
630
- | `mlx_lm` (umbrella `mlx_lm <verb>`) | covered | `mlx-bun <verb>` is the same shape |
631
-
632
- Native verbs with no mlx-lm counterpart — `pi`, `harness pi`, `embed`,
633
- `fit`, `train-watch`, `memory`, `evals` — are the surface that makes mlx-bun
634
- more than a drop-in.
635
-
636
-
637
- `--kv-quant turbo` composes with grouped lookup, standalone, Gemma assistant,
638
- DeepSpec and DSpark drafting on supported targets. Sliding layers stay bf16.
639
- See [batching design](../design/batching.md) for composition evidence and limits.
640
-
641
- Paged KV retains the configured `--batch` size. Gemma4 bf16 requests use the shared executor and bypass the prompt cache; quantized KV and draft combinations remain unavailable. See [server configuration](server-config.md).
642
-
643
- `--generation-checkpoint N` requires `--ssd-cache` and queues owned snapshots
644
- for eligible ordinary requests. Shared continuation supports eligible Qwen, Llama, MiniCPM and Gemma4 requests with or without adapters, excluding media, grammar, fill, paging, logprobs or speculation.
645
- Repeat the identical request to replay and resume; flush before shutdown for
646
- eventual queued snapshots to become durable.