169 comments

[ 5.3 ms ] story [ 47.1 ms ] thread
Clear, relevant, and easy to understand. Thank you for writing this up, I’ll be sharing this link with all my non-tech friends!
Author here. Thanks - I appreciate the feedback
I second that. Not using agents myself but trying to get an idea on how this stuff works, so I always wondered what an "harness" even is, since anyone seems to assume that this is common knowledge. Now it is really clear to me!
Harnesses are the next frontier. If LLMs are electricity, harnesses are the “electronics.” Right now, it’s like an AC vs DC between Claude and ChatGPT, but once that settles, the harnesses will be the actual value providers.

And Pi is the best harness because of the amazing extension system. You can build extensions that turn Pi into a stock trader, software factory, anything. I tried switching to another harness but none have extension functionality as good as Pi.

Even if there is a new harness or agent project, I tell Pi to dig into the codebase and then make me an extension that brings that functionality into Pi. I did it with Prime Intellect’s and Deepseek’s harnesses and those are built on Pi.

This is a plug, but relevant. I recently added a 'build native tools on the fly' functionality to Dirac (https://github.com/dirac-run/dirac) that works like:

1. You can use the '/new-tool' and tell what kind of tool you want (including whether it should be task-scoped, workspace-scoped, or global), the model builds it, the harness runs validation and other tests until the tool is ready

2. The model decides that in such and such task, it would be helpful to have a tool like this, it can build a task-scoped tool.

In either scenario, the tool catalog is rebuilt, and the new tool is instantly available in the next turn.

This type of modification of the harness on the fly to fit the need is the future. The only thing left after that is the mobile front. I think static app store type software as we know it is a thing of the past. You'll only ever need one self modifying app.
i think its the opposite. claude code apparently removed hundreds of lines of system prompt because its not relavent anymore with newer models.

also i think its hard to build general harnesses if they were trained on specific harness architecture.

Yes but Pi has had a minimal system prompt since inception. Skills and Pi extensions let you make a hyper specific harness for specific use cases. For general conversation, harnesses are overkill most times.

There’s evidence of harnesses making a smaller, weaker model perform better than SOTA and some benchmarks ban harnesses because it becomes too easy.

> Harnesses are the next frontier. If LLMs are electricity, harnesses are the “electronics.”

I really though this comment was a satire ...

Sadly, many people have bought into the cult that LLMs will lead to AGI. I guess if that is your worldview then all this babbling about new frontiers makes more sense.

They probably used an LLM to come up with this bizarre metaphor.

> Sadly, many people have bought into the cult that LLMs will lead to AGI

You can never tell if the goomba opinion of the forum will agree we have reached AGI (seen that happen on a few threads lately) or will readily call that a ludicrous proposition.

I find it difficult to understand people who are wildly skeptical about LLMs leading to AGI (assuming we can even agree on what that means). Consider:

- They can already reason better than many humans and are still improving all the time

- Harnesses are improving all the time

- We're already exploring things like long term memory, long term goals, and other things that humans have which LLMs traditionally lack

- An AI agent can read and reason about every piece of AI research ever published, including looking for insights that humans may have missed. A team of humans could never do this even if they dedicated their whole lives to it.

- They can design and execute experiments on a mass scale to determine what does and doesn't work

- Large AI labs have more than sufficient resources and motivation to throw at the problem, and are in fact doing this.

So you believe LLMs (despite their inherent deficiencies vs EBMs [], etc.) can lead to what you'd consider AGI, but you also admit that there is no agreement what AGI actually would be and you further don't provide your own definition? But you are surprised that some (like e.g. Yann LeCun) are skeptical?

If you provide what you'd consider AGI, we may not agree on that definition, but I and other skeptics could at least discuss with you whether A.) that seems reasonably achievable given LLMs inherent limitations and B.) whether any of what you'd listed is actually likely to get us there.

As it stands, neither is possible without knowing what you believe AGI to be, but for what it's worth, coming from someone who both does see LLMs as valuable tools but whose definition for AGI also contains, among other things, reliable self-assessment of factual uncertainty [] and basic arithmetic [0][] without tools or simply scaling training data, I have yet to read any evidence that LLMs can achieve my metric for AGI.

[0] https://logicalintelligence.com/blog/energy-based-model-sudo...

[1] https://arxiv.org/html/2607.19367v1

[2] https://arxiv.org/html/2605.02028v2

In a sense they are the last frontier imo. At some point a harness will be built that can modify itself to fit the needs of the majority of people's workflows and evolve with them.
Then people will want to share and exchange their evolved harnesses. Ways will be found to modularize certain aspects to enable mixing and matching.

I’m thinking of how in cyberpunk, people are replacing their cybernetic enhancements all the time. You could alternatively bioengineer your own body towards the desired outcomes, but that’s more constrained by the trajectory your body has already taken, whereas the promise of cybernetic parts is that they are more independently replaceable. (Probably an illusion in practice, but I’m talking about the fictional ideal.)

As another analogy, monolithic software tends to quickly become hard to change significantly, whereas a plugin architecture tends to be more flexible and modular, and people can share and combine their various plugins.

E = mc^2 + AI
If we take this at face value, this means AI = 0 !
Its literally the same people who were making hyperbolic crypto claims a few years ago.

This entire forum is infested with shameless hype chasers and biological linkedin bots.

What did you bring over from prime-agent? (I use prime-agent as my daily since it launched)

I primarily like how it manages sessions, and how agents can easily reference other sessions.

I've never used Pi but I don't see why you can't use stock codex or claude code for the same purpose, what makes Pi special? I've built plenty of custom harnesses on top of claude code and codex using custom skills or simple markdown instructions and subagents. Never had any issues or limitations with that approach.

I do agree that harnesses are going to extend AI capabilities a lot in the next year, but after reading Pi's page I don't see anything that makes it particularly special in terms of functionality, other than being more provider-agnostic.

For one you can ask Pi to create a TUI extension, so along with the agent interface you can add whatever custom TUI you need, such as portfolio stock tickers, alerts, whatever you want.

Many of my harnesses eventually turn into customized UIs around the chat interface.

I was doing something similar months ago with openclaw. I had skills/scripts that replaced my todo list, expense tracker, habits, whatever etc and then would create a minimal web ui. Then a deploy skill that wires it up to my docker/traefik setup. This eventually led to a custom chat dashboard with those wired up as widgets.
Codex and Claude historically had more bloat in their system prompt and tools. Pi is minimal by design so more adaptable. But to be fair Claude Code is moving in the Pi direction with a small system prompt.
Author here. I think our website could be much clearer - but Pi is fundamentally easier to mold than other harnesses. It’s not magic but it strikes the balance well of letting you shape it extensively without letting you break it.
A harness is the bottom layer of a pie that gets fed into the model. In my project, I count 7 more layers on top of it https://replicated.live/blog/wiki They all affect consistency, coherence, token efficiency. Probably we need some broader term. Like "information architecture", "knowledge architecture"? It's not just shoveling Markdown to nvidias, after all.
Please tell me this is satire, it reads like straight from the depths of LinkedIn where a while loop is seen as the second coming…
Are human HN commenters now starting to speak in a dialect of Claudish?
> If LLMs are electricity, harnesses are the “electronics.” (...) the harnesses will be the actual value providers.

Don't get ahead of yourself. Harnesses are not exactly rocket science and will be a commodity.

The real value providers here are the hardware, then the LLM as a distant second, and at a much larger distance the harness.

https://www.latent.space/p/attention-interface

Labs are now post-training models with Harness so that Harness now gets absorbed into the weights.

My naive intuition is that as harnesses converge on shape and models improve the first party advantage will mostly disappear.
I’d say that harnesses almost by definition are the parts that you want to keep customizable. That won’t get absorbed into the weights.
Depends on your product strategy. If you only care about how your model will be used in the context of a harness (perhaps, specifically the harness that you designed), then the incentive is plainly there to optimize the weights within the context of the harness.
What is being absorbed into weights is tool usage. It is incredibly counterproductive to train models on a specific harness, when instead it can be trained to reason about the tools that it has available to itself and how to best use those tools to accomplish it's goal.

Would you rather hire an engineer that can adopt to your org's prefered tooling, or hire an engineer that can only perform well with their own favorite tools? It's the same thing.

I was saying more the custom skills and extensions that make the harness not a commodity. Yes people will use Claude Code, Codex, or Pi but their customizations will make their harness unique and more powerful.
power = river

hardware = dam

harness = sluice gates

context mgmt = power station

model = generator

output = electricity

Either part can be branded a "commodity" or a "sovereign privilege" depending on supply and demand.

Solar goes all the way up => power is commodity.

Some hyperscaler goes bankrupt => hardware is commodity.

Models get real good => output is a commodity, no profitable problems to solve anymore.

Open source models get good => models are commodity.

The harness is just another codebase for the model to write and optimize. The value is still very much in the model.
> ...once that settles, the harnesses will be the actual value providers.

The words "once that settles" are doing historic levels of work here.

No human on earth has a clear idea whether model technology will settle tomorrow or 100 years from now. The safer bet is that it won't.

There's every reason to expect architectural breakthroughs will keep being discovered and causing nuclear blasts of forward progress.

I don't think so.

What I can see is a world where we end up with a Chromium-shaped harness, a fully featured standard implementation everyone builds against, because doing every single thing yourself would be crazy.

The antithesis to Pi, if you will.

(comment deleted)
I disagree with this. Unlike training models (which requires huge compute), harness development is available to anyone with an editor and ideas. That means that solo devs and small startups can still make meaningful progress.

Also, having only a "standard implementation" makes no sense for a harness. A standard implementation would need to try to be as good as possible at all things. But you'd often want a specialised harness designed for exactly your use case.

I don't see us tinkering with Pi in 5 years.

Some standard solution will emerge, which will be amplified by models being trained specifically to work with it.

It is way too early to tell. If we are comparing to web browsers we are in the early 90s with Netscape, IE, Firefox, etc. I don't even think we are at the point where agent's have a metaphorical JavaScript, we are that early.

The thing that makes everyone build against Chromium is because web browsers are very hard and it is well supported by dev tools like Electron and Playwright.

Harnesses are so easy compared to a web browser, I'm curious what in this world you see that would make building your own harness seem crazy, because I don't see it.

If LLMs are oxen, harnesses are... the harnesses
Both Claude and codex are unappealing, crap, generic agents that you have 0 control over.

Don't understand what people see in them.

I've been getting a little frustrated with having to rearchitect things any time I want to try a new harness. Wrote about my most recent experiments with separating conversation from control loop here and using MCP as the seam here: https://demianbrecht.com/posts/the-harness-within-the-harnes.... This allows me to build a spectrum of agentic to entirely deterministic tools and be able to port them from one harness to another with only a minimal amount of harness-specific config.
The ai hype word for 2026 after agent in 2025 for any LLM powered application.

Well kind of, I wouldn't be surprised to see that some things marketed as agents are actually good old deterministic software.

It's really funny (and a bit obnoxious) to watch the vocabulary from the outside. In 2023 everybody learned the word moat, then it's been agent(ic), from last year there's more talking about harnesses than at a bungee jumping convention. The mot du jour is frontier.

It truly proves like there's a handful of thought leaders on Twitter that everybody follows blindly and start to copy down to the lexicon and parrot everywhere else.

I find the vocabulary used to be disturbingly fascinating, to the degree concepts are being anthropomorphized. It's so pervasive that I cannot help but assume it is entirely deliberate.

The principles by which LLMs functions haven't changed in the last four years. It is still a next-word-predictor, a statistical parrot, if you will. But if you don't understand the mechanisms behind it, you cannot be faulted for thinking this is something much more. Most of it, is pretty devious marketing.

As an example, no LLM model does anything that can be considered "reasoning", or "intelligent" in the traditional sense, but these words are used extensively. "High reasoning model" is a pricing tier. The article in question has an anthropomorphized term in every single sentence. I'll pick a paragraph at random and highlight the cases. If both parties understand the mechanisms, these words are fine, and we do that all that time. The issue is when one sides is mislead to believe that these systems can be relied on in a way that they should not be, leading to people getting hurt.

> > The *translation layer* is what *allows* a *harness* to *work* with different AI models. In some cases, a *harness may decide* to *use* different models within the same *agentic loop*, because different AI *models may excel* at different tasks. The *translation layer* is also a crucial aspect of *harnesses* because they *deliver control* to the end user. It means that someone can take their *AI harness* and use it with a model from Anthropic, or OpenAI, or explore one of the open weight AI models that often deliver great value-for-money (measured by cost-per-task).

The underlying logic isn't remotely as mysterious or mystic as the language makes it seem. A different paragraph:

> > Tools are a set of *capabilities*, written in code, that the model can *“call”*. The *harness describes* the tools and also *provides* the software that is the tool itself. Examples of these tools might include a web search tool, a tool that *allows the model* to write and execute software code, or a tool that *allows the model* to *compose* an email. Critically, the *harness usually* does not *dictate* when and how the *AI* model should *use* the tool. Instead, it simply *makes* the tools available, *describes* them clearly, and *allows* the *AI* model itself to *decide* when and how *it should use* them

My guess is that everything "reliable" in LLM/agentic-coding comes down to either calls to reliable/deterministic tools or providing well-defined success criteria (such as loads of unit tests) for the LLM to throw its stuff at in "agentic loops" until something sticks.
I thought this was the next evolution of the smartphone. One so smart that it does all the thinking for you. You don't even have to be conscious, you just do whatever it tells you too. Oh wait, that's what they do already.
i also like the backpack analogy

the harness is what you take with you on a trip/task

whatever you take with you is not free (system prompt, tools, skills …)

some models are really good even if you bring almost no skills, tools or system prompt

the harness is the complement to the model

the better the model the more minimal the harness can be

harnesses like pi [0] and smol [1]are on the more minimal end of things

[0] https://github.com/earendil-works/pi

[1] https://github.com/smol-env/smol

To me, Before agentic programming a harness was like a mini framework in the app. Like for testing mostly. You’d set up the harness and configure it for your test and it would take care of boilerplate setup / optional reporting / benchmarks ect. Still works for both - but yea need a new word I guess
From a naming terms yes, the closest equivalent of the past is the term "framework". Having written a Go service framework that's how I perceived it and as I started to work on agents, anything related to that became an "agent harness". I guess naming and terms change with different paradigms.
I have a similar mental model to the climbing harness. I think of LLMs as horses and harnesses as the saddle, reins, etc that you put on your horse. You might configure your harness for an individual rider or you might hook together several horses to pull a carriage.
Written using a harness? Too verbose to be read.
Harnesses are hands.
I’ve been working on a harness for accounting agents at my job recently and it’s been a pretty interesting experience.

We originally started with building a CLI tool so our LLMs could more easily interact with our platform. I cannot recommend enough the value of having an internal CLI. It’s both fun to build and extremely useful for agents.

We paired this with skills initially, but found that the way folks built skills was often too prescriptive and limited to the authors own specific function in the company. A 2k line long skill suffers from the same gaps as we do, if an agent is just following a laundry list it’s less likely to reason about the request it’s doing.

So we instead asked ourselves: what if we just _let_ the agent reason about the work to be done and only provided the tools + guardrails to gather context and perform accounting work?

Turns out frontier models are GOOD at what they do, they outperformed our highly prescriptive skills and were able to work across a larger set of tasks even without instruction on how to do those tasks.

It’s a breath of fresh air from the decade of CRUD I’ve worked on, harness engineering is very neat.

So you still have CLIs but they have I presume an help command that describes the capabilities right.

Could you give an example of an accounting guardrail you created?

I’ve also found that Claude and friends are eerily good at using classic Unix CLI tools so I build mine in the same style, not unlike the `gh` CLI from GitHub, though with an agent-first design shape.

Usually I’m returning TSV as a default format and I add a `help-all` subcommand to list every available command at once when needed. Another thing that helps is adding just-in-time context-sensitive hints, such as: user has just run a list query with at least one result. Add a one-liner to the response explaining the command shape for getting the detail view of the first response.

In terms of skill files, I like to have my CLI generate them dynamically at runtime by walking their own current command tree and then feeding that through a text template.

Examples from a public project: https://github.com/radiusmethod/gitlab-kiosk/blob/main/skill...

Yeah the CLI can provide schema for commands via the usual ‘—help’ syntax, so agents are able to discover + explore commands on their own.

As for an example: if our agent wants to book a journal entry to cash accounts for a client, it MUST provide receipt and directly link the transaction from the clients bank feed, if it attempts to do so without the requisite information we deny the tool call and ask the agent to escalate back to the client for proof of receipt.

Often times this results in the agent not doing the work and instead sending a message back to the client asking for proof of the transaction.

For humans on our platform there may be valid situations where we’d want to allow this, but for our agent this is a hard guardrail thus why it’s not just standard validation for any JE posting on our platform.

Can you post a generic version of code for this somewhere (e.g. codeberg or whatever)?

I find your description intriguing but I'd like to see it to make sure I understand it.

Sorry I can't share what we're doing here directly!

I will however say that this page alone does a pretty good job of illustrating what an agent harness might look like: https://docs.agno.com/tools/overview

* System prompt

* Tool calls

* Model definition

Everything else (guards / etc) can just exist as code abstractions between the agent layer and the tool layer.

I've been building a harness (on top of Pi for that matter) and have had similar experiences. Pi itself helps a lot with it being extensible by design but it's definitely been a challenge to make certain things work in an expected way.

The native app I'm building on top, which I hope people who are less technical (or not technical at all) will use, is even more interesting because it's not just supposed to shell out to the CLI for everything and needs its own state.

This is the same "tension" I keep seeing in my day job. Some people approach LLMs like they're writing code. They give a long list of detailed instructions for specific scenarios. When I use LLMs I leave things as open as possible. I just give them the information they need and my ask.

As you say frontier models are very good at figuring things out. Being too prescriptive is counterproductive, it over-constrains the model, it fills the context with conflicting instructions, it reduces the ability of the agent to respond to novel situations (and really in real life most situations are going to be novel). If you want to follow a process or a checklist you probably shouldn't use an LLM, or you should use it for some sub-tasks in the checklist/process but something more deterministic to work through the list.

That works for well trod paths, e.g “fix ci” works exceedingly well. “why app slow” obviously doesn’t work because the task is underspecified. But in order to properly specify you either need an experienced engineer who knows how to narrow the problem domain, or you have to provide some template instructions/output formats (e.g, skills) which will invariably never fit the problem perfectly
I wouldn't agree. Sota models can do self-directed sampling, profiling, benchmarking, read call trees, etc. to give you a report of the app's bottlenecks and then recommend solutions that can be vetted.

I do this constantly.

As the upstream comment points you, you don't need to specify. Sota models are that good. And by being overprescriptive you can accidentally shut off branches that they would've taken, downgrading the quality of their work.

In my experience if you’re at the point where you have something to sample then the hard part is already done.

In a perfect world everything is covered by distributed tracing and the problems are only in your application code and the agent just needs to find the data

In reality the data is often missing or misleading. “Your observability sucks”? Yeah, but that’s life

> “Your observability sucks”? Yeah, but that’s life

You could start by asking your AI "help me add better observability to our stack"

Believe it or not, you can’t just run a profiler on everyone’s browser
I use skills. The skills are not typically "how to perform a task in detail" they are more about what relevant tools and knowledge are required to work in a domain. That is I give the LLM the information it needs about the system but not a sequence of how to accomplish a task. I treat it more like a human and less like a computer.
> . “why app slow” obviously doesn’t work because the task is underspecified.

Not always. In my case LLM goes to grafana mcp, pulls metrics/traces/cpu profiles. Figures out what is slow and proposes a solution.

In my cases it always used linux perf to sample the calls, because that's the best tool for my jobs. Never had to tell it to use instrumentation.
> “why app slow” obviously doesn’t work because the task is underspecified

Definitely not true and like everyone else is saying, shows how people still underestimate these models.

I have been working on a simple vite + react app lately and commonly ask Gemini/Antigravity to just "improve speeds", "x is running slow, check it out" and have no complaints.

I’m not surprised it works on a simple app.
disturbingly, when I was using antigravity with gemini pro it was actually quite good at working out 'why app slow' types of problems. Maybe I've been lucky but it seems really good at determining why something might be wrong. It may ask for more logging or diagnostics and run for a long time but it was really digging in and making changes or suggestions to solve the problems.
Honestly I have had great success with “I’m worried here about cpu and latency, please rigorously profile and propose fixes”.

The models can build micro-benchmarks with a level of rigor that few could muster for a new feature.

I agree that if the issue is architectural they will struggle to understand that scope.

> When I use LLMs I leave things as open as possible. I just give them the information they need and my ask.

How do you handle security?

Both “internally” against e.g. data loss, I’m assuming via limiting the harness, and “externally”, i.e. stuff like prompt injection risks?

Sandboxing and reviewing the output. I don't have any incredible insight to add here- that's the same process I think most of us are doing.
This vibe people sentiment is not wrong per se.

If you want outlier performance from these models it is best to just ask in the most high level prompt of the most minimal harness and let them loose.

Any extra information reduces their performance.

However, as often as these models output masterpieces, they also produce utter garbage so our current choice is for them to have a process to follow that can be reviewed by humans and LLMs.

> If you want to follow a process or a checklist you probably shouldn't use an LLM

I like to externalize tasks as markdown files with checklists, they are still planned by agents but I can pass the plan around to judge agents and fix some errors before implementing.

I also have the coding agents comment on each closed checklist item, so the same file becomes a log of what happened. This goes to the implementation judge. I can also switch agents anytime, or resume a task days later no problem.

I am avoiding internally provided tools for todo lists and planning because they do not leave the same artifact trail which makes judging with separate agents easy.

The problem is that even Fable still make trivial yet high impact mistake when let on their own, and then you'd need to read the whole code to catch them…

Meanwhile they are very good at implementating an explicit algorithm that you feed it to them.

The trick is to set up the harness so that the solution is easy to verify - you’ve profited as long as verification is cheaper than building, but ideally verification is close to automatic (not always achievable of course).

Generally you want to include objective/repeatable outputs as citations.

An example would be, if you invest in an awesome layered test rig (browser test, fuzz/property tests, very well reviewed unit/integration tests, etc.) then you should be able to add features by just reading the acceptance test and scanning unit tests.

> then you should be able to add features by just reading the acceptance test and scanning unit tests.

That “just” is bearing a lot of weight though as tests are often even longer than the code itself, in addition to being excruciating to review.

> Some people approach LLMs like they're writing code. They give a long list of detailed instructions for specific scenarios. When I use LLMs I leave things as open as possible. I just give them the information they need and my ask.

Hm, but thats ok right? I mean some people like to code with LLM and other people like to let LLM code for them.. no?

I think you've really hit the mark on how the harness should be structured:

1. Guardrails - deterministic, social intelligence, team alignment & accountability 2. Learn by doing 3. make it stupid easy for the agent to research and access data 4. DRY

Research supports this. Try picking up some ideas from my harness: https://github.com/rush86999/atom

Hi. This is very interesting, could you link to the research? There is a dearth of proper research studies that A/B test what approach is best in terms of harness structure based on repeatable benchmark data with relevant sample uses-cases.
Reasoning / self-consistency (voter in core/llm/self_consistency_voter.py): - Wang et al. Self-Consistency Improves Chain-of-Thought — ICLR 2023, Google Brain, 4k+ cites — https://arxiv.org/abs/2203.11171 — N-sample majority vote we use verbatim - Chen et al. Universal Self-Consistency — ICML 2024 — https://arxiv.org/abs/2311.17311 — judge fallback when no hash collides - Soft Self-Consistency — ACL 2024 — https://aclanthology.org/2024.acl-short.28.pdf - Too Consistent to Detect — EMNLP 2025 — https://aclanthology.org/2025.emnlp-main.238/ — why SC doesn't fix systematic bias - Self-Consistency Falls Short — TACL — https://direct.mit.org/tacl/article/doi/10.1162/TACL.a.625/ — position-bias failure mode Routing / cost (stage router + BPC in core/llm/stage_router.py): - FrugalGPT — arXiv:2305.05176 — https://arxiv.org/abs/2305.05176 — cascades match GPT-4 at 98% cost reduction - Hybrid LLM — ICLR 2024 — https://arxiv.org/abs/2404.14618 — 40% fewer large-model calls, zero quality drop - RouteLLM — arXiv:2406.18665 — https://arxiv.org/abs/2406.18665 — >2x cost cut without quality loss - RouterBench — arXiv:2403.12031 — caveat that gains are domain-fragile, hence our shadow-first calibration Memory / retrieval (turn-facts + hybrid search core/hybrid_search/): - MemGPT — arXiv:2310.08560 UC Berkeley — https://arxiv.org/abs/2310.08560 — tiered memory OS - Zep/Graphiti — arXiv:2501.13956 — https://arxiv.org/abs/2501.13956 — temporal knowledge graphs (we use bi-temporal edges) - RRF — Cormack et al. SIGIR 2009 — rank fusion k=60 for BM25+vector, no score normalization needed Multi-agent / org (core/agent_radio/, core/fleet_orchestration/): - Stanford Virtual Biotech — bioRxiv 2026.02.23.707551, Zou Lab — https://www.biorxiv.org/content/10.64898/2026.02.23.707551v1 — 37k agents, CSO->scientists->reviewer->re-delegation, Merck external validation of B7-H3 design. Basis for VFS + hierarchy. - Debate or Vote (Choi & Li) — NeurIPS 2025 — https://arxiv.org/abs/2508.17536 — MAD gains = majority vote, not debate (why we didn't build debate) Sandbox / eval: - DABstep — arXiv:2506.23719 — https://arxiv.org/abs/2506.23719 — 450 real Adyen tasks, justifies code-interpreter + sandbox isolation - Spotlighting — Microsoft Research — https://arxiv.org/abs/2403.14720 — provenance delimiters cut injection ASR 50% -> <2% - Inten...
This doesn’t seem to work when the harness feeds images and asks the agent to do things in the real world. It fails to devise ways to keep track of its progress and fails to utilize its tools effectively.
This couldn't have been said a year ago. It's amazing to watch. I have been building harnesses and applying networked agents to various domains since the GPT-3 API came out, and even two years ago, frontier models were just not at acceptable quality to make these harnesses useful. Everything changed overnight near the end of 2025. What will next year hold?
I’ve noticed it’s the performance that suffers when agents are paired with more than a single CLI and non-prescriptive skills. Since it seems to be out of its training data, anything non-trivial and the model just tries to brute force its way to a solution. Maybe it’s also about building them as self-improving, though I’ve been doing it manually for a CLI we don’t own.

It seems to be art at the moment.

Why a CLI over an MCP or even straight restful API with appropriate schema docs?
I don't have a strong argument for or against using MCP, it honestly comes down to familiarity.

In my own opinion, a CLI tool is going to be much more familiar ground for engineers -- I wouldn't expect the 200+ engineers at my company to all have read and understood the paradigms of the MCP protocol but I _would_ expect all of us to have a strong understanding of CLI tools and what a good/bad tool is.

Does anyone have a suggestion for a harness that is good at handoff?

When I say handoff, I mean:

  * handoff from a terminal CLI to webui (on a phone)? 
  * handoff from one team member, to another?
  * handoff from one communication modality, like writing a prompt in a TUI, to email? 
  * handoff from one model to another
Does such a thing exist?

I used to think that a PR would be a good place to centralize all this. Who cares what IDE, or developer, or location. But, now I feel like an agent harness might contain that better.

I'm tempted to experiment with Pi to configure such a thing. But, perhaps there are patterns out there already with a harness I have not considered.

Sounds like you want an orchestration.

Let's assume handoff happens when one "agent" finishes its work on one task, i.e. "submit a PR".

At that point you want to exit the agent/clear context etc (any context the next actor needs should be in the handoff artifact).

And the orchestrator calls the next agent with the artifact.

Claude can do this with subagents. If you want to get more serious, I'd look at "durable workflows" and check out what the pi people have to say: https://earendil-works.github.io/absurd/ https://earendil-works.github.io/absurd/patterns/pi-ai-agent...

you should also look at dbos https://www.dbos.dev/

And then do a search for these terms on HN and get some idea of their shortcomings vs a 'real' orchestration tool like Airflow or Dagster

I do this all the time in my workflow. Use any harness. Ask it to create a markdown file with the information required for the handoff. Use that downstream. Keep a "repo" of those markdown files. Are you trying to orchestrate or manage this sort of process?
The session is "just" the raw chat history in it's entirety (human and agent) and can be disseminated as such. This is what enables swapping between models, you simply send the whole context.

Not sure how others do it, but opencode stores sessions in a sqlite db and you can extract them and share them as needed.

https://opencode.ai/v2/docs/api/session/v2-session-export

Pro-tip: Building your own extremely minimal harness takes about 15m and is both fun and enlightening. Agents are unsurprisingly quite good at it, but ask them to walk you through it step by step.

For a truly "handoff-able" session, you also need to store the data it was working on. In most cases, these are the git patches
Another common format is `jsonl`, basically a json object per line containing a message
Hermes has /handoff to go from cli or desktop to IM, possibly other ways.
I'm working on this at my startup, amika.dev

Open core is here: https://github.com/gofixpoint/amika

We're designing it like a meta-harness actually. The goal is to let users put any agent(s) (Claude, Codex, Pi, OpenCode) on a sandbox on any computer (local, K8S pod, cloud VPS, sandbox provider, etc.)

And then be able to interact with the agent(s) from anywhere: terminal, phone, web, or load them into the Codex, Claude, or Cursor apps

Under the hood, I think of part of our tech like mashing together Tailscale and Firecracker.

The edges are rough right now, but if you kick the tires, I appreciate any feedback! (my email is dylan@amika.dev)

And besides what we're building, there are cool projects like Amp Orbs, YC's QM harness, etc.

Not really solving all your cases, but I found tmux (or herdr) on a home server works pretty well. I just ssh into my home server and continue where I left off with the same claude/opencode open.

On a longer term, I think "assistant" style harnesses might help here, like vellum.ai. I no longer use that, but I asked it to create an ACP proxy through iroh (basically tailscale but on the application layer), and it managed to control claude on another device of mine. A friend did similar stuff with tailscale.

I have started writing a hobby harness with a web interface where I would like to support this "ACP proxy" mode natively, and also to make the models aware of different devices in some way and "move" work between them.

I basically do this, tmux via tailscale. But, I often get inspiration and want to jump into a webapp from my phone, or review.

I've been playing with pi and the remote webui extension. I don't love it; it has a lot of chrome that obscures what I want to do. I just want a simple way to review the progress so far, and keep tweaking with minimal setup. Then, jump back into tmux when I'm back on my computer.

Thanks for your comments.

I found both Tmux and Herdr to be insufferable, but they work for many people. I'm not in the business of managing 17 agents at the same time (I have 1 to 4 agents I manage, those might have sub-agents, but I'm not a micro-manager). The hand-off problem itself is trivial, it is a txt file that needs to be sent around, but I haven't seen any good tools giving good UX for it yet.

1. Means running somewhere that is not your computer. I just use my personal server for this.

2. Should probably be done in the repo. Just add the context file in a dedicated sub directory. At this point I think these kinds of artefacts are part of the SE process, and fair to check into source control.

3. Can be done by letting the TUI write/draft emails via MCP.

4. Can be done with something like OpenCode or PiCode, which just allows you to switch in their TUI interface. Beware though, context has to be re-ingested, so it costs a couple of cents.

But again, in the end context is just a file. By switching models, you are paying the price of not having any context cached, but for manual steps that's usually not super relevant. Just be careful about adding these kinds of things to automated workflows, as a cost like 25c can add up when agents run amok.

I think a harness is kind of anything around the intelligence that allows the intelligence to be applied towards something, some sort of task. A great (if off-color) example I remember hearing was how Steven Hawking was brilliant, but really needed that computer setup to be able to apply his intelligence. It really stands out to me as such a clear visual example of what a harness actually is.

Anyway I've been building my own harness on top of pi- www.freepi.ai (it's based on Pi, but now I have an OpenAI compatible endpoint so I'm thinking of it more like free-api :-) ). Basically ad+training supported so I can offer completely free inference. It's really important to me that we don't have harnesses and intelligence trapped in a "have and have not" world. If we don't all have access to intelligence we will end up in a dark place.

Thats again where the visual of Steven Hawking and the wheelchair really stand out in my mind. It's not enough to have the raw intelligence, we need a really good wheelchair too.

Great example of writing about AI that maintains a human voice. Starting off the post with a picture of the author + nod to real-world experience (climbing) is a reasonably strong “this is not slop” signal.
apparently its an easy way to get on HN, seems like a great blogspam target
>most popular harness writes a blog about harnesses
From these comments, it seems like people still don't understand what harnesses are... The point is you shouldn't build a harness, you should use a harness and change its system prompt, the tools it has, MCPs it has, give it skills, etc, to make it work for your usecase. You aren't "building a harness on top of pi" if all you're doing is the above. You're just using the harness to connect different things to the LLM.
Author here. It’s ironic because this post was clearly geared towards non-hackers. But now that we’re here.. the other analogy I considered presenting was:

harness = chassis, model = engine, fuel = tokens, agent = car

I’m curious what y’all might think and whether that analogy carries more explanatory power

The first analogy that comes to mind, growing out of "harness", is more like harness = harness, model = horse (rather than harness as in climbing harness).

I guess you could say that tokens = hay, and agent = horse and cart, from there? Not sure how useful the hay part is but you could observe from the second that there are many different things you could harness a horse to (also a plough, or a coach, or just a saddle) based on your goal.

I wonder if I'm the only person whose first analogy that came to mind was: model = toddler, harness = baby bouncing jumper harness
Although obviously unserious, I would argue a baby harness is mostly the opposite of what an agent harness does. A baby harness constrains and contains the baby, while an agent harness controls but also empowers the agent.
I'm a climber so I'm biased but I really liked your climbing harness example because of the configuration you're able to easily make to the harness.

Saying the harness is like a car's chassis doesn't work as well for me because the chassis isn't as configurable as a climbing harness for as little work.

Getting deeper into the climbing analogy you can even swap out the harnesses themselves for wildly different climbs. Like using Claude Code with a bunch of agents for medical software (climbing K2 where that extra padding comes in super handy) and pi.dev with a local model for a respectable web project (sport route where you'll be back in a few hours and it's safe to be a little more exposed).

I'm glad your article made HN, and thank you for pi!

Thanks for these thoughts. Super insightful and appreciated
I actually use the computer as a metaphor. The LLM is the CPU. The harness is the motherboard which controls communication between the CPU and other components like memory, hardrive, and inputs. In other words, how the LLM interacts with the outside world, and outside world with the LLM.

I've been building coding harnesses since 2021 and believed in their value for a long time. Harnesses matter a lot, look at what claude did for Anthropic.

I feel like harnesses will become massively important for enterprise AI agents.

Right now every tool is shipping some kind of AI agent, but I can’t help but feel that AI agents in large companies will eventually be some kind of internal app with internal MCPs, CLIs, APIs etc.

There might be different harnesses for different use cases that different people have different levels of access to.

This would make sense for the platform/infrastructure engineers who can build a modular harness that a person or team can get access to.

You could have agents team members use locally that have memory enabled for personalization and then agents that anyone can use to ask questions about company context, which wouldn’t personalize things.