-
Notifications
You must be signed in to change notification settings - Fork 0
Capability Matrix
Mike Wright edited this page Aug 8, 2026
·
39 revisions
“Yes” means the current architecture and source contain a usable path. “Limited” calls out an important constraint. Exact availability can depend on the build feature and the connected server.
| Capability | Browser-only | Native CPU | Apple MLX | NVIDIA CUDA |
|---|---|---|---|---|
| Core language and arrays | Yes | Yes | Yes | Yes |
| Named axes and structured shape errors | Yes | Yes | Yes | Yes |
| Model DSL | Yes | Yes | Yes | Yes |
| CPU autograd and optimizers | Yes | Yes | Fallback | Fallback |
| General arbitrary-model GPU training | No | N/A | Yes | No |
| Supported LoRA GPU training fast path | No | N/A | Yes | Yes |
| Supported two-linear MLP GPU training path | No | N/A | Yes | Yes |
| Tiny/tutorial training | Yes, size-limited | Yes | Mixed by model path | Mixed by model path |
| Inline visualization | Yes | No, artifact path | Via client/artifact | Via client/artifact |
Filesystem load
|
No | Yes, sandboxed | Yes, native host | Yes, native host |
Static include (script mode) |
No, precise error | Yes, sandboxed under --source-dir
|
Yes, native host | Yes, native host |
@word annotations + @test registry + reflection (tests, test_info, annotations) |
Yes | Yes | Yes | Yes |
bracket(setup, use, teardown) guaranteed-finally |
Yes | Yes | Yes | Yes |
transpose_axes dyadic transpose + blocked rank-3/4 disp
|
Yes | Yes | Yes | Yes |
Typed test events (test_event_sink/emit_test_event) + host transport |
Yes, response array | Yes, --test-events JSONL |
Yes | Yes |
expunge / :erase name removal |
Yes | Yes | Yes | Yes |
| Header staleness badge (current / update-reload / unknown-offline) | Yes | n/a | n/a | n/a |
global_set explicit workspace writes |
Yes | Yes | Yes | Yes |
Sandboxed fs API (fs_walk/read_text/write_text/remove_path) |
No, err value | Yes, --source-dir sandbox |
Yes | Yes |
run_script fresh-env execution + exit interception |
No, err value | Yes | Yes | Yes |
Higher-order quartet (each/table/atop/over) |
Yes | Yes | Yes | Yes |
parse_json + multi-line argument lists |
Yes | Yes | Yes | Yes |
clock_ms monotonic benchmark clock |
No, not a browser builtin | Yes | Yes | Yes |
| Fixed-width bit ops (band/bor/bxor/bnot/popcount/shl/shr/bmask/bits/from_bits) | Yes | Yes | Yes | Yes |
| KV-cache generation (gen_state/gen_logits/gen_append/gen_clone/gen_reset/gen_stats) | Yes | Yes | Yes | Yes |
| Exception-free record access (has_field / record_get) | Yes | Yes | Yes | Yes |
| JSON codec (parse_json / to_json, deterministic round trip) | Yes | Yes | Yes | Yes |
| Root value-kind detection (type_of) | Yes | Yes | Yes | Yes |
| Raw-byte file I/O (read_bytes / write_bytes, sandboxed) | Yes | No (no sandbox) | Yes | Yes |
| Crash-safe write (write_atomic, temp + rename) | Yes | No (no sandbox) | Yes | Yes |
| TOML codec (parse_toml / to_toml, config subset, round trip) | Yes | Yes | Yes | Yes |
| Decode limits (parse_json / parse_toml max_depth + max_bytes) | Yes | Yes | Yes | Yes |
| Result round trip (to_json/to_toml + parse {results:1}) | Yes | Yes | Yes | Yes |
| Bounded file I/O (read_bytes offset/length, file_size) | Yes | No (no sandbox) | Yes | Yes |
| Provenance badge v2 (running vs served vs repo; deploy-pending state) | Yes | n/a | n/a | n/a |
Partial application + applicative call (the combinator birds) |
Yes | Yes | Yes | Yes |
| Fixed-point combinator via partials (Y / recursion without a name) | Yes | Yes | Yes | Yes |
load_preloaded |
Yes | Yes | Yes | Yes |
| Trace export to disk | No | Yes | Yes | Yes |
| BPE and byte tokenization | Yes | Yes | Yes | Yes |
| Experiment tracking | Memory | Disk | Disk | Disk |
| Device feasibility estimation | Yes | Yes | Yes | Yes |
| Trustworthy calibration | Limited | Yes | Yes | Yes |
Direct llm_call or local Ollama |
No | Yes | Yes | Yes |
| Server sessions and inspection | Client only | Server build | Server build | Server build |
| SSE training telemetry and cancel | Connected client | Yes | Yes | Yes |
| Session persistence and reattach | Connected client | Yes | Yes | Yes |
| Compilation to Rust/native | Build elsewhere | Yes, subset | CPU target subset | CPU target subset |
| Engram conditional memory | Yes, CPU | Yes, CPU | CPU execution | CPU execution |
flowchart TD
Scope[Enter device scope] --> Backend{Backend built and available?}
Backend -->|No| CPUFallback[Run CPU fallback and warn]
Backend -->|Yes| Operation{Operation or model shape supported?}
Operation -->|General forward op| GPUOp[Dispatch GPU operation]
Operation -->|Recognized training fast path| GPUTrain[Train on GPU]
Operation -->|Unsupported training graph| Tape[Use CPU autograd tape]
Tape --> Notice[Do not interpret scope alone as GPU training]
MLX uses persistent device tensors and a device-aware autograd tape for general training. CUDA accelerates recognized LoRA and two-linear MLP training shapes; other CUDA-scoped training uses the CPU tape. Confirm device telemetry rather than inferring residency from the device scope alone.
See Execution Surfaces for deployment choices and the individual backend pages for build and limitation details.