Skip to content
mlx-bun 1.0.0 is beta and actively developed. APIs may change; breaking changes will be called out in release notes.

CLI reference

Generated at build time from the CLI command table and help. These are the current commands on main. Released versions can differ; use the installed command’s --help.

Usage: mlx-bun [options]

An option-first invocation starts the server; use the serve options below.

OptionDescription
-h, --helpShow help
-v, --versionShow version

Serve a local model with continuous batching and the web app

Usage: mlx-bun serve [query] [options]

OptionDescription
--model <value>Model directory or cached registry query (overrides positional query)
--query <value>Cached model query when no positional/model override is supplied
--host <value>Bind address [default: 127.0.0.1]
--port <value>Listen port; 0 chooses a free port [default: 8080]
--batch <value>Continuous batching capacity, including at 1 [default: 8]
--decode-concurrency <value>Alias for —batch (main’s spelling); the same continuous capacity
--max-tokens <value>Default completion cap when a request omits one
--thinking <value>Default thinking mode: on | off; requests may override
--temperature <value>Default sampling temperature [0..5]
--temp <value>Alias for —temperature
--top-p <value>Default nucleus sampling [0..1]
--top-k <value>Default top-k sampling
--kv-quant <value>KV quantization: off | config | 4 | 8 | turbo[:kv] (turbo is k8v3); config without the model’s kv_config.json stays bf16, and a scheme the model’s cache cannot take is refused at startup [default: off]
--l1Numerical preset: KV off, unfused SDPA (the default); explicit KV/kernel flags override
--l2Numerical preset: model-config KV, fused SDPA; wins over —l1, explicit KV/kernel flags override
--fused-sdpa <value>Startup SDPA override: on | off [default: on for KV config, off otherwise]
--kv-budget <value>Aggregate batch KV budget, decimal GB; unset means no budget
--prompt-cache <value>RAM prompt cache cap, GiB; 0 disables [default: 8 GB]
--ssd-cache <value>Saved prompt/KV state directory, or off to disable it [default: MLX_BUN_HOME/kv]; one directory per model identity, so a model returns to its saved state
--ssd-cache-max <value>Byte budget for the whole saved-state directory across every model, GiB; 0 means unlimited [default: 20]
--ssd-cache-verifyVerify tensor hashes on SSD restores
--ssd-demote-idle <value>Idle seconds before SSD demotion; 0 disables [default: 300]
--generation-checkpoint <value>Checkpoint every N generated tokens into the saved state
--memory-budget <value>Admission-control memory budget, decimal GB; requests that cannot fit are rejected instead of crashing the GPU
--model-budget <value>What all resident models may use together, decimal GB: a model that fits loads beside the others, otherwise the least recently used one is drained, its saved state flushed, and released first [default: 70% of the GPU’s recommended working set]
--context-length <value>Context tokens a memory-planning runtime reserves [default: its preset]; models without a plan ignore it
--force-wireWire weights into memory at load
--expert-offloadMoE only: serve experts from a page-aligned file mmap built on first use
--allow-private-mediaLet image_url/audio_url parts fetch from private, loopback, and link-local hosts
--hlg-sampling <value>Piecewise tone-curve (HLG) sampling: on | off [default: off]
--hlg-width <value>HLG mid-region half-width, nats [default: 4]
--hlg-shoulder <value>HLG highlight rolloff scale, nats [default: 4]
--hlg-toe <value>HLG shadow rolloff scale, nats [default: 6]
--hlg-pivot-offset <value>HLG pivot: nats below the top token [default: 6]
--draft-model <value>Speculative decoding draft: a path or cached query resolved like the main model; kind auto-detected
--draft-kind <value>Draft kind override: two-model | assistant | dspark | deepspec | mtp | ngram (ngram is model-free; mtp alone mounts /mtp/)
--num-draft-tokens <value>Drafts per verify round: an integer >= 1, or adaptive (each round’s count, from none up to the drafter’s width or the width the graph measured for its kind, from recent acceptance and the graph’s measured verify costs; needs a graph measured on this machine) [default: 3; ngram: 10]
--ngram-max <value>Prompt-lookup longest k-gram, integer >= 1 (ngram only) [default: 3]
--ngram-min <value>Prompt-lookup shortest k-gram, integer >= 1 (ngram only) [default: 1]
--mtp <value>Checkpoint-native multi-token-prediction draft head: on | off [default: on]; models without one ignore it
--paged-kvPaged KV cache, composed when the model loads (env mirror MLX_BUN_PAGED_KV=1): every request keeps its full-attention keys and values in fixed blocks, stored as —kv-quant names for each layer
--paged-kv-block-size <value>Tokens per KV block with —paged-kv, integer >= 1 [default: 256]
--paged-kv-directWith —paged-kv, read at most eight queries (decode, short prefill and verification windows) with the direct Metal kernel over the blocks (Lab numerics) instead of gathered blocks through the fused SDPA; TurboQuant pages and affine widths that straddle a 32-bit word read gathered
--adapter <value>Mount a LoRA adapter directory at startup as the default for requests without an adapter field
--adapter-path <value>Alias for —adapter (mlx_lm spelling)
--whisper-model <value>Whisper checkpoint (path or cached query) for /v1/audio/* beside the chat model [default: the first downloaded whisper model, resolved on the first request]; serving a Whisper checkpoint ALONE starts a transcription-only server
--whisper-idle-unload <value>Seconds the Whisper weights stay loaded after a take; 0 releases them right after every take [default: 0]
--whisper-residentNever release the Whisper weights
--preloadTranscription-only server: load the Whisper weights before listening instead of on the first request
--no-openDo not open the web app in an interactive terminal
--in-processLoad the models in this process instead of one worker process per resident model. Isolated serving is the default: this process keeps the app, web chat and jobs and loads no model, each worker is crash-isolated and respawns after a crash, and the workers are held by memory fit (—model-budget)
--isolateDeprecated, accepted and ignored: isolated serving is the default (see —in-process)
-h, --helpShow help

Use mlx-bun serve --help for terminal help.

Generate text once from a local model

Usage: mlx-bun generate [query] [prompt] [options]

OptionDescription
--query <value>Cached model query when no positional query is supplied
--prompt <value>Prompt text (or second positional argument); - reads stdin
--system-prompt <value>System message placed before the prompt in the chat template (ignored with —raw)
--rawSkip the chat template and tokenize the prompt verbatim
--max-tokens <value>Completion cap [default: 256]
--temperature <value>Sampling temperature [default: 0]
--temp <value>Alias for —temperature
--top-p <value>Nucleus sampling
--top-k <value>Top-k sampling
--min-p <value>Min-p sampling: keep tokens with probability >= min-p times the top token’s [0..1]
--min-tokens-to-keep <value>Tokens min-p never filters out, integer >= 1 [default: 1]
--xtc-probability <value>Probability per step of XTC (exclude top choices) sampling [0..1]
--xtc-threshold <value>Probability a token must exceed to be an XTC removal candidate [0..0.5]
--adapter <value>Mount a LoRA adapter directory for this generation
--adapter-path <value>Alias for —adapter (mlx_lm spelling)
--seed <value>Sampler seed
--kv-quant <value>KV quantization: off | config | 4 | 8 | turbo[:kv] (turbo is k8v3); config without the model’s kv_config.json stays bf16, and a scheme the model’s cache cannot take is refused at startup [default: off]
--quantized-kv-start <value>Token count at which KV quantization starts with —kv-quant 4 | 8 | turbo | config [default: 0]
--l1Numerical preset: KV off, unfused SDPA (the default); explicit KV/kernel flags override
--l2Numerical preset: model-config KV, fused SDPA; wins over —l1, explicit KV/kernel flags override
--fused-sdpa <value>Startup SDPA override: on | off [default: on for KV config, off otherwise]
-h, --helpShow help

Use mlx-bun generate --help for terminal help.

Embed local text and print vectors

Usage: mlx-bun embed [query] [text] [options]

OptionDescription
--query <value>Cached model query; defaults to the first downloaded embedding model
--text <value>Text to embed; otherwise second positional or nonempty stdin lines
--instruct <value>Query instruction; omit for document embeddings
--jsonPrint one OpenAI-style embedding list instead of one vector per line
-h, --helpShow help

Use mlx-bun embed --help for terminal help.

Perplexity of a model over a local text/JSONL dataset

Usage: mlx-bun perplexity [query] [options]

OptionDescription
--model <value>Model directory or cached registry query (mlx_lm spelling of the positional)
--query <value>Cached model query when no positional is supplied
--data-path <value>.jsonl ({“text”: …} rows) or plain .txt (required)
--sequence-length <value>Tokens per row [default: 512]
--num-samples <value>Rows to score; -1 = all available [default: 256]
--batch-size <value>Rows per forward [default: 8]
--seed <value>Sample-shuffle seed [default: 123]
-h, --helpShow help

Use mlx-bun perplexity --help for terminal help.

Compile the Neural Engine programs this Mac’s models use that the system cache lacks (the install step)

Usage: mlx-bun compile-ane [options]

OptionDescription
--checkList each program and whether the compile cache holds it; compile nothing (exit 1 when one is missing)
--quietPrint only the programs it compiles (nothing when every program is cached)
-h, --helpShow help

Use mlx-bun compile-ane --help for terminal help.

Speech-to-text from an audio file with a local Whisper model (no server)

Usage: mlx-bun transcribe <audio-file> [query] [options]

OptionDescription
--model <value>Whisper model directory or cached query (overrides the positional query) [default: the first downloaded whisper checkpoint]
--query <value>Cached Whisper query when no positional/model override is supplied
--language <value>ISO code or name (en, japanese); auto or omitted detects from the first 30 s
--task <value>transcribe | translate (to English) [default: transcribe]
--beam-size <value>Beam search width [default: greedy]
--temperature <value>One sampling temperature; omitted runs the (0, 0.2, …, 1.0) fallback ladder like mlx-whisper
--no-fallbackTemperature 0 only, no retry ladder
--prompt <value>Initial prompt (vocabulary hints / style)
--no-timestampsDecode text only (<|notimestamps|>)
--no-conditionDo not condition each window on the previous text
--vadSilero VAD gate: no detected speech prints an empty result and Whisper never runs (weights: ggml-org/whisper-vad in the HF cache)
--vad-threshold <value>Speech probability threshold for —vad [default: 0.5]
--vad-model <value>Explicit Silero ggml path for —vad
--vad-trimAccepted with —vad; the clip is still transcribed whole, as in main
--word-timestampsWord-level timestamps (verbose_json words)
--faithfulRun the oracle-parity graph instead of the fast path
--audio-ctx <value>Lab: encode only n of the 1500 encoder positions (whisper.cpp -ac); degrades below ~1024
--format <value>text | json | verbose_json | srt | vtt [default: text]
--verbosePrint each segment with its time range as it decodes, then a realtime-factor summary (stderr)
-h, --helpShow help

Use mlx-bun transcribe --help for terminal help.

Push-to-talk: stream your microphone into Whisper, print/copy/type the text

Usage: mlx-bun dictate [query] [options]

OptionDescription
--model <value>Whisper model directory or cached query for in-process transcription (overrides the positional query) [default: the first downloaded whisper checkpoint]
--query <value>Cached Whisper query when no positional/model override is supplied
--server <value>Use a running mlx-bun server’s /v1/audio/sessions instead of loading the model here
--hotkey <value>Hold a key to talk instead of Enter toggling: macOS virtual keycode, value optional [default: 61 = Right Option]; needs Input Monitoring for your terminal
--language <value>Language code; auto detects [default: en]
--beam-size <value>Beam search width [default: greedy]
--prompt <value>Initial prompt
--vocabulary <value>Comma-separated hint terms, fitted into the prompt budget
--no-vadSkip the Silero gate (by default silence never runs Whisper)
--idle-unload <value>Release the weights after this many idle seconds; 0 = right after each take [default: 30]
--residentKeep the weights loaded
--copyCopy the transcript to the clipboard (pbcopy)
--typeType it into the frontmost app via System Events keystrokes (needs Accessibility for your terminal)
--type-delay <value>Seconds to wait before typing so you can Cmd-Tab [default: 1 in Enter mode, 0 with —hotkey]
-h, --helpShow help

Use mlx-bun dictate --help for terminal help.

Quantize an HF model into a local MLX snapshot (mlx_lm.convert counterpart)

Usage: mlx-bun convert [repo-or-path] [options]

OptionDescription
--hf-path <value>Source model: local path, downloaded model, or HF repo id (fetched first); —model and the positional are aliases
--model <value>Alias for —hf-path
--mlx-path <value>Output directory; must not already exist [default: ~/.mlx-bun/models/-bit]
-q, --quantizeQuantize the model (uniform affine); without -q or —target-bpw the model is rewritten with —dtype and/or -d only
--q-bits <value>Bits per weight: 4 or 8 [default: 4]
--q-group-size <value>Quantization group size: 32 or 64 [default: 64]
--upload-repo <value>Push the converted model to this Hugging Face repo afterwards (write token checked first)
--target-bpw <value>Mixed precision target bits-per-weight, e.g. 4.5: OptiQ sensitivity sweep + per-layer knapsack; implies -q
--candidate-bits <value>Comma list the knapsack may pick from [default: 4,8]
--calibration-mix <value>“optiq” or a JSONL path [default: optiq]
--n-calibration <value>Calibration samples [default: 2]
--rotate-weightsFold the model’s offline TurboQuant rotation before quantization (auto-detects Llama/Qwen3.5/Qwen MTP)
--rotation-seed <value>Deterministic rotation seed [default: 42]
--q-mode <value>Quantization mode: affine, or trellis for packed Trellis (TCQ) MLP tensors of an HF-layout Qwen3.5-family model (rotation fold implied; implies -q) [default: affine]
--trellis-bits <value>—q-mode trellis: bits per coded weight, 1-8 [default: 3]
--trellis-k-map <value>—q-mode trellis: allocation JSON with per-tensor bits (budgets[—trellis-k-budget].kmap, optional affine_map)
--trellis-k-budget <value>—q-mode trellis: budget key inside —trellis-k-map [default: 3.00]
--trellis-ldlq <value>—q-mode trellis: directory of per-layer Hessian factors (layer-NNN-mlp|down.safetensors) enabling BlockLDLQ error feedback
--trellis-reuse <value>—q-mode trellis: comma list of packed artifacts to copy unchanged-geometry tensors from instead of re-encoding
--trellis-down-axis <value>—q-mode trellis: dim of down_proj the trellis runs along, out (rotated dim) or in [default: out]
--trellis-interleave—q-mode trellis: reorder eligible 3-bit axis-0 codes into the two-block scatter layout
--trellis-layers <value>—q-mode trellis: trellis-code only the first N decoder layers (the rest ride the 3-bit affine base tier)
--dtype <value>Dtype of the non-quantized tensors and of the quantization scales/biases: float16 | bfloat16 | float32 [default: bf16 scales/biases, other tensors unchanged]
-d, --dequantizeDequantize a quantized model to dense weights (not with -q)
--quant-predicate <value>Not supported (mlx-lm’s mixed_* recipes need 2/3/6-bit); use —target-bpw for mixed precision
-h, --helpShow help

Use mlx-bun convert --help for terminal help.

Fine-tune a LoRA adapter on your data (sft | dpo | orpo)

Usage: mlx-bun train [model] [options]

OptionDescription
--query <value>Model to fine-tune when no positional query is supplied (auto-picks the default model if omitted)
--data <value>Dataset dir with train.jsonl (+ optional valid.jsonl); rows are {prompt, chosen, rejected} for dpo/orpo, {messages|text} for sft (required)
--method <value>sft | dpo | orpo [default: orpo]
--adapter <value>Output adapter dir [default: ~/.mlx-bun/adapters/-]
--iters <value>Training iterations [default: 100]
--lr <value>Learning rate [default: orpo 1e-5 · dpo 5e-5 · sft 2e-4]
--rank <value>LoRA rank [default: orpo 16 · else 8]
--scale <value>LoRA scale [default: orpo 2.0 · else 1.0]
--seq <value>Max sequence length [default: the model’s own; 4096 when it declares none]
--batch <value>Batch size [default: 1]
--grad-accum <value>Gradient accumulation steps (effective batch = batch × grad-accum at batch-size-1 memory) [default: 1]
--grad-clip <value>Gradient-norm clip (0 = off) [default: 1.0]
--seed <value>Data-shuffle / init seed [default: 0]
--val-size <value>Max validation examples per eval [default: 256]
--lambda <value>ORPO odds-ratio weight [default: 0.1]
--sft-scope <value>ORPO chosen-NLL scope: full (paper/TRL-faithful, prompt+response) | response (pre-2026-07 runs, bit-exact) [default: full]
--seg <value>Layers per segment (segmented backward; orpo default 2)
--save-every <value>Crash-safe mountable checkpoint every n steps
--resume <value>Warm-start LoRA weights from a checkpoint/adapter dir
--no-flashDisable the flash-CCE Metal head (use the MLX fused head)
--no-prefixDisable prefix-sharing (two-forward branches)
--no-segmentDisable the segmented backward (hold all activations)
--num-layers <value>Layers to adapt, counted from the last; -1 = all [default: -1]
--steps-per-report <value>Steps between loss reports [default: 1]
--steps-per-eval <value>Steps between validations [default: every —save-every steps, else never]
--dropout <value>LoRA dropout [default: 0]
--weight-decay <value>AdamW weight decay [default: 0.01]
--grad-checkpointRecompute activations in the backward pass to save memory
--dry-runInspect the dataset + print the resolved plan, don’t train
-h, --helpShow help

Use mlx-bun train --help for terminal help.

Produce a speculative-decoding drafter: regen | train | calibrate | quantize

Usage: mlx-bun draft <action> [model] [options]

OptionDescription
--model <value>Target model (regen, train, calibrate) or DeepSpec drafter directory (quantize); the option spelling of the second positional
--topics <value>regen: text file with one topic per line the target writes an article about (required)
--data <value>train: shard directory from regen (required) · calibrate: JSONL of {prompt} rows, a string or chat messages (required)
--out <value>Output directory [default: regen ~/.mlx-bun/datasets/dspark- · train ~/.mlx-bun/models/-dspark · quantize ~/.mlx-bun/models/-affine-q-g · calibrate: in place]
--tap-layers <value>regen/train: target layers the drafter reads, comma separated, the last normally the layer count (post-final-norm). MUST match between regen and train [default: 20,31,41,42 (gemma-4 e4b)]
--max-resp <value>regen: generated tokens per topic [default: 320]
--seqs-per-shard <value>regen: sequences per shard file [default: 32]
--min-resp <value>regen: drop responses shorter than this [default: 6]
--iters <value>train: optimizer steps [default: 6000]
--batch <value>train: anchors per step [default: 8]
--gamma <value>train: draft block length [default: 5]
--max-ctx <value>train: cap on the prefix context each anchor attends [default: 512]
--lr <value>train: peak learning rate [default: 1.5e-3]
--warmup <value>train: warmup steps [default: 150]
--eval-every <value>train: steps between held-out evaluations; the best held-out τ is what is saved [default: 500]
--eval-anchors <value>train: anchors per held-out evaluation [default: 256]
--seed <value>train: init and sampling seed [default: 0]
--d-draft <value>train: drafter width [default: 1024]
--n-heads <value>train: drafter attention heads [default: 8]
--layers <value>train: drafter backbone depth [default: 5]
--markov-rank <value>train: sequential-head rank [default: 256]
--seq-head <value>train: sequential head, markov (Eq 5) | rnn (Eq 6) [default: markov]
--resumetrain: warm-start weights from an existing checkpoint in —out (the optimizer and schedule restart)
--drafter <value>calibrate: the trained drafter directory whose dspark.json receives the thresholds (required)
--n <value>calibrate: prompts to run [default: 32]
--max-tokens <value>calibrate: generated tokens per prompt [default: 128]
--precision <value>calibrate: acceptance precision each kept position must reach, in (0, 1] [default: 0.5]
--min-samples <value>calibrate: positions with fewer observations are never pruned [default: 50]
--forcecalibrate: recalibrate a drafter that already carries thresholds
--bits <value>quantize: 4 | 8 [default: 4]
--group-size <value>quantize: 32 | 64 [default: 64]
-h, --helpShow help

Use mlx-bun draft --help for terminal help.

Live dashboard for a training run (tails /metrics.jsonl)

Usage: mlx-bun train-watch [adapter-dir] [options]

OptionDescription
--adapter <value>Adapter directory to watch; accepted for the positional [default: the latest run in ~/.mlx-bun/adapters]
-h, --helpShow help

Use mlx-bun train-watch --help for terminal help.

Merge a LoRA adapter into the base weights (writes a standalone snapshot)

Usage: mlx-bun fuse [model] [options]

OptionDescription
--model <value>Base model (registry query or a snapshot path); the mlx_lm.fuse spelling of the positional
--adapter <value>Adapter directory (adapters.safetensors + adapter_config.json) [default: adapters]
--adapter-path <value>mlx_lm.fuse alias for —adapter
--save-path <value>Output model directory [default: ~/.mlx-bun/models/-fused]
--dequantizeWrite dense weights instead of the base’s quantized layout (drops the config’s quantization block)
--export-ggufNot supported (mlx_lm.fuse flag); the command exits with an error
--gguf-path <value>Not supported (mlx_lm.fuse flag); the command exits with an error
--upload-repo <value>Push the fused model to this Hugging Face repo afterwards (write token checked first)
-h, --helpShow help

Use mlx-bun fuse --help for terminal help.

Download a model from Hugging Face (resumable, verified)

Usage: mlx-bun get <org/repo | substring> [options]

OptionDescription
--revision <value>Git revision [default: main]
-h, --helpShow help

Use mlx-bun get --help for terminal help.

List downloaded models (one canonical revision per repo)

Usage: mlx-bun ls [query] [options]

OptionDescription
--visionOnly vision-capable models
--max-size <value>Filter by weight size, e.g. 10GB or 800MB
--all-revisionsShow each snapshot; canonical revision marked *
-h, --helpShow help

Use mlx-bun ls --help for terminal help.

Re-index the Hugging Face cache without reading tensor bytes

Usage: mlx-bun scan [options]

OptionDescription
-h, --helpShow help

Use mlx-bun scan --help for terminal help.

Estimate model memory and decode speed on this machine

Usage: mlx-bun fit <query> [options]

OptionDescription
--ctx <value>Context tokens [default: 8192; a memory-planning runtime defaults to its own preset]
--kv-quant <value>KV estimate: 4 | 8 | config | off [default: off]
--skusPrint the Apple Silicon SKU matrix
-h, --helpShow help

Use mlx-bun fit --help for terminal help.

Reclaim superseded snapshots and dead blobs (preview by default)

Usage: mlx-bun gc [options]

OptionDescription
--yesActually delete the planned snapshots and blobs
--dry-runNever delete, even with —yes
--forceAlso prune superseded snapshots with otherwise unique files
-h, --helpShow help

Use mlx-bun gc --help for terminal help.

Push a local model directory to the Hugging Face Hub (mlx_lm.upload counterpart)

Usage: mlx-bun upload [options]

OptionDescription
--path <value>Local model directory to upload (required)
--upload-repo <value>Hub repo id, org/name or bare name (required)
--privateCreate the repo as private (mlx-bun extension)
-h, --helpShow help

Use mlx-bun upload --help for terminal help.

Your local AI’s personal wiki: set it up, inspect it, run synthesis, schedule it

Usage: mlx-bun memory [subcommand] [args] [options]

OptionDescription
--since <value>synthesize: only conversations newer than this (parsed; the pipeline does not consume it yet)
--model <value>synthesize: synthesis model override (parsed; reserved)
--dry-runsynthesize: plan the stages only, never write the vault
--limit <value>Stage workers: cap the work processed this pass (segment, extract, synthesize-stage, link)
--convs <value>Stage workers: comma-separated conversation ids to restrict the pass to
--at <value>schedule: local wall-clock time for the nightly job, 24h HH:MM [default: 03:00]
--host <value>Run the model calls on a serving mlx-bun at this host instead of loading the memory task model (127.0.0.1 when only —port is given)
--port <value>Port of that server (8080 when only —host is given)
-h, --helpShow help

Use mlx-bun memory --help for terminal help.

Set up your local AI’s memory wiki (alias of mlx-bun memory)

Usage: mlx-bun setup [subcommand] [args] [options]

OptionDescription
--since <value>synthesize: only conversations newer than this (parsed; the pipeline does not consume it yet)
--model <value>synthesize: synthesis model override (parsed; reserved)
--dry-runsynthesize: plan the stages only, never write the vault
--limit <value>Stage workers: cap the work processed this pass (segment, extract, synthesize-stage, link)
--convs <value>Stage workers: comma-separated conversation ids to restrict the pass to
--at <value>schedule: local wall-clock time for the nightly job, 24h HH:MM [default: 03:00]
--host <value>Run the model calls on a serving mlx-bun at this host instead of loading the memory task model (127.0.0.1 when only —port is given)
--port <value>Port of that server (8080 when only —host is given)
-h, --helpShow help

Use mlx-bun setup --help for terminal help.