Workflow builders, frameworks, harnesses, and runtimes, and when to use each https://x.com/i/article/2110855662821609472
Four Ways to Build an AI Agent
Vendors use the same words for different things. LangChain calls LangGraph a runtime. Microsoft calls Copilot Studio's agent loop a harness. OpenAI's Agents SDK is a framework, but Anthropic's Claude Agent SDK is a harness.
We group the options into four ways to build an agent. They differ in how much of the agent you write yourself and how much someone else runs for you.
The Short Version
Most production systems end up using more than one. Stripe's coding agents, for example, run a fork of the Goose harness on an isolated dev machine, with fixed steps in code that run the linters and push the result.
Workflow Builders
A workflow builder is a canvas where you wire steps together: a trigger, some API calls, an AI step, an email. In most builders, that AI step is now a real agent loop. n8n's AI Agent node lets the model decide which tools to call, and so does AI by Zapier.
Use one when the process is mostly fixed and the model makes a few decisions inside it, like routing a support ticket or summarizing a lead before it goes into the CRM. They're also the right call when the people who own the process aren't engineers, or when you need hundreds of app integrations on day one.
They get harder as the agent gets bigger. Large flows get hard to follow and review. Per-task pricing adds up when an agent loops through dozens of tool calls. And if agents run for hours or wait on approvals, check how many runs can be active at once and what happens to a waiting run after a crash.
Check that a builder will be around before you commit to it. Flowise shut down in August, and its team said developers were moving to coding agents. OpenAI is shutting down Agent Builder on November 30, 2026, and pointing people to its Agents SDK. The bigger builders are turning their workflows into tools that agents can call over MCP.
The main options: n8n, Zapier, Make, Microsoft Copilot Studio.
Agent Frameworks
A framework is a library you write the agent with. You define the tools and the logic around them, and it gives you model calls, memory, multi-agent patterns, and usually a basic loop you can change or replace.
Use one when the agent is part of your product and you need control: which tools and context the model sees on each step, mixing fixed steps with agent steps, low latency, or any model you want.
The common complaint is that frameworks hide the prompts and make agents harder to debug. Anthropic's advice is still to start with the model API directly and add a framework only when you need one. Before you adopt one, check that you can see the exact prompts it sends, swap out its defaults, and upgrade it without rewriting your app.
Frameworks are also turning into harnesses. LangChain calls its create_agent "a minimal, highly configurable agent harness". Pydantic AI 2.0 and AWS Strands now lead with a ready-made agent. Vercel's AI SDK 7 can run Claude Code, Codex, OpenCode, or Pi directly inside your app.
The main options: LangChain and LangGraph, OpenAI Agents SDK, Vercel AI SDK, Mastra.
Agent Harnesses
A harness is a ready-made agent loop. It calls the model, runs tools like the shell and file edits, compacts the conversation when it gets long, and keeps going until the task is done. You customize it mainly through the system prompt and the tools. Claude Code without the terminal UI is a harness. @kartiksmath wrote more about what a harness is and why it matters less than people think.
Use one when the task looks like using a computer: writing code, researching, editing files, running commands. You get a working agent without writing the loop, compaction, or subagents yourself.
Harnesses start out built for one person on one machine. To serve many users, you add session storage, isolation, and recovery around them. The Claude Agent SDK, for example, starts a separate CLI process for every session and saves sessions as local files by default. You can mirror them to external storage, but files on the machine need their own backup, a permission prompt isn't a sandbox, and a turn interrupted by a crash needs recovery logic. Open harnesses can run on a durable execution engine step by step, the way Deep Agents runs on LangGraph. The Claude Agent SDK is closed, so it resumes from its saved session instead, and a step cut off by a crash may run again. Model support varies too. The Claude Agent SDK only runs Claude, while Codex, OpenCode, and Pi can use other providers.
The main options: Claude Code and the Claude Agent SDK, Codex, OpenCode, Pi.
Runtimes and Managed Agent Platforms
"Runtime" means two different things, and it helps to separate them.
The first is a durable execution engine: LangGraph, Temporal, Inngest, Restate, or DBOS. It saves progress at the steps you define, so a run can pick up where it left off after a crash. This is what LangChain means by "agent runtimes". You still bring the agent and the machines it runs on.
The second is a managed agent platform. It runs agents for you behind an API, with sessions, sandboxes, tools, and access control.
They solve different problems. A hosted session doesn't make your own loop resumable, and Temporal doesn't give you a sandbox.
Use a managed platform when agents serve many users, run for a long time, wait on people, or run untrusted code, and you'd rather a vendor ran those pieces. Self-hosting still makes sense when you already have the infrastructure or need more control.
The hardest piece to build yourself is usually the session history. Anthropic keeps a log of everything that happened outside the harness, so the harness and the sandbox can fail and get replaced without losing the agent. Omnara works the same way. If you run a harness yourself, you'll need something like that log.
Whichever you pick, test two things before launch. First, kill the worker right after a tool changes something outside the agent, like sending an email or opening a pull request. A retry can run that action again, so tools that change things need to be safe to repeat. With a durable engine, give each of those actions its own step, so a retry doesn't redo the ones that already succeeded. Second, check what survives a restart: the conversation, the files on the machine, and any running processes are saved separately, and a platform that keeps the conversation can still lose the machine.
The main options:
- Claude Managed Agents. Anthropic's, in beta. Claude models only.
- OpenAI's Agents API. The Codex harness run by OpenAI, in beta. OpenAI models only.
- Managed Agents in the Gemini API. Google's Antigravity harness, in preview. Gemini models only.
- LangChain Managed Deep Agents. Deep Agents hosted on LangSmith, in beta.
- Amazon Bedrock AgentCore. Hosts agent code from any framework with any model, or runs a loop for you built on Strands. Generally available.
- Omnara. Open source, with its own agent loop that works with any model and any machine, hosted or self-hosted.
We compared these platforms in more detail in Claude Managed Agents alternatives.
Choosing what to own
These aren’t four stages you graduate through. A workflow builder can be the right long-term choice, and a managed platform isn’t a requirement for production. The real question is how much of the agent's infrastructure you want to build and maintain yourself, and how much you want someone else to run.
