Field note · 015Jun 202612 min

The agent framework your on-call can debug at 3am

A working comparison of CrewAI, AutoGen, LangGraph, and plain function calling — judged by what they look like when a production agent breaks at 3am.

AL
The Acorn Labs bench
Southwark · SE1

Every couple of weeks a team asks us which agentic AI framework they should standardise on. The honest answer is that the demo videos are all good, the GitHub stars are all impressive, and none of that is the question. The question is what the framework feels like the first time a customer-facing agent does something wrong at 3am and someone on your team has to figure out why.

This is a field note from shipping production-grade agents on four of the main contenders. We are not going to crown a winner — the winner depends on your taste, your team, and how much of the orchestration you want to own. We are going to tell you what we noticed.

The frameworks we actually use

  • CrewAI — opinionated, role-based, fastest path from idea to running multi-agent prototype. Great taste in defaults.
  • AutoGen — research-flavoured, conversation-first, the most flexible if you are comfortable writing your own scaffolding.
  • LangGraph — explicit state machine on top of LangChain, the easiest to reason about once an agent loop gets non-trivial.
  • Plain function calling — no framework, just the model SDK and a switch statement. Underrated for narrow agents.

What demos hide and production reveals

Every framework looks elegant when the model behaves. The interesting question is what your code looks like once you have added: retries with backoff, tool-call validation, a kill switch for runaway loops, structured logging that an SRE can actually grep, evals that run in CI, and a way to replay a single user's session deterministically. By the time you have bolted those on, the framework you chose matters less than the abstractions you wrapped around it.

The framework decides how fast you get to the first demo. Your wrappers decide how fast you get to the hundredth incident review.

The taste-as-spec angle

An agent is a product surface, not a research artefact. The role descriptions, the tool docstrings, the refusal copy, the order in which sub-agents speak — these are editorial decisions. The frameworks that win in production are the ones where those decisions live in readable text files that a non-engineer can edit, not buried in Python classes that only the original author understands. By that test, CrewAI and LangGraph pull ahead; AutoGen rewards teams who like writing their own DSL; plain function calling is the most honest of all because there is nowhere for taste to hide.

How we choose, in practice

  • If the agent is one model and three tools: skip the framework. The switch statement will outlive your dependencies.
  • If the agent is a small crew with clear roles and you want to ship next week: CrewAI.
  • If the agent has branching state, long loops, and humans-in-the-loop: LangGraph.
  • If the team enjoys writing infrastructure and the agent is genuinely research-shaped: AutoGen.

None of these are wrong answers. The wrong answer is choosing a framework because the landing page was the prettiest, and discovering six months in that the abstractions you needed were the ones it does not have.

end