I've actually stopped using the word "harness." I now think in terms of two things: agent runtimes and agent applications.
Agent runtimes should be very small. Their core job is to connect an LLM API to an execution environment. That environment could be a full OS or a language VM, like a JavaScript runtime. Almost all that matters here is robustness. An agent runtime must be able to keep an agent running forever. Literally forever.
Agent applications are everything else. Yes, literally every piece of software in the world.
If software isn't built for agents, they use it through computer use or browser use. These capabilities can be built into the agent runtime or provided by another agent application.
If software is agent-native, agents should be able to use it directly. The experience of an agent using that software—what we call "agent experience"—needs to be carefully designed, at least for now, to make efficient use of both time and tokens.
Another key piece is agent identity. Agent applications should recognize each agent individually, rather than just the browser or computer it's using. This allows each agent's actions to be recorded in detail and audited in real time or after the fact.
Everything we're building at
@botiverse follows from this view.