The LLM is the brain. The harness is the body.
Version 1.0 — September 2026.
A blog series about building AI agents from first principles, published as a book.
📖 Read it online: https://isuruwijesiri.com/harness-engineering-101/
An LLM API is stateless. Every turn, you send the entire conversation as a JSON array and get text back. A harness is the program that builds, maintains, and protects that array. Everything the field calls "agents" is a set of patches to that one loop, and each patch exists because something concrete broke. This series develops that one idea across 16 chapters, growing a ~300-line toy agent in plain Python as it goes.
The patterns here are developed in full in One Code, an open-source coding agent built on pi.
The rendered book reads best online at the link above. If you'd rather read the source here on GitHub, follow the chapters in order below. The full introduction is on the book's landing page.
Every chapter has the same shape: the failure, the minimal patch, what the patch costs.
Standalone pieces. Read them when you need them.
| Path | What it holds |
|---|---|
src/*.md |
The chapters and appendices (the book source) |
src/SUMMARY.md |
The book's table of contents |
src/harness/ |
The runnable toy harness — one file per stage |
src/diagrams/ |
Diagram generators and their generated PNGs |
book.toml |
mdBook configuration |
scripts/sync-to-blog.sh |
Builds the book and mounts it into the blog for serving |
cargo install mdbook mdbook-mermaid # or: brew install mdbook (+ mdbook-mermaid binary)
mdbook serve --open # live-reloading preview at http://localhost:3000
mdbook build # static site into ./bookmdbook-mermaid renders the inline mermaid diagrams; without it those blocks
show as raw code.
cd src/diagrams && python3 gen_all.py # Python 3.10+, matplotlibThis repository is dual-licensed:
© 2026 Isuru Wijesiri.