Agentic Engineering
A hands-on course in agentic engineering, built on a config-driven agent engine in Python and TypeScript, and a demo site that steps through recorded runs of it, stage by stage, with the trace, cache and code at every step.
Key metrics
Architecture
One engine core per language, with each framework (Vercel AI SDK, OpenAI Agents SDK, LangChain, LangGraph, LlamaIndex) fitted in as a plugin, so switching framework is a config edit and a hot reload. Only caching, tracing and guards are cross-cutting; everything else is a plugin named in config. Skills and MCP servers run in the srt sandbox, and every run is recorded so public pages replay real traces without spending model credits.
Case study
Agentic Engineering
Most agent demos are a scripted animation and a slide. Agentic Engineering is a course: Steve's methods for reliable, scalable agents taught through working code: an executable agent engine, and a page that steps through real runs of it. It lives at macleodcodes.com (invite-only).
What you can do on it
- Engine: watch a deal-room question go through intake, shield, answer cache, route, hybrid retrieval, grading, the agent with its skills and MCP tools, guards and the reply. Step back and forward, or tap any span to jump the run to it. The inspector shows the result, terminal, cache, code and config for each stage.
- Composer: start from seven prebuilt pipelines (Basic RAG to Multi-agent) or answer eight short questions, and the diagram rebuilds with every choice.
- Evolution: the history of RAG in 16 steps, each one a run you can watch, from basic RAG to graph RAG.
- Caching and Prompting: eight caching chapters and eight prompting techniques, each applied one at a time to the same question with a scoreboard.
- Components and Evals: a catalogue of 72 components, and golden-case eval batches judged by code and a model.
How it works
Everything is config: behaviour, thresholds, backends, framework, model, dataset and the page's display styles. One engine core per language (Python and TypeScript) takes Vercel AI SDK, OpenAI Agents SDK, LangChain, LangGraph or LlamaIndex as a plugin, so changing framework is a config edit and a hot reload. Caching, tracing and guards are the only cross-cutting parts; each uses the framework's own mechanism where one exists. Every decorator and plugin call is a span, exported to Jaeger.
Claude is pinned in config: Sonnet 5.5 is the agent and Haiku 5.5 does the small jobs (judges, rewrites, the grey-zone injection check). Skills and MCP servers run in the srt sandbox. The data is SEC EDGAR M&A filings.
Live runs happen only on Steve's machine. Public pages replay recordings, labelled with their date, language, framework and config version, so a replay never makes a paid model call.
Tech stack
Gallery