What an AI harness is, and why harnesses barely matter now
- YT :: https://www.youtube.com/watch?v=ebILGCoN4UU
- Original title :: My last video about ai harnesses
Theo intends this to be his final video on agent harnesses. He builds a layered model of "things engineers care about" in which each new abstraction (C over assembly, Prettier over tabs vs spaces, AI over algorithms, frameworks, languages) makes the layer below stop mattering, and argues harnesses have now joined that pile. He defines LLM, harness, agent, tools and MCP with a chef-in-a-kitchen analogy, explains why T3 Code is an interface rather than a harness, and labels it an ADE (agentic development environment). Main claim: harnesses and models are converging through training, so harness choice is worth roughly 3-5% and loyalists to any one harness are the new Vim die-hards.
Sponsor: Vercel Eve
- Eve is a framework for building agents, positioned like Next.js but for agents.
- An agent is a project of files and folders: an
instructions.mdat the root, a model choice, askillsfolder, TypeScript tools, asandboxdirectory,channels(Slack, Discord, Teams),connections(MCP servers), sub-agents and schedules. - Theo and team used it to build "T3bot" on Discord, which can take over a PR and land it in the real codebase.
Layers of things engineers care about
- From least to most important: tabs vs spaces, function patterns and fundamental algorithms, frameworks, languages, architecture, the engineers, the product.
- Algorithms sit below frameworks and languages on purpose: once you can name an algorithm and tab-complete it, memorising it matters less (how Theo did well in Advent of Code a few years ago).
- Each abstraction raises the line below which nobody has to care: C over per-CPU assembly, editors and Prettier over formatting, AI over functions and algorithms.
- Frameworks have fallen: recent Next.js releases got less Twitter traffic than Theo's random T3 Code posts.
- Languages are next: "a spec on a spec sheet". Theo has rewritten TypeScript projects in Rust, including TypeScript itself.
- Architecture is increasingly within model reach. Claude set up alerting, monitoring and tracing that exposed severe flaws in Cloudflare's pipeline; Cloudflare's CTO asked Theo for more detail.
- Engineers are predisposed to care about things they shouldn't; nobody learned to code by listening to parents saying computers don't matter.
What a harness is
- An LLM only turns text into more text. Everything else comes from the harness.
- Analogy: a great chef in an empty room labelled "kitchen" can only describe food; a programmer in front of a monitor with no keyboard can't code. Humans have UIs, keyboards and mice; LLMs have harnesses.
- Mechanism: the harness tells the model "respond in this syntax and I will read a file / edit a file / run a command / push to GitHub / call an API".
- Classification quiz:
- Twitch and YouTube are interfaces.
- The Claude Agent SDK is a harness: tools, agent loop and context management in Python/TypeScript.
- Claude Code is "an interface that bundles a harness". The Claude Code binary is the harness, the Agent SDK wraps it, the CLI and desktop app are interfaces.
- T3 Code is an interface, not a harness.
- Agent = harness + LLM: the LLM plus the tools, context and system prompt that let it complete tasks.
- Theo's written version, "What is a harness", is on t3.gg for coworkers who won't watch videos. The trigger was someone dunking on him for "building a harness".
Tool plane vs data plane
- Tool plane: what the harness exposes to the LLM ("putting things in the kitchen").
- Pi ships almost nothing but
bash. - Claude Code / Agent SDK ship spawn sub-agent, read file, edit file, read skill, create artifact, bash and more.
- Plugins add tools: the TypeScript plugin adds go-to-definition and find-references; Kua (open-source shared computer use, coming to T3 Code) adds screenshot, click and type. Neither makes TypeScript or Kua a harness.
- Data plane: MCPs, which bring access to things outside the harness ("a cookbook left in the kitchen" the model may or may not read). Examples: Supabase MCP for the product DB, PostHog MCP for analytics.
- Tools are harness-specific code shipped into the harness; MCPs are bindings, a contract under which the harness asks an external program to run code.
- T3 Code puts its features in the T3 Code MCP rather than per-harness tools:
- It doesn't interfere with built-in harness tools, so Claude Code with a $20/$100/$200 sub works in T3 Code unchanged, including skills and plugins.
- The MCP adds history search across harnesses, messaging other threads and spawning sub-agents on any harness (Codex, Antigravity, Grok Build).
- Living one layer above the harness lets one harness "control" another: T3 Code brokers the spawn and passes messages.
Engineers get stuck on the layer they arrived at
- Like music taste fixed in high school, engineers get attached to the layer just above whatever stopped being cool when they started.
- Theo arrived during the framework wars (Next.js vs SvelteKit vs Solid vs Nuxt) and then got into server components, SSR, RSC, ISR, PPR.
- Anecdote: Boris, creator of Claude Code and ex-React team at Meta, had no idea Theo used to be a web dev; both have left that space.
- Skateboarding tangent: learning a trick switch (the unnatural stance) means learning from scratch no matter how good your regular kickflip is, and mastery makes switching harder. Theo values not getting too attached so moving layers is cheap.
- Specialising pays more (e.g. ~$500k/yr at FAANG for a deep JS expert), but locks you in.
- When TypeScript arrived, Theo had no JS sunk cost; many veteran JS devs still argue TypeScript is a waste.
- Bet: at least half of today's Vim users will still use Vim in 5 years and most of them won't be software devs; the half that moved on will earn significantly more.
- Updated stack: editor, then LLM, then harness have all crossed the line. Model loyalists (Codex-only or Claude-only) are as stuck as Vim loyalists.
- "Still using Claude Code in 2026? Pi is more efficient / Oh My Pi makes dumb models smarter" is the new "still on VS Code?". Six months ago the harness debate was worth having; now it isn't.
Users no longer perceive the harness
- Michael Arnaldi, creator of Effect (the kind of person Theo assumed would never leave a layer), tweeted that since using T3 Code he no longer cares which harness is used.
- T3 Code users complain their skills don't work in Codex: they configured them only for Claude Code and don't realise the model picker is a harness picker.
- Analogy: T3 Code is a food court where you pick a kitchen; ask Panda Express for a burrito and you'll be confused.
- Users think they're swapping the whole LLM + harness + interface box when they only swap the interface.
- Theo calls this a net positive: switching harnesses should feel like changing a model string, e.g. for Codex users moving to Claude Code for Opus 5.5.
Harnesses and models are merging
- Previously harnesses were adapted around models; now models are trained on harness data. Claude models behave best in Claude Code; OpenAI models should in Codex, but its system prompt is a mess.
- Running Codex models in Claude Code vs Codex differs by about 3-5%; bigger gaps are an LLM-layer failure that will be fixed.
- OpenCode is easier to build than T3 Code because it doesn't have to support every harness's sub-agent quirks. T3 Code took the hard path so harnesses become an implementation detail.
- To people pitching harnesses that bench better than Claude Code: a 3% win on an old or open-weight model, while paying more for fewer tokens, doesn't make anyone more productive.
So what is T3 Code
- It interfaces with both the human and the harness (never the LLM directly), plus remote machines, environments and harness updates.
- IDE now means "where you write and run code", so T3 Code is an ADE: agentic development environment.
- Theo expects ADEs to stop mattering soon too, as people prompt from Slack, but wants a good open-source, customisable one now. Antigravity (December) showed glimpses but was mostly bad.
- He never wanted to build a harness, only fake ones for benchmarks.
Takeaways
- Pick harness and model by capability and price, like choosing a restaurant without caring about its kitchen.
- If the labs do their job, harnesses disappear into the system and need no more discussion.
- Send confused people the video or the t3.gg article.