a one-machine research lab · MIT

Build a bounded specialist.
Measure it on one Mac.

PostTrainLLM turns a stock open model into a routed specialist sized to local hardware — then shows you exactly where it fails. Distill, fine-tune, gate on real evals, package for MLX, and open the model up with interpretability. This is a measured specialist loop, not a claim that every model can be trained on one Mac.

Native Mac app Notarization pending
  • 100%file-ops gate · n=12 · from 58%
  • 65%held-out breadth · n=52 · from 59.6%
  • 2public routed specialist packages
  • 1research routed-ship · not a product default

the thesis

Not trying to win the frontier. Trying to reach frontier capability at a fraction of the compute — and to understand the whole machine while doing it.

Win on the Mac. Be best-in-class at what one Apple Silicon machine can actually do — train, post-train, evaluate, serve, inspect — with no cluster and no cloud dependency.

Learn the whole space. From y = mx + b to a self-improving factory. Techniques are reproduced locally or integrated from the best available tools, anchored to evidence, and mapped to the files where they live.

Show the scars. Failed runs are first-class. Every attempt is logged with the decision it forced. A number without its regression is marketing, not a result.

Build everything buildable here. If it fits on this Mac, it gets built — and packaged so that when compute arrives, the lab scales from a running start.

The loop the runtime closes.

Each surface emits the input the next one needs. Every run ends in a schema-valid folder — config, dataset, eval, decision, report — that factory-run validates.

  1. 01targetfile operations
  2. 02datainterleaved + depth anchor
  3. 03post-trainteacher-free ReST
  4. 04evaldepth 100 · breadth 65
  5. 05packagefused bf16 · HF/MLX
  6. 06deciderouted-ship

routed-ship proof · evaluated 2026-06-17 · qwen3-4b-rest-fused kept the 100% file-operations gate and recovered breadth from 59.6% to 65%. the decision is ship as a research specialist, not as the Pace default. historical latency, RAM, tok/s, and raw traces were not preserved, so those claims stay missing.

Specialists, honest by design.

A specialist beats a generalist on its target and routes away when it shouldn't answer. Every result ships with the regression it costs.

research routed-ship · weights4B · MLX

Qwen3-4B, ReST fused

One teacher-free ReST iteration retained 100% on the file-operations hard gate, up from the stock model's 58%, and recovered held-out breadth to 65% versus the stock 59.6%. It ships only as a research specialist behind an explicit route.

file-ops gate
58 → 100%
OOD breadth
59.6 → 65%

Historical runtime and raw prediction traces are missing; no current latency, memory, or throughput claim is attached to this package.

Artifact, evidence, and limits →
report-only candidate0.6B · routed

Qwen3-0.6B, routed SQL

Two adapters behind a router. Two reference-anchored DPO retries cured a policy collapse and pushed execution to 0.920 — but output hygiene is a base-model prior a small adapter can't strip. Decision: retry-data.

synthetic exec
0.860 → 0.920
clean-SQL
0.000
Full artifact + blockers →
Every artifact, with evidence and blockers →

Current specialist evidence.

These figures belong to qwen3-4b-rest-fused. The breadth set is a held-out project gate, not a frontier benchmark. Historical runtime traces were not preserved, so no speed or memory claim is presented as evidence for this package.

100%file opshard gate · n=12
65%breadthheld-out gate · n=52
+5.4pointsversus stock breadth
HF + MLXpackagefused bf16 weights
0runtime claimstraces were not preserved
Read the scorecard, evidence, and limits →

The whole stack — audited against the code.

Not a landing-page inventory. The capabilities below map to real subcommands and repository test or evaluation evidence.

train

Pretrain, SFT, DPO / SimPO / KTO / ORPO, distillation, ES. Full PEFT — LoRA, LoRA+, DoRA, VeRA, LoftQ, AdaLoRA, PISSA. WSD schedules, spike recovery, z-loss.

eval

BFCL, τ-bench, lm-eval (MLX adapter), HumanEval + sandbox, SQL execution, router, MILU, MTEB. Frozen baselines, slice metrics, non-zero-exit gates.

serve

OpenAI- and Ollama-compatible on one socket. Agent loop, tool dispatch, FSM-constrained JSON, persistent KV cache, speculative decoding, optional cloud escalation.

package

Export to MLX, safetensors, CoreML. Quantize (GGUF / AWQ / GPTQ / HQQ), prune, merge, bake-LoRA with DoRA magnitudes. Specialist model cards.

inspect

SAE features, ROME, MEMIT, tuned / logit lens, activation patching, linear probes, attention heatmaps. Know where the model decides.

browser

The same model trains in a browser tab via hand-written WebGPU kernels — Memory64, FlashAttention-2, blocked matmul. A from-scratch learning track, honest negative results included.

Honest scope.

  • A single-developer project, shipping in public, MIT.
  • Mac-first — M-series, unified memory, MLX-Swift.
  • Models and runs are deliberately bounded to the available hardware.
  • One research-only routed ship, with missing evidence disclosed.
  • A factory for specialists, not a general assistant.
  • An OpenAI-compatible runtime any client already speaks.
  • Not a product-default proof. The ReST package still needs a fresh, Pace-specific gate before any runtime promotion.
  • Not multi-GPU or distributed. One device, one Mac.
  • Not a cloud product. Nothing leaves the laptop unless you ask.

See the training loop.
On a tiny model.

The browser playground is a bounded learning demo, not the specialist factory. Train a tiny GPT there, or use the native quickstart for a real Mac-local factory run.

Build the specialist, then prove it.

Five evidence-first guides connect the public factory to concrete Apple Silicon workflows.

How to train your own LLM Fine-tune an LLM on Mac MLX LoRA and QLoRA Evaluate a local LLM Build a trajectory dataset Build a routed specialist