Fine-tuning, with receipts
Teach a small local model your docs.
Then prove it learned.
A knowledge pack is a versioned, portable artifact — curated sources, schema-validated training JSONL, a contamination-guarded held-out eval set, and a signed-shaped manifest. The before/after eval harness ships inside the format, because loss going down is not knowledge going in.
packsmith build packs/amber-framework # chunk → split → generate → guard → emit
packsmith verify packs/amber-framework # hashes, schemas, contamination — fail closed
packsmith train packs/amber-framework --base mlx-community/SmolLM-135M-Instruct-4bit
packsmith eval … --out base.eval.json # identical harness, before and after
packsmith diff base.eval.json adapter.eval.json --fail-below-delta 0.10
Measured, not vibed
One M1 Max, one afternoon, per-item reports checked in. These are lab notes, not benchmarks — the eval questions are synthetic and not yet hand-reviewed, and our own spec forbids headlining synthetic-only numbers. With that stated first: in the measured run, recall of trained facts (normalized-substring match at temperature 0, under held-out question templates) went 1/20 → 11/20, while the held-out-source control set — whose units contributed zero training examples — showed no measurable gain (9/50 → 7/50). Training took 62.77 s at 0.42 GB peak, fully local.
The same experiments also caught two failure modes no loss curve shows: the default learning rate that walks validation loss from 4.94 to 1.96 while recall of trained facts barely moves (2/20 vs base 1/20 — same data, same iterations as the run above), and a cloze-only dataset that injected facts while collapsing multiple-choice format compliance to 1/30. Both are written up with full numbers and caveats — the eval questions are synthetic and not yet hand-reviewed, so read everything here as lab notes and run the harness yourself.
Read the guide
What is a knowledge pack?
The format: sources, generated JSONL, held-out eval, manifest. Split before generate; fail closed.
Did my LoRA actually learn anything?
The lr 1e-5 silent failure, and the ablation where fine-tuning quietly broke the model's format compliance.
Your docs → adapter, on a Mac
End-to-end walkthrough with the measured MLX recipe. No cloud, no API keys required.
The measured run
Real before/after numbers, the control set, the ablations, and every caveat — published together.
Evaluate before and after
MC with typed parsing and invalid-rate accounting, temp-0 exact recall, and the only claim shape we allow.
Where this is going
The (explicitly aspirational) marketplace of signed, self-proving knowledge packs.
Built in Crystal, on Llamero
packsmith compiles on stock Crystal and
runs its whole spec suite against Llamero's
deterministic MockBridge — no models, no keys, green in CI. Generated records parse into real
Crystal classes and enums — typed validation at parse time, not a best-effort post-hoc filter.
Why that matters.