Skip to main content
  1. Blog/

AI Agent Frameworks — The Wild West of Autonomous Systems

·962 words·5 mins
Osmond van Hemert
Author
Osmond van Hemert
Developer Tooling - This article is part of a series.
Part : This Article

If you’ve been following the AI tooling space at all this month, you’ll have noticed that “agentic AI” has become the dominant buzzword of early 2026. Every major framework has shipped agent capabilities, Microsoft’s AutoGen just released a significant rewrite, and the number of agent frameworks on GitHub has passed the point where anyone can reasonably evaluate them all. It feels like the JavaScript framework explosion of the mid-2010s, except the stakes are higher because these systems take actions in the real world.

I’ve spent the past few weeks evaluating several of these frameworks for a client project, and I have thoughts.

The Framework Landscape
#

The current field breaks down roughly into three tiers. At the top, you have the battle-tested frameworks: LangChain/LangGraph, Microsoft’s AutoGen, and CrewAI. These have large communities, decent documentation, and enough production deployments to have surfaced (and sometimes fixed) real architectural issues.

In the middle tier, you have opinionated frameworks that solve specific problems well: Semantic Kernel for .NET shops, Haystack for search-centric applications, and DSPy for teams that want a more programmatic approach to prompt engineering.

Then there’s the long tail — hundreds of frameworks that are essentially thin wrappers around the OpenAI API with a loop and some string formatting. These are the ones to be cautious about.

What Actually Matters in an Agent Framework
#

After building several agent-based systems, I’ve settled on a short list of capabilities that separate useful frameworks from toys:

State management and persistence. An agent that loses its context between turns is barely an agent. LangGraph’s approach of treating agent state as a graph with checkpointing is architecturally sound. You can pause, resume, inspect, and even replay agent execution. AutoGen’s new conversation patterns handle this differently but equally well. If your framework can’t persist and restore agent state across process restarts, walk away.

Tool calling with validation. The agent needs to call external tools — APIs, databases, file systems — and the framework needs to handle this safely. That means input validation, output parsing, error handling, and timeout management. It sounds basic, but many frameworks treat tool calling as an afterthought. The best ones let you define tools with proper type signatures and validate both inputs and outputs against schemas.

Observability. When an agent makes a bad decision — and it will — you need to understand why. That means structured logging of every LLM call, every tool invocation, every decision point. LangSmith and similar tracing tools have made this much better, but observability should be a first-class concern in the framework itself, not bolted on after the fact.

Human-in-the-loop controls. Any agent that can take real actions needs a way for humans to approve, reject, or modify those actions before execution. This is non-negotiable for production systems. The frameworks that handle this well make it easy to insert approval gates at any point in the agent’s execution flow.

The Architecture Question
#

The more fundamental question is whether agents should be single-model systems or multi-agent collaborations. The multi-agent pattern — where specialized agents communicate to solve complex tasks — is theoretically elegant and practically messy.

CrewAI leans heavily into the multi-agent metaphor, with “crews” of agents that have roles, goals, and backstories. It’s intuitive for simple workflows but gets complicated quickly when you need fine-grained control over agent communication. AutoGen’s new architecture is more flexible, with explicit conversation topologies that let you define exactly how agents interact.

My experience has been that most problems don’t need multi-agent systems. A single agent with well-designed tools and a clear prompt handles 80% of use cases more reliably than a crew of agents negotiating with each other. Multi-agent systems add latency (every inter-agent message is an LLM call), cost (token usage multiplies quickly), and debugging complexity.

The exceptions are genuine workflow orchestration problems where different steps require fundamentally different capabilities or models. A research agent that gathers information, hands it to an analysis agent with domain expertise, and then passes results to a writing agent — that’s a reasonable multi-agent architecture. But you should exhaust the single-agent approach first.

The Reliability Problem Nobody Talks About
#

Here’s the thing that the demos don’t show you: agents fail in production. A lot. The failure modes are different from traditional software — instead of exceptions and error codes, you get plausible-sounding wrong answers, infinite loops, and creative misinterpretations of instructions.

Building reliable agents requires the same discipline as building any distributed system: retry logic, circuit breakers, fallback strategies, and comprehensive testing. Except testing is harder because the LLM’s behavior is non-deterministic. Your agent might handle a task perfectly 95 times out of 100 and fail catastrophically the other 5.

The teams I’ve seen succeed with agents in production all share one trait: they treat the LLM as an unreliable component and build guardrails accordingly. Every action gets validated. Every output gets checked. The agent’s autonomy is bounded by explicit constraints, not just instructions in a prompt.

My Take
#

We’re in the “build everything” phase of agent frameworks, and consolidation is coming. My bet is that LangGraph and AutoGen will emerge as the dominant platforms, with CrewAI holding a niche for simpler orchestration use cases. The long tail of thin wrappers will mostly disappear.

If you’re starting an agent project today, pick a framework with strong state management and observability, start with a single agent, and invest heavily in evaluation and testing infrastructure. The framework choice matters less than the engineering discipline you bring to using it.

And please, before you build an agent, ask yourself: does this actually need to be an agent, or would a well-designed pipeline with a few LLM calls handle it? The answer is often the latter.

Part of my AI in Development series exploring practical AI integration.

Developer Tooling - This article is part of a series.
Part : This Article