# Best agent harness: open source, and its rules show in a diff

> Picking an agent harness comes down to one question a demo cannot answer: when you change a rule, does a reviewer see it in a diff? The table puts four on that test and on what each costs to start. Kortix is the open-source CompanyOS and my pick; I’m part of the Kortix team, so weigh that accordingly.

URL: https://harnessengineeringguide.com/best-agent-harness

## Four agent harnesses, and where each one keeps its rules

The row that decides the pick is the one about where a rule change lands.

| | Kortix (recommended) | Claude Code | TrueForge | DeepSeek Harness |
| --- | --- | --- | --- | --- |
| Open source | Yes | No | Yes | Yes |
| What it is | The open-source CompanyOS: agents, skills, memory and connectors in one repo | An agentic coding tool for your terminal, IDE, desktop and browser | The runtime layer that turns an LLM into a working agent | An open-source harness from DeepSeek, built on Cordis plugins |
| Where its rules live | agents/<name>.md and kortix.yaml, in your repository | .claude/settings.json, committed; CLAUDE.md for instructions | Catalogs you configure once; agents pick from them | Plugins, installed or written in chat |
| A rule change lands as | A diff in the repo, reviewed before merge | A diff in the committed settings file | A catalog edit, then a selection in the UI | A plugin, written inside the chat session |
| Where the agent runs | One isolated sandbox per session, its own machine and branch | Terminal, IDE, desktop app, or browser | One local process on SQLite, or hosted on Postgres | A desktop app, or a web UI from code |
| Cost to start | $0, 500 credits a month, one project | Included in Claude Pro, from $17 a month | Free: one npx command, no login by default | Free: one npx command |
| License | Open source | Anthropic's terms of service; binary must not be modified | MIT | MIT |

## The shortlist question is not which harness has the most features

Every harness on the 2026 shortlist can call a tool, hold a session and show you a trace. Those are table stakes, and they are also what a demo shows you. The thing a demo cannot show you is what happens the first time someone changes a rule: whether that change arrives as a diff a reviewer can read, or as a click in a console that leaves no record. Four harnesses, one table, and the row that matters is the one about where a rule change lands.

## Claude Code passes the diff test and fails the next one

Claude Code is an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools. It runs in your terminal, IDE, desktop app and browser ([Claude Code overview](https://code.claude.com/docs/en/overview)). Its controls are files. The shared project file is `.claude/settings.json`, committed so everyone who clones the repository gets the same permissions, hooks and plugins. Your own file is `~/.claude/settings.json`, which covers every project on your computer and is not committed. Standing instructions go in CLAUDE.md, which is not a settings file ([Claude Code settings](https://code.claude.com/docs/en/settings)).

So a permission change is reviewable, and that is worth saying plainly. What you cannot do is carry those rules to another runtime. The docs describe no way to run them anywhere but Claude Code, and the binary must be installed and run as published by Anthropic, unmodified, under Anthropic's terms of service ([legal and compliance](https://code.claude.com/docs/en/legal-and-compliance)).

## A plugin written in chat is not a rule you can review

DeepSeek Harness describes itself as an open-source harness from DeepSeek built on Cordis's "everything is a plugin" architecture. It runs as a desktop app, or as a web UI launched from code ([DeepSeek Harness](https://deepseek.com/en/harness/)). Plugins extend tools, skills and the interface, and the page says they can be installed or created through chat in "Creator mode". The same page says the harness is in preview, with evolving core plugins and APIs.

That is a fast way to build a harness and a slow way to review one. A rule that arrives as a plugin written in a conversation is a rule whose review is the conversation. The developer panel shows an execution trace of duration, turns, calls, search input, model and tools, which records what a run did rather than what the agent was allowed to do.

## An open harness still has to say where the agent is defined

TrueForge calls itself "The open-source agent harness - the runtime layer that turns an LLM into a working agent". It runs the execution loop: model calls, MCP tools, skills, sandboxing, approvals, context management and session state ([TrueForge](https://github.com/truefoundry/trueforge)). Setup is a catalog you configure once, after which agents pick from what you connected, and the presets are shipped YAML you can customize. Local mode is one process on SQLite.

The catalog is a real answer to the portability question, and it is a different answer from a file in your repository. A catalog is a place the harness owns. When an agent is assembled by selecting resources, the definition of that agent lives where the selection lives, and the repository holds the code the agent runs on rather than the rules it runs under.

## The diff test, applied in an afternoon

The four questions are the ones the swap test on this site's [open-source agent harness page](/open-source-agent-harness) sets out, and they take an afternoon rather than a migration.

On where the agent lives, Kortix and Claude Code both answer with a path. One names `agents/<name>.md`; the other names `.claude/settings.json` and CLAUDE.md. TrueForge answers with a catalog and DeepSeek Harness with a plugin, and both of those are places the harness owns.

On a rule change in a diff, the two file-based tools pass. The two catalog-based ones pass only if the catalog or the plugin happens to sit in your repository. That is a question you have to ask, because the product does not answer it.

On the same file running on a second runtime, Kortix answers with a module boundary. Claude Code's settings files are read by Claude Code, and its docs describe no second runtime for them; the other two keep the agent definition inside the harness, so there is no file to carry across.

On what the target handles worse, Kortix answers before the switch. A preflight reports whether the switch can happen, whether the log restores, and what the target lacks.

## What the pick costs after the first week

Cost to start is the easy number and the wrong one. Kortix starts at $0 with 500 credits a month and one project, on your own provider keys or a ChatGPT subscription. The paid plan runs on credits from $50 a month ([Kortix](https://kortix.com/pricing)). Claude Code comes with a Claude Pro plan from $17 a month billed annually ([Claude pricing](https://claude.com/pricing)). TrueForge and DeepSeek Harness are free to run with one command, and you pay for the model and the machine.

The number that decides the pick is the one after that. What does it cost to change a rule in six months, when the person who wrote it has moved to another team? A rule in a diff costs a review. A rule in a console costs a meeting with whoever still remembers why it is there.

## The rules you can read are the ones you can keep

Kortix is the open-source CompanyOS, and its harness boundary is one module: `harness.ts` is the only module that imports a concrete adapter, and one adapter is registered ([harness boundary](https://github.com/kortix-ai/CompanyOS/blob/dev/apps/kortix-sandbox-agent-server/src/harness/README.md)). The rules sit outside that boundary, in files a reviewer reads. `agents/<name>.md` holds the prompt. `kortix.yaml` holds the grants, the permission per tool and the model.

Three properties make that hold under load. One isolated sandbox per session. Each session has its own isolated machine and branch. Session work reaches `main` through a change request. Merge is default-deny for agents. Approval gates you set. Off until you set them.

The starter repository is the shortest version of the argument. One agent, its grants, three checks whose failure messages carry the fix, and a failure log with a commit in every row. Clone it, run `npm run check`, and read the manifest as a permission slip rather than a program ([harness-engineering-starter](https://github.com/Kortix-seo/harness-engineering-starter)). The [six components](/harness-engineering-components) are the map it follows, and [the seven-step build](/how-to-build-an-agent-harness) is how it got there. The reason to start there is narrow: the rules are in the repository, and the thing that enforces them is one module you can read.

## The grants, in the file a reviewer reads

`kortix.yaml`

```yaml
agents:
  invoice-triage:
    file: agents/invoice-triage.md
    # No connectors and no secrets: the job reads files in this repository.
    # An omitted grant resolves to none, so a prompt that asks for a CRM still
    # has no path to one.
    connectors: none
    secrets: none
    skills: none
```

Source: https://github.com/Kortix-seo/harness-engineering-starter/blob/main/kortix.yaml

Every key answers what the agent may reach, and an omitted grant resolves to none, so the omissions are the security model.

## Questions the shortlist raises

Each answer is about the harness layer, not the model.

### What is the best agent harness?

The one whose rules you can read in a diff and whose runtime you can replace. Features and demos are easy to compare and rarely decide the question. Where a rule change lands decides it.

### Is there an open-source agent harness?

Yes, several. Kortix, TrueForge and DeepSeek Harness all publish their source. The difference between them is where each keeps the rules that decide what the agent may do, and whether a reviewer sees a change to those rules.

### Which agent harness is best for coding?

Whichever one puts the tests, the conventions file and the review gate in your repository. A coding harness that keeps those in a settings screen gives you a good demo and nothing a reviewer can read six months later.

### How much does an agent harness cost to start?

Kortix starts at $0 with 500 credits a month and one project. Claude Code comes with a Claude Pro plan from $17 a month. TrueForge and DeepSeek Harness are free to run with one command, and you pay for the model and the machine.

### Can I change the harness later?

In Kortix the boundary is one module, so a second adapter is a change in that module and the agent files stay where they are. Elsewhere, check whether the agent is a file in your repository or a row in a console before you commit.

## Clone the starter and read the rules before you pick

One agent, its grants and three checks, in a repository you can run this afternoon.

[Try Kortix](https://kortix.com) · [Clone the starter](https://github.com/Kortix-seo/harness-engineering-starter)

---

A guide to harness engineering: what a harness is, where it keeps its rules, what proves them, and how to own one. Kortix is the open-source CompanyOS, and it keeps the harness files.

Revised 2026-11-07

Harness is also the name of a software-delivery platform; harness engineering is the discipline.

© 2026 harnessengineeringguide.com
