← All articles

Building AI Agents That Survive Production

A 44-part series on building, deploying, evaluating and securing AI agents — the loop itself, the frameworks around it, and everything that breaks once real users arrive.

16 of 44 parts published. New parts every two to three days.

1

Write the Agent Loop Yourself: 80 Lines, No Framework

Every agent framework you will ever use is a wrapper around one while loop. Build that loop by hand once — with real tool dispatch, a stop condition, and a turn budget — and the frameworks stop being magic. This is the version you can debug at 2am.

9 min read
2

Tool Schemas Models Actually Call: The Description Is the Prompt

Most agent failures that look like reasoning failures are tool-selection failures. The model picked the wrong function, or invented arguments, or did not realise a tool applied. Almost all of it is fixable in the schema — and the schema is prompt engineering, not API plumbing.

8 min read
3

Never Raise: Error Handling Patterns for Agent Tools

In ordinary code an exception is a signal to a developer. In an agent, an uncaught exception kills the turn and throws away everything the model has figured out. The tool contract that makes agents recover instead of collapse is one rule long — and it changes how you write every tool.

8 min read
4

Structured Output: JSON Mode, Tool Calling, or Grammar Constraints?

Three mechanisms will force a model to return a schema, and teams pick between them by habit rather than by fit. They differ in guarantee strength, in latency, and in one under-discussed way: the strictest option can quietly make the content worse even as the format gets perfect.

9 min read
5

System Prompt Architecture: Role, Rules, Tools, and Escape Hatches

An agent's system prompt is not a paragraph of encouragement. It is the only place you get to specify behaviour that holds across every turn, every tool result, and every input a user throws at it. Four blocks, in a fixed order, and one of them is the block nobody writes.

8 min read
6

When Not to Build an Agent (A Decision Tree)

A large share of agent projects should have been a workflow, a retrieval endpoint, or a scheduled job. The tell is usually visible in week one and ignored until month three. Here is how to check before you commit a quarter to it.

7 min read
7

Google ADK Tutorial: From Zero to a Deployed Agent

The Agent Development Kit quickstart gets you a working agent in twenty lines. It also leaves out every decision that matters once the project is real — session state, tool ergonomics, and the deployment boundary that decides whether your agent runs at all.

10 min read
8

Deploying to Vertex AI Agent Engine: The Guide the Docs Skip

Agent Engine will host your agent without you writing a server, managing sessions, or provisioning anything. Getting there means understanding four things the documentation mentions in passing and that account for most failed first deploys.

11 min read
9

'NoneType' object is not subscriptable: The cloudpickle Bug That Eats Agent Deploys

A postmortem. The deploy succeeds, the agent goes live, and every query returns nothing — or a type error from deep inside a framework you did not write. The cause is a serialisation boundary nobody told you existed, and the fix is two lines.

9 min read
10

OpenAI Agents SDK vs LangGraph vs Google ADK: Choosing by Constraint

Feature tables do not help, because all three do the same core thing. What separates them is four constraints — where state lives, where it deploys, what you can see when it breaks, and what your team already knows. Pick on those and the choice makes itself.

10 min read
11

Role-Based Multi-Agent Frameworks: What They Get Right, and the AutoGen Lesson

Assigning agents roles and letting them converse is a genuinely useful abstraction for some problems and a determinism disaster for others. Meanwhile the most-cited framework in the category went into maintenance mode this year, which is its own lesson about what to depend on.

9 min read
12

Build an MCP Server in Python: A Complete Walkthrough

From an empty file to a server that Claude, Cursor and your own agent harness can all call. The code is short; the decisions that determine whether anyone can actually use it are the part worth slowing down for.

11 min read
13

Seven MCP Server Design Mistakes (And the Fixes)

A server that works in the inspector and fails in practice usually fails for one of seven reasons. None of them are protocol bugs — they are interface decisions that only show up once a model, rather than a developer, is doing the calling.

9 min read
14

Context Engineering: The Discipline That Replaced Prompt Engineering

Once an agent has tools, memory and retrieval, the job stops being how you word the instruction and becomes what occupies the window on every turn. That is a different skill, with different failure modes, and it is the one production work actually demands.

9 min read
15

Budgeting the Context Window: A Token Accounting Method

Split the window into fixed, retrieved and conversational budgets, put real numbers against each, and enforce them. The arithmetic is simple and almost nobody does it — which is why so many agents degrade at turn fifteen for reasons the team cannot name.

8 min read
16

RAG or Tool Calling? Stop Retrieving What You Could Query

Vector search over data you could have queried with SQL is the most common architecture smell in agent systems. It is slower, less accurate, more expensive to maintain, and it fails in a way that is hard to detect. Here is the decision rule.

9 min read

28 further parts are in progress, covering orchestration, evaluation, cost, observability and security.