Audience and prerequisites
Who this book is for
Experienced software engineers who are building, or about to build, agentic systems that do more than answer questions. You are expected to know:
- HTTP, APIs and authentication (OIDC, sessions, API keys);
- relational databases, transactions, row locks and constraints;
- Docker and Docker Compose, service lifecycles and processes;
- testing, observability and the basics of distributed systems.
You do not need prior experience with agent frameworks. Part I explains agent loops, tool calling and MCP from first principles, and the other parts link back to it instead of re-teaching it.
Languages
The projects use different languages for deliberate reasons (Technology choices follow boundaries). To follow the code walkthroughs you should be comfortable reading:
| Part | You will read | You will run |
|---|---|---|
| I | Python (agent), Rust (gateway, MCP server), YAML | Docker Compose stack, make targets |
| II | TypeScript (SvelteKit, LangGraph.js) | Node 24, Ollama, curl, sqlite3 |
| III | Rust (rules engine, MCP server), Python, JSON policy | cargo, python3; a Compose stack for live labs |
| IV | Rust (Axum, cryptography) | cargo; a local server for later labs |
| V | Elixir (Phoenix, Ash, AshAI) | Elixir/Erlang, PostgreSQL, mix, curl, jq |
Part IV assumes basic cryptographic vocabulary: hashes, MACs, symmetric encryption, key derivation functions and elliptic-curve keys. Part V does not assume Ash knowledge, but you should be able to read Elixir.
Two kinds of dependencies
Keep these apart:
- Reading the book needs a browser. Building the book yourself needs only
Python 3.11 or newer,
gitand a pinned mdBook binary. See the repository's README. - Running a project's labs needs that project's own stack. Several of these
are large: the Part I stack runs about ten services and wants roughly 8 GB of
Docker memory. Others are small: most Part III and Part IV lessons need only
cargo. Each part's introduction summarises its requirements, and Setting up each track collects them.
Many lessons can be read without running anything. The labs are where the judgment comes from, though. Each one asks you to predict a result, break a guarantee and find the code that stopped you.
Model behaviour is observed, not guaranteed
Several labs quote what a particular local model (often qwen3:8b) did on one
run. Your model may choose different tools or phrase things differently. The
labs are designed so that the property under test, such as what is persisted,
what is refused or what is recomputed, does not depend on the model.