From Framework to Harness — How AI Coding Rediscovered Determinism
From Framework to Harness — How AI Coding Rediscovered Determinism
“Five repositories trending in the same week began describing themselves differently. Not framework, but harness, hooks, HUD. Where does this lexical migration point?”
On April 10, 2026, a glance at GitHub Trending’s daily and weekly charts surfaces something striking. Look at the words the top repositories in the AI coding tools category use to describe themselves. Archon sits at 14,411 stars with a daily gain of +185 and writes — “The first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.” hermes-agent is the week’s biggest gainer at +19,765, with the subtitle “The agent that grows with you.” oh-my-codex, the week’s second-biggest gainer at +9,737, describes itself as “Your codex is not alone. Add hooks, agent teams, HUDs.”
The three projects share little. Archon is TypeScript, hermes-agent is Python, oh-my-codex is also TypeScript. The authors differ — Archon is by an independent developer, coleam00; hermes-agent comes from NousResearch, an open-source AI research collective; oh-my-codex is by Korean developer Yeachan-Heo. There is no trace of mutual reference. And yet the trajectories of the words these three projects use line up with uncanny precision.
Archon calls itself a harness builder — not a framework builder. The phrase “grows with you” from hermes-agent implies a relationship where the agent doesn’t pull the user inside itself but rather wraps around the user from the outside and follows along. The three words from oh-my-codex — hooks, teams, HUDs — mean, respectively, “something inserted into an existing flow (hook),” “a horizontal unit of collaboration (team),” and “a cockpit gauge that shows current state (HUD: Heads-Up Display)” in the software engineering tradition. None of these three words belongs to the lexicon of framework. Override, pipeline, orchestrator — those were the words AI agent frameworks used in 2023-2025. Hooks, teams, HUDs come from a different world. A world where you don’t change the existing system, you layer over it.
This essay tracks that lexical migration. The core argument is that the shift “from framework to harness” is not a marketing fad but reflects the structural lessons that the AI coding tools ecosystem has learned from two years of the framework era. At the center of this shift sits a single word — determinism.
1. Archon’s Declaration — “The First Open-Source Harness Builder”
The opening line of Archon’s README is this essay’s starting point. “The first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.” Two sentences. The first is positioning, the second is value proposition. Both deserve unpacking.
“Harness builder” as self-definition
Archon’s choice to call itself a harness builder is conscious. In 2024, a tool with the same functionality would have introduced itself as an “AI coding framework” or an “agent orchestration platform.” The tools of that era did exactly that. LangChain described itself as a “framework for developing applications powered by large language models.” CrewAI was a “framework for orchestrating role-playing, autonomous AI agents.” Framework was effectively the standard self-description for AI agent tools in 2023-2025.
Archon deliberately avoids that word. Harness instead. The question is whether this choice is mere marketing differentiation or whether it reflects a genuine difference in design philosophy.
To find an answer, look at Archon’s second sentence. “Make AI coding deterministic and repeatable.” Deterministic and repeatable. These are not framework adjectives. The framework value proposition usually invokes “easy,” “fast,” “powerful.” Deterministic and repeatable belong to a different lineage — software testing and quality assurance. For a test to be deterministic means the same input yields the same output. For a test to be repeatable means anyone, anywhere, running it any number of times gets the same result.
When Archon declares it will give AI coding these two properties, it is staking a position: it will tame the essential problem of AI coding — that LLMs are probabilistic, so the same prompt can yield different outcomes — at the tooling layer. Where the framework promised “you can do more,” the harness promises “you can do the same thing reliably.” Expansion versus convergence. That is the design philosophy hiding behind the difference in vocabulary.
The weight of “first”
For Archon to claim “the first” presupposes that this category is itself new. Dozens of AI coding frameworks already exist. AI coding harness builders — by Archon’s self-conception — did not. The declaration is a bid to create a new category. Whether that’s an overstatement is for the market to decide, but at minimum, this developer perceives harness as a separate category distinct from framework.
The numbers — 14,411 stars and +185 daily — show the community responding to that perception. GitHub stars don’t guarantee product quality, of course. But the velocity of stars — the daily increment — shows that, at a particular moment, a particular message is drawing community attention. As of April 10, 2026, the message “harness builder” is drawing attention.
2. The Legacy of the LangChain Era — Anatomy of Framework Fatigue
To understand why Archon chose the word harness, we have to look first at the history of the word it’s replacing — framework. The two years from 2023 through 2025 were both the heyday and the burnout period of the AI agent framework.
2023: The spring of abstraction
When LangChain appeared in late 2022, developer reaction was euphoric. Writing the code to call an LLM directly was repetitive and tedious. Managing prompt templates, parsing API responses, chaining multiple calls, connecting external tools — a framework that abstracted away all this boilerplate was, naturally, welcomed. By early 2023, LangChain was one of the fastest-growing open-source projects on GitHub.
Then came AutoGen (Microsoft), CrewAI, LangGraph (the LangChain team’s follow-up). Each took a different approach, but they shared a pattern: putting the user’s work inside a structure the framework defined. LangChain’s Chain, AutoGen’s Agent-to-Agent dialog, CrewAI’s Crew-Task-Agent hierarchy. The user first learned the framework’s mental model, then restructured their problem to fit it.
This is the classic pattern that software engineering calls “inversion of control.” The user’s code doesn’t call the library; the framework calls the user’s code. The locus of control is flipped. Ruby on Rails is the canonical success story — under “convention over configuration,” a developer who conforms to Rails’s way gains enormous productivity. A developer who doesn’t conform suffers.
2024-2025: The winter of abstraction
The same dynamics played out in AI agent frameworks. Early on, conforming to the framework was easy. Simple RAG pipelines, a single agent calling tools, structured Q&A. For these standard cases, LangChain was excellent.
The problems began the moment work strayed from the standard. As agents grew more complex, tool calls nested, error handling needed finer grain, and production requirements (logging, monitoring, cost control, timeouts) piled on, the framework’s abstractions became obstacles. Catching an async error inside a LangChain Chain required understanding LangChain’s internals. Customizing the execution order of CrewAI Tasks meant routing around CrewAI’s internal scheduler. The abstractions were no longer helping; they were standing in the way.
Hacker News and developer blogs grew sharper over time. Posts with titles like “LangChain is not needed,” “Why I stopped using LangChain,” and “The case against AI frameworks” appeared throughout 2024. The critique was consistent — the framework creates more problems than it solves. Too many abstraction layers make debugging hard, framework updates break user code, and the things the framework hides (the details of LLM API calls, the actual contents of prompts, token usage) are exactly what users want to see but can’t.
The fatigue peaked in mid-2025 when Anthropic released the Claude Agent SDK. Its design philosophy was the opposite of the framework approach. Anthropic defined an agent as the combination of three elements — model + tools + context management. How to compose these three elements was left to the developer. “What we provide is the minimal building blocks. How you assemble them is your call.” This is not the framework approach. It’s the SDK approach. And that minimalism — intended or not — opened up a vacuum for the community. The space of “we can build the outer layer that wraps the model and tools ourselves.”
Archon was born in exactly that space.
3. Harness vs Framework — What the Word Has Meant in Software Engineering
The word “harness” that Archon chose is new in AI coding but has decades of history in software engineering. Without that history, the significance of the lexical migration is hard to see.
Test harness: the origin of the term
In software testing, a “test harness” means the infrastructure for executing tests. JUnit’s runner, pytest’s fixture system, Selenium’s WebDriver — these are test harnesses. A test harness does three things. First, prepare the environment in which tests run (setup). Second, execute tests and collect results (execution + collection). Third, clean up (teardown). The harness does not write the test code. It doesn’t intervene in the test logic. It simply ensures the test runs under the right conditions in the right order.
Compare this to a test framework — say, the built-in test framework in Ruby on Rails or Django’s TestCase. A framework dictates how tests should be written. Which class to inherit from. What naming conventions to follow. Which assertion API to use. The framework determines the structure of the test. The harness manages only the execution.
The distinction is subtle but important. In the framework’s world, the user adapts to the framework’s rules. In the harness’s world, the user’s code can take any form, and the harness wraps that code to execute it. If the framework says “come inside,” the harness says “I’ll wrap you from the outside.”
The core property of a harness: non-invasive wrapping
The most important property of a test harness is that it is non-invasive. You can swap out the harness without changing the test code. Swap JUnit’s runner for TestNG’s, and the test logic is unchanged. This is fundamentally different from a framework. Moving from Rails to Sinatra requires rewriting code. Moving from Django to Flask requires rewriting code. A framework couples to the user’s code; a harness separates from it.
Mapped onto AI coding tools, the meaning sharpens. Agent logic written inside a LangChain Chain cannot be used as-is outside LangChain. It depends on LangChain’s abstractions. A workflow designed in CrewAI’s Crew-Task structure won’t work without CrewAI. This is framework coupling.
When Archon calls itself a harness, it’s a declaration to avoid that coupling. Whatever the form of the user’s AI coding workflow — whichever model, whichever tools, whichever prompting strategy — Archon will wrap it from the outside and confer determinism and repeatability. Without touching the user’s code. That is the promise of a harness.
From test harness to agent harness
A previous essay on this blog, “The Model Wasn’t Everything — What Actually Makes a Coding Agent Work”, addressed Sebastian Raschka’s Agent Harness concept. That piece dissected the six components of a harness — Live Repo Context, Prompt Shape, Tool Access, minimizing Context Bloat, Session Memory, Bounded Subagents. I won’t repeat that dissection here. But one thing is worth pointing out.
There’s a connection between Raschka’s choice of the word harness and Archon’s choice of the same word months later. Raschka’s piece was an academic analysis — a proposal of a framework (in the analytical sense) for understanding the structure of coding agents. Archon turns that analysis into a product — an offer of a tool that lets you build that harness yourself. The moment an academic concept becomes a product category, and the fact that it climbed to the top of GitHub Trending, means the community has validated the shift.
4. Historical Analogy — From EJB to Spring, and the Original Meaning of Horse Harness
To understand why this lexical migration matters, let’s look deeply at an analogous moment from software history. The most instructive case is the shift from EJB to Spring in the late 1990s and early 2000s.
EJB: the framework taken to its extreme
Enterprise JavaBeans (EJB), released by Sun Microsystems in 1998, was the standard framework for Java enterprise applications. EJB’s ambitions were vast. Distributed transactions, remote method calls, object persistence, security, concurrency — every hard problem of enterprise software, solved by the framework.
The price was invasive coupling. To use EJB, the developer’s business objects had to implement specific interfaces, inherit specific classes, and ship specific deployment descriptors written in XML. Wrapping a simple calculation in EJB required at least four files: a Home interface, a Remote interface, a Bean implementation class, and a deployment descriptor. Ten lines of business logic needed a hundred lines of boilerplate.
Testing was worse. EJB only ran inside an application server. To unit-test the business logic, you had to spin up the entire app server. This made testing effectively impossible. The developer’s code was so deeply coupled to the framework that, without the framework, the code could not exist.
Does this overlap with LangChain in 2024? Precisely. To test an agent’s logic written inside a LangChain Chain in isolation, you needed LangChain’s runtime. To debug an agent’s behavior, you had to drill through LangChain’s abstraction layers. A point arrived where the complexity the framework introduced exceeded the complexity it removed. The same trajectory EJB walked in the late 1990s.
Spring: wrapping the POJO
In 2002, Rod Johnson published Expert One-on-One J2EE Design and Development, offering a systematic critique of EJB along with an alternative. That was the beginning of Spring Framework. Spring’s core philosophy was a single sentence — respect the POJO (Plain Old Java Object).
A POJO is a pure Java object that doesn’t depend on any framework. It doesn’t implement any specific interface, doesn’t inherit any specific class. Spring left the POJO alone and wrapped it from the outside. Through Dependency Injection, dependencies between objects were injected externally. The object didn’t even need to know it was running inside Spring.
This is precisely the harness approach. Spring didn’t alter the developer’s code. It wrapped the developer’s code and layered enterprise features — transaction management, security, remote invocation — from the outside. The developer’s POJO was testable without the framework. Strip Spring away, and the business logic remained intact. Non-invasive wrapping. The definition of harness.
The result is in the history books. EJB was drastically simplified in 3.0, but by then the tide had turned. Spring became the de facto standard of the Java ecosystem and, twenty years later in 2026, still holds that position. The framework lost; the spirit of the harness won.
The original meaning of horse harness
Now step back one more level and look at the etymology of the English word “harness.” Its oldest meaning is “horse harness” — the apparatus you strap on a horse’s body to transfer the horse’s force to a cart or plow.
Look at the defining traits of a horse harness, and the analogy to the software harness is uncannily exact.
First, it doesn’t change what the horse can do. Putting a harness on a horse doesn’t make the horse faster or stronger. The horse’s power is what it was. What the harness does is direct that power. — Just like an agent harness, which doesn’t alter an LLM’s reasoning capability but controls where that reasoning is aimed.
Second, it’s useless without a horse. A harness without a horse is just leather and metal. — Just like a software harness, which doesn’t function without a model. By contrast, a framework has its own structure and logic, which gives the user a sense that “something exists” even without their code. Generate an empty Rails project and a directory tree and config files are immediately conjured. An empty harness is nothing.
Third, it’s swappable. Put a plow harness on a horse and it tills the field; put a carriage harness on the same horse and it hauls cargo. Same horse, different harness. — Apply different harness configurations to the same model and you get different kinds of work. This is why Archon calls itself a “harness builder.” Not a fixed harness, but a way for users to build a harness fit to their work.
Fourth, and most importantly — it imposes determinism. A horse without a harness can run anywhere. With a harness, its force is delivered in a predictable direction. — This is exactly Archon’s promise: to turn an LLM’s probabilistic output into a deterministic and repeatable workflow.
Overlay the EJB-to-Spring shift with the horse harness metaphor and the outline of what’s happening in AI coding tools in 2026 comes into focus. The AI agent frameworks of 2023-2025 were EJB. Ambitious, comprehensive, invasive. The harness approach of 2026 is Spring. Minimalist, non-invasive, respectful of the user’s code. And in an era when the horse is already strong enough — when frontier models like GPT-5, Claude Opus 4.6, and Gemini 3.1 already have powerful reasoning — what’s needed isn’t a stronger horse, but a better harness.
5. hermes-agent and oh-my-codex — The Paradigm Revealed by “Hooks” and “Grows with you”
If Archon is the only repository to use the word harness explicitly, hermes-agent and oh-my-codex express the same paradigm in a different vocabulary. Dissect their language and you can confirm that the harness paradigm is not the marketing of a single project but a broader current.
hermes-agent: “The agent that grows with you”
In the subtitle of hermes-agent, “The agent that grows with you,” the operative phrase is “with you.” Claiming that an agent grows is nothing new. Every AI tool says it “gets smarter.” But “with you” — alongside you — defines the direction of the relationship.
The framework’s relationship is “come inside.” The user adapts to the framework’s structure. They fit their logic into LangChain’s Chain, register their agent in CrewAI’s Crew, design messages around AutoGen’s conversation protocol. The user moves to the framework.
“Grows with you” runs the opposite direction. The agent comes to where the user is. As the user grows, the agent grows along. As the user’s workflow changes, the agent adjusts. This is a wrapping relationship. The agent wraps the user from the outside and adjusts its wrapping as the user changes. Not a framework relationship — a harness relationship.
It’s worth noting that hermes-agent is the week’s biggest gainer at +19,765. NousResearch already has visibility in open-source AI research, and the Hermes model series carries its own brand power. But the absolute count of 44,309 stars goes beyond simple brand effect. The message “grows with you” is resonating with the developer community.
oh-my-codex: Hooks, Teams, HUDs
oh-my-codex’s subtitle, “Your codex is not alone. Add hooks, agent teams, HUDs,” foregrounds three technical terms. Trace where each comes from and you see the tradition oh-my-codex is trying to place itself within.
Hooks. In software engineering, a hook is “an entry point in an existing system’s execution flow into which user-defined code is inserted.” Git hooks, React hooks, WordPress hooks — all the same pattern. Without modifying the existing system, you hang your code on the entry points the existing system exposes (hook). This is different from the framework’s override pattern. Override replaces existing behavior. Hook preserves existing behavior and inserts additional behavior. Non-destructive extension. A perfect match for the harness’s properties.
For oh-my-codex to add hooks to OpenAI’s Codex CLI means inserting user-defined behavior at certain points without changing Codex’s existing behavior. Insert validation logic before Codex generates code. Apply formatting after generation. Trigger a warning if a particular pattern is detected. An external layer wrapping an existing tool.
Teams. Here “team” means a group of AI agents, but the word choice itself is telling. The word from the framework era was “orchestration.” Orchestration is a model where a central conductor controls each instrument (agent). Hierarchical, centralized. Team is horizontal. Each member has autonomy, collaborating without central direction. CrewAI also uses the metaphor of “crew (the sailors),” but its internal implementation leans closer to central orchestration. For oh-my-codex to use “team” and juxtapose it with hooks suggests that the relationships between agents are also non-invasive (they collaborate without modifying each other’s code).
HUDs. Heads-Up Display. Picture the flight information projected onto a fighter pilot’s helmet visor. Two defining properties. First, the HUD doesn’t obstruct reality. The pilot still looks out the canopy. Information is overlaid on reality. Second, the information is real-time. Not historical data, but the state right now.
Mapped onto AI coding tools — oh-my-codex’s HUD shows the user, in real time, what Codex is doing, without obscuring or altering Codex’s own behavior. Compare this to the framework’s “dashboard.” A dashboard typically shows the framework’s internal state in the framework’s terms. A HUD overlays information onto the user’s field of view. The former is framework-centric; the latter is user-centric.
Synthesize the three words — hooks, teams, HUDs — and oh-my-codex’s design philosophy emerges. Don’t change the existing tool (Codex CLI). Outside the existing tool, build entry points (hooks), layer horizontal collaboration (teams), and overlay real-time state display (HUDs). This is a harness. The word isn’t used directly as in Archon, but the approach is identical.
The weekly +9,737 ascent, together with the total of 19,938 stars, shows the strength of community response to this approach. That a tool by a Korean developer landed at #2 on global weekly GitHub Trending is itself worth noting, but it’s not this essay’s concern. The concern is that the words this tool uses — hooks, teams, HUDs — point in the same direction as Archon’s harness and hermes-agent’s “grows with you.”
6. The Claude Agent SDK and Minimalism — How an External Wrapping Layer Was Invited
If it’s no accident that three repositories moved toward the harness paradigm simultaneously, what triggered the move? Multiple factors, but the most direct catalyst is the minimalist agent definition put forward by Anthropic’s Claude Agent SDK.
“Agent = Model + Tools + Context Management”
The Claude Agent SDK’s agent definition is deliberately minimal. An agent is a model accessing tools and managing context. There is no orchestration in this definition. No workflow. No state machine. No planning. Where LangGraph defined an agent as “a graph of nodes and edges” and CrewAI defined it as “a hierarchy of roles and tasks,” Anthropic reduced the agent to the lowest-level building blocks.
Why this minimalism enabled the harness ecosystem is clear. If a framework already provides a rich structure, there’s no room for an external layer. If LangChain provides orchestration, memory, and tool management all in one, layering yet another tier on top creates duplication and conflict. But if the SDK provides only “model + tools + context management,” there’s room above it for deterministic execution, repeatable workflows, quality gates, and monitoring. Archon stepped exactly into that room.
Extend the analogy: the Claude Agent SDK provides the horse (the model) and the basic reins (tool access). The harness is built by the community. Anthropic didn’t provide a harness — deliberately. By delegating harness design to the community, it opened an ecosystem where many kinds of harnesses can be made for many uses. Plow harness, transport harness, racing harness — each fitting different users’ different needs.
Whether this strategy was deliberate, only Anthropic knows. The result is that the SDK’s minimalism enabled the explosive growth of external projects like harness builders (Archon), hook extensions (oh-my-codex), and adaptive agents (hermes-agent).
A wider context: obra/superpowers and onyx
In the same weekly trending list, obra/superpowers commands an overwhelming presence at 143,000 stars. The project describes itself as a “skills framework & software development methodology.” It uses the word framework, but pairs it with the auxiliary word “methodology.” Methodology is a looser concept than framework. It doesn’t enforce code structure; it proposes ways of working. Not “structure your code like this” but “approach the work like this.” This sits in the middle ground between framework and harness — providing structure without enforcing it.
onyx-dot-app/onyx is an AI chat platform with 26,000 stars, weekly +5,556. Its subtitle: “works with every LLM.” It works with every LLM. This is a platform-agnostic external layer. It doesn’t couple to any specific model; it wraps any model to provide a chat interface. A harness pattern at the chat layer.
Place superpowers and onyx alongside Archon, hermes-agent, and oh-my-codex, and the AI-related projects dominating GitHub Trending in the same week share one direction — wrap existing tools and models from the outside, without changing them. Too many projects line up to call it coincidence.
7. Why Determinism Became the Word of the Moment — Lessons from Agentic Failure
Return to Archon’s second sentence — “Make AI coding deterministic and repeatable”. There’s a reason this sentence appeared in 2026 and not in 2024. In 2024, the value proposition “make AI coding deterministic” would have struggled to find an audience. The concerns of 2024 were “Is AI coding possible?” and “How far can AI go?” Expansion of possibility was the priority. Determinism would have sounded like a limit on possibility.
What made determinism the topic in 2026 is two years of accumulated agentic failure.
Failure mode 1: the impossibility of debugging a non-deterministic workflow
The first problem teams hit when putting AI agents into production was that agent behavior wasn’t reproducible. The same input gave different results. Temperature, micro-changes in prompts, the contents of the context window, the order of tool calls — all vary probabilistically, so a workflow that succeeded once could fail next time. And no one could tell why it failed. The framework had abstracted the intermediate state away.
Debugging works in traditional software because of determinism. If the same input is guaranteed to produce the same output, you can narrow the problem by varying inputs. Without that guarantee in an AI agent, debugging falls to the level of “I ran it again and it worked this time.” That’s unacceptable in production.
Failure mode 2: the control flow hidden by the framework
The second problem teams using frameworks like LangChain or CrewAI reported was that they couldn’t understand the agent’s control flow. In what order did the framework call tools internally? Under what conditions did it retry? How did it recover from an error? All of this was hidden behind the framework’s abstractions.
The attribution bug from a previous essay — the case where Claude Code misattributed its own utterances as user input — is the extreme form of this problem. If message roles are mishandled at the harness layer, the model confidently executes user instructions that never existed. When this kind of problem hides behind framework abstractions, even discovering it is hard. As the author at dwyer.co.za put it, “it’s visible only when it shows up alongside destructive behavior.”
Failure mode 3: “it works, but I don’t know why it works”
The Maganti syntaqlite experience covered in “The Model Wasn’t Everything” is the archetype. On the first build, over 500 tests passed. It “worked.” But Maganti himself didn’t understand why it worked. He couldn’t grasp the structure of the AI-generated code. This is “false reassurance.” The fact that tests pass doesn’t guarantee the health of the system.
This is where the experience connects to the harness paradigm. The harness promises determinism and repeatability. Determinism guarantees “same input, same output.” Repeatability guarantees “you can run the same process again.” With these two properties, you can trace why it worked after the fact. You can observe how outputs shift as you vary inputs. You can repeat the process and isolate the contribution of each step. The basic conditions of scientific method — controlled variables and repeatable experiments — apply to AI coding too.
What the three failures share
The common denominator of all three failure modes is the loss of control. As the framework took control, the developer lost the ability to predict, reproduce, or understand the agent’s behavior. The harness’s promise is to return this control. The agent’s interior — the model’s reasoning — remains probabilistic, but the agent’s exterior — the execution conditions, input construction, output validation, and tool call ordering managed by the harness — can be made deterministic. You can’t control the interior, but you can control the exterior. And controlling the exterior prevents the interior’s uncertainty from propagating to system-wide uncertainty.
This is why Archon put “deterministic and repeatable” at the center of its value proposition. The lesson of two years of agentic failure isn’t “we need stronger models” but “we need more deterministic execution environments.” And a deterministic execution environment is more naturally implemented outside the harness than inside the framework.
8. From Rails to Sinatra, and Back — The Pendulum of Heavy and Light
Push the historical analogy one more step and the position of this transition comes into sharper focus. The Rails vs Sinatra pendulum in the Ruby ecosystem.
The Rails heyday and the backlash
When Ruby on Rails appeared in 2004, it changed the game of web development. Under the philosophy of “Convention over Configuration,” the framework pre-decided things the developer would otherwise have to decide. Directory structure, naming conventions, database mapping, routing — all settled “the Rails way.” Following the conventions delivered astonishing productivity. The demo of building a blog in 15 minutes stunned the world.
But the moment you had to deviate from Rails conventions — non-standard database structures, special authentication logic, microservices architecture — Rails became an obstacle, not an aid. Doing something “not the Rails way” required learning “how to work around Rails.” The paradox of fighting the framework while using it.
Sinatra emerged in 2007 in reaction. Sinatra called itself a “micro-framework,” but in practice it was closer to a routing harness. Take an HTTP request and pass it to the user’s code — that was it. It didn’t enforce directory structure. It didn’t bundle an ORM. It didn’t specify a template engine. The user wrote what they wanted however they wanted, and Sinatra just ran it on top of HTTP.
The same pendulum operated in Python’s ecosystem. Django (framework) versus Flask (micro-harness). Django was “batteries included,” providing authentication, ORM, admin panels, and form handling. Flask provided only routing and template rendering over WSGI.
Both ecosystems show the same pattern. The framework first dominates the market; once complexity crosses a threshold, a lightweight alternative rises. Then features pile onto the lightweight alternative one by one, until eventually it produces another form of “heavy.” The pendulum doesn’t move in only one direction.
Where is the AI agent pendulum
Seen through this pendulum, the AI agent ecosystem is in the segment of moving from Rails to Sinatra. If LangChain, CrewAI, and AutoGen were Rails, the Archon, hermes-agent, and oh-my-codex generation is Sinatra. Out of the framework’s conventions, into a minimalist external layer that respects the user’s code.
But the lesson of history doesn’t end there. Sinatra didn’t replace Rails. Flask didn’t replace Django. The market split. Frameworks remained dominant in standard use cases; lightweight alternatives staked out non-standard cases. Over time, an ecosystem grew on top of the lightweight alternatives — Flask extensions, Sinatra middleware — and the oxymoron of the “lightweight framework” became reality.
The same is likely to happen in the AI agent ecosystem. Harnesses won’t completely replace frameworks. Standard RAG pipelines, simple chatbots, structured workflows — LangChain or its successor will still be efficient there. The harness shines in production, customization, and where determinism is needed. And as time passes, ecosystems will accumulate on top of harnesses, becoming yet another form of “heavy.”
What matters is knowing where the pendulum is now. In April 2026, the pendulum is clearly swinging toward harness. GitHub Trending is the evidence.
9. What It Means for Practitioners — Does Your Agent Have a Harness?
Synthesize the analysis and a few concrete implications fall out for practitioners.
First, audit the vocabulary.
When you evaluate an AI agent tool, pay attention to the words it uses to describe itself. Does it call itself a framework, a harness, or refuse to define a category at all? Words reflect design philosophy. A tool that calls itself a framework expects your code to live inside its structure. A tool that calls itself a harness wraps your code from outside. The difference has large implications for your codebase and workflow.
Second, measure the coupling.
Measure the coupling between the AI agent tool you currently use and your code. If you tore the tool out, how much of your code would survive? Can the logic inside a LangChain Chain be executed without LangChain? The higher the coupling, the higher the cost of swapping tools, and the more the tool’s problems become your problems. Low coupling is the core promise of the harness approach.
Third, demand determinism.
When an AI agent enters production, ask how strongly “same input, same output” can be guaranteed. Full determinism is impossible due to the LLM’s probabilistic nature, but harness-level determinism — same prompt composition, same tool call order, same validation logic — is possible. With it, debugging is feasible; without it, debugging is impossible. Archon’s placement of this at the center of its value proposition is no accident.
Fourth, connect this to the six harness components from the previous essay.
The six components of a harness covered in “The Model Wasn’t Everything” — Live Repo Context, Prompt Shape, Tool Access, minimizing Context Bloat, Session Memory, Bounded Subagents — were the anatomy of the harness. This essay covers the harness’s historical position and ecosystem meaning. Combine them: knowing anatomically what a harness is (the prior essay) and knowing why the harness is rising in the ecosystem now (this essay) lets you judge what kind of harness your workflow needs.
Fifth, remember where the pendulum sits.
Know that the harness isn’t a cure-all. Just as the shift from Rails to Sinatra did not mean Sinatra won, the shift from Framework to Harness does not mean Harness has absolute primacy. Frameworks remain efficient in standard use cases. Harnesses shine in non-standard, production-grade cases where determinism is required. Knowing which kind of case you’re in is the first move.
10. Open Questions — How Far Will the Lexical Migration Go?
What GitHub Trending showed on April 10, 2026 is that the vocabulary of AI coding tools is shifting. From framework to harness. From override to hooks. From dashboard to HUD. From orchestration to team. From “come inside” to “I’ll wrap you from outside.”
Whether this is a fleeting trend or a structural shift, time will answer. But the evidence this essay traces — Archon’s explicit “harness builder” declaration, hermes-agent’s “grows with you,” oh-my-codex’s hooks/teams/HUDs, two years of framework fatigue, the historical precedent of EJB to Spring, the space opened by Claude Agent SDK’s minimalism, the necessity of determinism learned from agentic failure — tips the scale toward structural shift over passing trend.
Several open questions remain.
First, how will harnesses standardize? In test harnesses, JUnit became the de facto standard, and test harnesses in other languages (pytest, RSpec, Jest) adopted similar interfaces. Will agent harnesses see comparable standardization? Archon’s claim of “first” can be read as an attempt to capture this standard.
Second, will frameworks absorb harnesses? Spring began as an alternative to EJB but became a massive framework over time. Will the cycle where harness-born tools accumulate features and turn into frameworks repeat? Or will it be different this time?
Third, will models themselves embed harnesses? Current harnesses are external software layers around the model. If models become more powerful, deterministic execution and repeatability might become features inside the model. If a model itself does tool validation, manages context bloat, and maintains session memory, the role of an external harness shrinks. If that future arrives, how will the harness paradigm evolve?
Fourth, what’s the cost of determinism? Archon’s promise of determinism and repeatability has a cost. Forcing determinism might constrain the LLM’s probabilistic exploration — which sometimes produces unexpectedly excellent results. How will the harness manage the trade-off between determinism and creativity?
These questions have no answers yet. They don’t need to. What matters is the direction of the questions. If the question of 2023-2025 was “What can AI agents do?”, the question of 2026 is “How can AI agents be controlled?” From possibility to control. From expansion to convergence. From framework to harness.
The two sentences Archon used to introduce itself — “the first open-source harness builder for AI coding” and “Make AI coding deterministic and repeatable” — compress the transition of the AI coding tool ecosystem in 2026. In the framework era we gave AI freedom to do more. In the harness era we demand structure to understand and reproduce what AI does. From freedom to discipline. And as the history of software engineering consistently shows, real productive freedom flowers in domains where discipline has first been established.
Horses till fields once a harness is on them. Did the harness take away the horse’s freedom? No. It gave the horse’s force a purpose. AI coding in 2026 has rediscovered determinism for the same reason. The model’s force is already sufficient. Now it’s time to give that force direction.
Sources
- Archon — GitHub Repository — “The first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.” TypeScript, 14,411 stars.
- hermes-agent — GitHub Repository — “The agent that grows with you.” Python, 44,309 stars, weekly +19,765.
- oh-my-codex — GitHub Repository — “OmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs.” TypeScript, 19,938 stars, weekly +9,737.
- obra/superpowers — GitHub Repository — “Skills framework & software development methodology.” 143,000 stars.
- onyx-dot-app/onyx — GitHub Repository — AI chat platform, “works with every LLM.” 26,000 stars, weekly +5,556.
- The Model Wasn’t Everything — What Actually Makes a Coding Agent Work — Previous essay, anatomy of the six components of an Agent Harness.
- Components of a Coding Agent — Sebastian Raschka (2026). Academic analysis of the Agent Harness concept.
- The Rediscovery of the Agent Runtime — Previous essay, analysis of the “same-week simultaneous releases” pattern in the first week of April 2026.
- Claude Code’s $100 Escape and GLM-5.1’s Counterstrike — Previous essay, analysis of LLM lock-in fatigue and framework dependency.