Today I’m writing about something that sounds a bit complex. A lot of experienced tech folks and junior developers have been asking me about it, and I’ve noticed that many people use these tools every day without really understanding how they work. So I put together this slightly technical post to explain it simply.
let start it :
Humans use interfaces
You don’t write code every time you want your computer to do something. You click buttons, press shortcuts, type commands.
That’s an interface: a terminal, a website, or an app.
You see the buttons, not the code underneath.
LLMs use harnesses
On its own, an LLM can only do one thing: generate text.
It can’t click. It can’t open files. It can’t run anything.
So we give it tools like:
read_file to read files
edit_file to change files
bash to run commands
search to find info online
The LLM “calls” a tool by writing text in a special format, for example:
<read_file name="README.md">
But that’s still just text. Nothing happens until something reads it and runs the real code.
So what is a harness?
A harness is the system that gives an LLM:
Tools that actually do things
A text format for calling those tools
A parser that detects tool calls and runs the code
A way to send the results back to the LLM
A list of available tools and how to use them
That’s the harness.
“Wait, isn’t Claude Code a harness?”
Kind of. Apps like Claude Code and Codex have two parts:
The interface: the terminal UI or desktop app you see
The harness: the engine underneath that runs the tools
Claude Code runs on the Anthropic Agent SDK. Codex runs on the Codex App Server.
The confusion comes from the fact that these apps bake the harness right in. But a harness is a separate piece, and the same one can power other apps too. Cursor’s harness, for example, powers other products besides Cursor.
Think of a harness like a kitchen
A kitchen has pots, pans, knives, and blenders, but no kitchen has every tool every chef needs.
Good harnesses let you bring your own tools.
Claude Code and Codex come with lots of built in tools, and you can add more with plugins like code checkers or computer control.
Neither you nor the LLM can see the tools directly. The harness is what exposes them, to the LLM and to the interface.
Where does MCP fit in?
MCP (Model Context Protocol) is a standard that lets harnesses reach external things.
A tool means “run this code here.”
An MCP means “send a request somewhere else.”
Want Claude to read your emails? MCP.
Want Codex to check your site analytics? MCP.
Simple analogy:
Tools are like Chrome extensions, installed and running on your machine.
MCPs are like websites. No install needed, just the URL.
In kitchen terms, MCPs are like recipes. They describe how to do something, but they aren’t the kitchen itself.
So what is an AI agent?
Here’s the simple formula:
LLM + Harness = Agent
The LLM can think but can’t act.
The harness can act but can’t think.
Together, they become an agent.
This combination is often called the agent loop, because it really is just a loop:
The LLM decides what to do, the harness runs the tool, the tool’s result goes back to the LLM, and it repeats until the task is done.
And most “different agents” out there are really just different harness setups: different tools, instructions, and MCP servers.
Now you know more about harnesses than most people talking about AI agents.
Share this with someone who keeps saying “agent” without knowing what it means!
I’m looking for 15 people to help test an app on the Google Play Store. If you’re interested in helping and supporting the testing process, please contact me!
Dana White sits down with Steven Bartlett on The Diary of a CEO to talk about his journey, the mindset behind his success, leadership, failure, discipline, and what it really takes to build something great.