Stack

The harness

Each task goes to the cheapest model that can do it well. llmr route-auto "<task>" picks the tier, and every tier reads from the same knowledge base. When a mistake costs real time, it gets written up withllmr lesson. The next session checks those lessons before it starts, so the same debugging doesn't get paid for twice.

  1. Describe the task in plain text
  2. Check past lessons with llmr ask
  3. semantic-router picks T0, T1 or T2
  4. That tier does the work; T1 hands off to T0 after 3 failures
  5. Record what went wrong with llmr lesson
T0

Claude Code (Claude Opus) · cloud

Specs, architecture, failing tests, code review, tricky math, hard debugging, unblocking T1.

T1

qwen3.5:9b via Ollama · MacBook

Implementation against a spec + tests, refactors, mechanical edits. Three strikes, then T0 takes over.

T2

qwen2.5:3b-instruct via Ollama · homelab

Commit messages, PR bodies, devlogs, session summaries, and RAG Q&A over my repos.

Harness

Switchboard (llmr)My model router and knowledge base
semantic-routerClassifies free-text tasks to a tier by embedding similarity (no LLM call)
nomic-embed-textEmbeddings for routing and the knowledge base
sqlite RAGdev / consulting / lessons collections; brute-force cosine, no vector DB on purpose
Claude Code skillsTells Claude when to check lessons and hand work to a smaller model
ContinueIn-editor autocomplete on a 1.5B local model

Homelab

DebianAn old i3 laptop with 8 GB RAM and a spinning disk
TailscaleEvery service is reachable only over my private network
Docker + PortainerCompose stacks, git-tracked
CaddyReverse proxy and static hosting
GiteaSelf-hosted git for most of my repos
ImmichSelf-hosted photo library
code-serverVS Code in the browser

Building

TypeScript + ViteDefault web stack, strict mode
React + ZustandMyPublisher
Next.js + Cloudflare Workers + D1SetTheMood
VitestLogic gets tests first, which is what makes handing it to a local model safe
Local-first storageNo accounts or backend unless the app needs one
PythonTooling, RAG, and glue scripts
Astro + Cloudflare PagesThis site