I built out the basic structure of the syllabus for this course (described in last week’s weeknotes). It is split between several weeks on the LLM engine component of an agential harness, which comprises the hardware-intensive substrate of running next-token generation with an LLM somewhere, and the harness architecture, which covers the agentic loop, tool use, session context, and the other aspects that make next-token generation practicable as a software development assistant in tools like Claude Code. I found this post a helpful jumping-off point, and also discovered the pi coding agent through my research.
Pi is a fantastically minimal yet extensible coding harness, which reads with respect to Claude Code or Codex as (Neo)vim does to Visual Studio Code. As of yesterday, I’ve now switched over to pi for all my agential programming. Critically, pi’s minimalism makes it practicable for me to swap out Anthropic’s engine for local models running on ollama. (I recognize that there are likely ways to optimize a local LLM engine, but ollama with ROCm has been sufficient for me to get started seriously using open weights models locally.) I’ve been playing around with qwen3.6:35b, a model that generates tokens remarkably promptly on my Framework Desktop. I haven’t leaned in on it yet, but I expect that Qwen 3.6′s performance and capability will be sufficient to work on features and bugs filed by more capable models, a plan-implement workflow that I currently manage with beads and jj.
Open models are an increasingly exciting space, both for interpretability and agential harness research. I highly recommend the latest Oxide and Friends podcast with Simon Willison on open weights models and the recent Anthropic/Hugging Face incident. If you’re not already jazzed about open weights, I expect you will be after listening.