I wrote weird fiction set in Portland, Oregon. I wanted a local model that could write in my voice. I started with a Python notebook, and by the time I was done I'd accidentally built a general-purpose AI experiment runner.
Here's a paragraph it generated:
Right now, the sun is hanging low, and the treetops are weeping golden liquid into the crows' nests. I'm sitting on the old bench by the boat launch. It's mellow, but I'm not letting the boats go. They're my only witnesses to the taut lines of fishing nets out there, and if I miss the boat-truck race tomorrow, I'll have to explain the tuna's migratory patterns to the council.
That's not cherry-picked. The voice holds because of how retrieval works — keywords instead of embeddings. Human-curated keys, SQLite lookup, no vector database. The right context comes back because you chose the keys deliberately, not because cosine similarity found something semantically adjacent.
The notebook broke down fast. Steps ran out of order, state was invisible, nothing was restartable. So I built a YAML-declared step runner with DAG scheduling on top of a shared in-memory store. Each step is a plain CoffeeScript file. The pipeline handles LoRA fine-tuning, quantization, and generation as discrete restartable steps.
It runs on Apple Silicon via MLX. CoffeeScript on purpose — it reads like Python but without Python's security surface, which matters when you're eventually hardening this for a smartphone app.
Three repos:
pipeline — the runner itself, annotated Docco-style so the source doubles as a teaching document
pipeline-demo — clone and run, one pipeline, 9 steps, friendly welcome
pipeline-pipes — multi-experiment shape, one model downloaded once, many application pipes
github.com/jahbini/pipeline
The get-started path is two minutes:
shgit clone https://github.com/jahbini/pipeline-demo my-project
cd my-project
./run-first.sh
v0.1, just published. Looking for researchers and teachers running iterative experiments on Apple Silicon who are tired of notebook chaos. Tell me what breaks.
GeemoBeamo•49m ago
Right now, the sun is hanging low, and the treetops are weeping golden liquid into the crows' nests. I'm sitting on the old bench by the boat launch. It's mellow, but I'm not letting the boats go. They're my only witnesses to the taut lines of fishing nets out there, and if I miss the boat-truck race tomorrow, I'll have to explain the tuna's migratory patterns to the council.
That's not cherry-picked. The voice holds because of how retrieval works — keywords instead of embeddings. Human-curated keys, SQLite lookup, no vector database. The right context comes back because you chose the keys deliberately, not because cosine similarity found something semantically adjacent. The notebook broke down fast. Steps ran out of order, state was invisible, nothing was restartable. So I built a YAML-declared step runner with DAG scheduling on top of a shared in-memory store. Each step is a plain CoffeeScript file. The pipeline handles LoRA fine-tuning, quantization, and generation as discrete restartable steps. It runs on Apple Silicon via MLX. CoffeeScript on purpose — it reads like Python but without Python's security surface, which matters when you're eventually hardening this for a smartphone app. Three repos:
pipeline — the runner itself, annotated Docco-style so the source doubles as a teaching document pipeline-demo — clone and run, one pipeline, 9 steps, friendly welcome pipeline-pipes — multi-experiment shape, one model downloaded once, many application pipes
github.com/jahbini/pipeline The get-started path is two minutes: shgit clone https://github.com/jahbini/pipeline-demo my-project cd my-project ./run-first.sh v0.1, just published. Looking for researchers and teachers running iterative experiments on Apple Silicon who are tired of notebook chaos. Tell me what breaks.