Agents are not just LLM calls with tools bolted on… they are control systems
AI agents are quickly moving from demos to production systems. But as teams rush to build “agentic” applications, a pattern is emerging: many projects stall not because the models are weak, but because the architecture is wrong.
Agents are not just LLM calls with tools bolted on. They are control systems. And like any control system, the design pattern you choose determines how reliable, scalable, and debuggable the system will be.
This article breaks down the core architectural design patterns for AI agents, when to use each, and how they show up in real systems
Why Design Patterns Matters for Agents
Traditional software is mostly deterministic. Agents aren’t.
An agent introduces:
- Non-deterministic reasoning
- Dynamic tool selection
- Variable execution paths
- Long-running control loops
Without a clear architectural pattern, you end up with what I call “prompt spaghetti with side effects” — hard to test, hard to debug, and terrifying in production.
Patterns give you control boundaries. They define:
- Who makes decisions
- Who executes
- Where state lives
- Where humans intervene
Let’s look at the most important ones.
1️⃣ Single-Agent Tool Loop (and ReAct Pattern)
What it is:
One agent repeatedly reasons, selects a tool, observes the result, and continues until it reaches a goal.
How it works in practice:
The agent acts like an autonomous operator. It decides:
- Which tool to call
- In what order
- Based on intermediate results
Use this when:
- Tasks are exploratory or open-ended
- Steps cannot be predefined
- You want maximum flexibility
Example:
A DevOps assistant that investigates an incident by:
- Querying logs
- Checking metrics
- Looking at recent deploys
- Suggesting a root cause
The path isn’t known upfront — it emerges.

This example strictly describes a single-agent tool loop. Whether it is strictly ReAct depends on how it reasons internally: if the agent explicitly generates reasoning steps, decides which tool to call based on those steps, observes tool outputs and updates its working memory before the next step, then the loop follows a ReAct style.
However, if the loop exists at the system level, or the model just outputs “next action” witouth explicit reasoning traces, such agent should not be strictly refered as ReAct.
Watch out for:
- Long execution chains
- Unpredictable behavior
- Cost and latency blowups
This pattern is powerful, but it needs guardrails.
2️⃣ Planner + Executor (Split-Brain Architecture)
What it is:
One agent plans. Another component (agent or deterministic system) executes.
How it works in practice:
Step 1 — Planner agent generates a structured plan
Step 2 — Executor carries out steps using tools or APIs
The executor doesn’t “think.” It just runs the plan.
Use this when:
- Tasks are multi-step but auditable
- You want to inspect or modify plans
- Execution needs tighter control
Example:
An infrastructure agent that:
- Plans how to migrate a service
- Then executes API calls to provision resources
You can review the plan before anything touches production.

Example 2: An automated data anlytics project agent. Imagine a system that receives a high-level requests such “Analyze last quarter’s sales performance and identify growth opportunities“.
As a solution we split responsibilities between two agents: the planner agent (strategic brain) is responsible for understanding user’s goal, break it into structured steps, and deciding what needs to be done, not how to each action. For this case, it produces a plan like a) retrieve sales data from warehouse, b) clean and aggregate by region and product, c) identify top growth segments, d) generate visualizations, and e) summarize insights in a report.
The executor agent, on the other hand, is the LLM-powered agent, but with different prompt, tools and constratints, responsible for interpreating each step, selecting the right tools (SQL, Python, charting libs, etc), running code or API calls and returning results step by step. The executor does localized reasoning, not big-picture planning.
Watch out for:
The planner can still hallucinate invalid steps — validation layers are critical.
3️⃣ Deterministic Workflow with AI Decision Nodes
What it is:
A traditional workflow (state machine, DAG, pipeline) where AI is used only at specific decision points.
How it works in practice:
The system controls the flow. AI helps with:
- Classification
- Summarization
- Routing decisions
But the overall structure is fixed.
Use this when:
- Reliability matters more than autonomy
- Processes are well understood
- You operate in regulated environments
Example:
A document processing pipeline:
- Upload document
- AI extracts fields
- System validates
- Human reviews exceptions
AI supports the flow — it doesn’t drive it.

Watch out for:
Limited adaptability. This is not great for novel, exploratory tasks.
4️⃣ Supervisor Agent (Multi-Agent Orchestrator)
What it is:
A top-level agent delegates work to specialized sub-agents.
How it works in practice:
The supervisor:
- Breaks down the task
- Assigns subtasks
- Aggregates results
Sub-agents may specialize in:
- Research
- Coding
- Data retrieval
- Analysis
Use this when:
- Tasks span multiple domains
- You want modular capabilities
- You expect the system to grow in complexity
Example:
An AI research assistant that:
- Uses one agent to gather sources
- Another to summarize
- Another to draft a report
The supervisor coordinates the “team.”

Watch out for:
Coordination overhead and debugging complexity. Multi-agent systems amplify emergent behavior.
Note: Split-Brain Pattern is a separation of agents by level of abstraction whereas supervisor pattern introduces agent separation by area of expertise. The first one solves control and reliability in complex multi-step tasks; the second one wants to solve coordination in multi-domain or multi-skill systems. So, they operate at different architectural layers, not as alternatives.
Example 2: Frameworks like Agent-Squad provides a core component with an orchestrator that handles intent classification and routing of user requests to the most appropiate agent, being a clear example of a top-level decision layer that delegates to specialized agentes based on context and intent.

5️⃣ Event-Driven Reactive Agent
What it is:
The agent doesn’t run continuously. It activates in response to events.
How it works in practice:
An event (alert, webhook, message) triggers the agent to:
- Assess the situation
- Take action
- Possibly escalate
Use this when:
- Monitoring systems
- Incident response
- Continuous evaluation tasks
Example:
A security agent that wakes up when unusual login activity is detected and:
- Investigates logs
- Checks IP reputation
- Suggests remediation

Watch out for:
False positives and runaway automation. Strong thresholds and approval gates help.
6️⃣ Human-in-the-Loop Agent
What it is:
The agent proposes actions, but a human approves at defined checkpoints.
How it works in practice:
AI drafts → Human reviews → System executes
Use this when:
- Decisions carry legal, financial, or safety risk
- Trust is still being established
- You need auditability
Example:
An AI that drafts contract clauses, with lawyers approving before anything is finalized.

Watch out for:
Bottlenecks. If every step needs a human, you’ve built a fancy suggestion engine, not an agent.
7️⃣ Memory-Backed Persistent Agent
What it is:
The agent maintains long-term memory across interactions.
How it works in practice:
A memory layer stores:
- User preferences
- Past actions
- Ongoing task state
The agent uses this to behave consistently over time.
Use this when:
- Building personal assistants
- Managing long-running workflows
- Supporting recurring tasks
Example:
An operations agent that remembers your infrastructure setup and past incidents.

Watch out for:
Memory drift, stale data, and privacy risks. Memory needs lifecycle management.
Important Note: It’s worth noting that the Memory-Backed Persistent Agent pattern is really an umbrella for a much deeper set of architectural concerns. In practice, this pattern intersects with multiple persistence strategies — from short-term working memory to long-term knowledge stores, vector databases, structured state, and retrieval-augmented generation (RAG).
It also opens the door to optimizations around memory summarization, decay, relevance scoring, and context window management. And memory is only one dimension: once agents operate over time, you inevitably need adjacent patterns for observability, guardrails, supervision, and security. Each of these areas is large enough to deserve its own design discussion, and we’ll explore them in future articles.
The Reality: Production Systems Are Hybrids
In practice, serious agent systems combine patterns:
- A Supervisor coordinates
- A Planner defines steps
- A Deterministic workflow executes critical parts
- A Human-in-the-loop approves risky actions
- A Memory layer maintains context
This layered approach is what I call an Agent Stack:
- Decision layer
- Orchestration layer
- Execution layer
- Memory layer
- Safety layer
The future of agent architecture isn’t about picking one pattern. It’s about composing them intentionally.
Example: Imagine a large enterprise running hundreds of services across cloud, on-prem, and SaaS. They deploy an AI Operations Copilot that helps SREs, platform engineers, and security teams manage infrastructure.
This is not a single agent. It’s an agentic system composed of multiple interacting patterns.

This architecture represents a hybrid, production-grade agent system where multiple specialized agents collaborate under governance rather than one monolithic AI doing everything.
A Supervisor Agent orchestrates the process, activating an Investigation Agent that runs iterative tool-based analysis across logs, metrics, and deployment history, while leveraging long-term memory for historical context. Based on findings, the Supervisor engages a Planner Agent to design remediation steps, which are then carried out by an Executor Agent that interacts with real infrastructure systems.
Structured processes like reporting run through a deterministic workflow engine, and higher-risk actions pass through a human approval checkpoint. Throughout the system, observability, guardrails, and security layers monitor decisions, constrain actions, and enforce access control, creating a layered “agent stack” where autonomy, safety, and human oversight coexist.
🚫 Common Agent Architecture Anti-Patterns
This is where a lot of promising agent projects quietly collapse.
❌ 1. The “God Agent”
One giant prompt, dozens of tools, full autonomy, zero structure.
What goes wrong:
Unpredictable behavior, hard debugging, escalating token costs.
Fix:
Split responsibilities. Introduce planners, supervisors, or workflows.
❌ 2. Tool Soup Without Control Logic
Adding tools ≠ building an agent.
What goes wrong:
The agent flails between tools with no strategy, creating loops or irrelevant actions.
Fix:
Define when tools are allowed, add selection constraints, or move tool choice into a planning phase.
❌ 3. Full Autonomy Too Early
Letting agents take real actions in production without staged control.
What goes wrong:
Cost explosions, bad decisions, broken systems, loss of trust.
Fix:
Start with read-only → simulation → human approval → limited autonomy.
❌ 4. Ignoring State and Memory Boundaries
Either no memory at all or unlimited persistent memory.
What goes wrong:
Stateless agents repeat work; over-stateful agents accumulate stale or biased context.
Fix:
Use scoped, task-specific memory with expiration and validation.
❌ 5. Human-in-the-Loop Everywhere
Overcorrecting by requiring approval for every action.
What goes wrong:
The system becomes slower than manual work. Humans become bottlenecks.
Fix:
Insert human checkpoints only at risk boundaries, not every step.
❌ 6. No Observability
Treating agents like black boxes.
What goes wrong:
When something fails, you have no idea why.
Fix:
Log reasoning traces, tool calls, decision paths, and outcomes. Treat agents like distributed systems.
❌ 7. Treating Agents Like Microservices
Rigid APIs, no feedback loops, no iterative reasoning.
What goes wrong:
You lose the adaptive strength of agents and end up with a slow, expensive function call.
Fix:
Allow controlled loops where the agent can observe and refine.
🧭 Design Pattern Selection Matrix
Most teams don’t fail because they don’t know what agents can do.
They fail because they pick the wrong control structure for the job.
Use this as a starting guide:
| Your System Needs… | Recommended Pattern | Why |
|---|---|---|
| Open-ended reasoning, unknown steps | Single-Agent Tool Loop | Agent can adapt mid-task and choose tools dynamically |
| Multi-step task that must be reviewed or audited | Planner + Executor | Planning is separated from execution for control and visibility |
| High reliability, regulated workflows | Deterministic Workflow + AI Nodes | System controls flow; AI assists without full autonomy |
| Tasks spanning multiple domains or skills | Supervisor Agent | Specialized agents handle different problem types |
| Continuous monitoring and response | Event-Driven Agent | Agent activates only when triggered by relevant signals |
| High-risk decisions requiring human judgment | Human-in-the-Loop | AI proposes; humans approve before action |
| Long-running personalization or context | Memory-Backed Agent | Agent maintains state and history over time |
A Practical Rule of Thumb
If your system:
- Needs flexibility → lean toward autonomous loops
- Needs predictability → lean toward deterministic workflows
- Needs scale across domains → introduce orchestration
- Needs safety → insert human checkpoints
- Needs continuity → add memory
Most production systems will sit in the middle, not the extremes.
𖡎 Final Thought
Agents are not a feature you add. They are a control paradigm you adopt.
Choosing the right design pattern — and avoiding the wrong ones — is the difference between A cool demo and a system you can trust in production.




Leave a Reply