Harness

One command center for every coding agent on every machine, end-to-end encrypted, keyboard-first, and extensible to CAD, circuits, robotics and music.

Stars
★ 1.3k
Last updated
today
License
MIT
Primary language
TypeScript

At a glance

How it runs
Desktop appCLISelf-hosted service
Works with
Universal · cross-platformCodex · Claude Code
Cost
Free software; you pay for model usage
Setup effort
Medium · a few setup steps
You'll need
tmuxNode.js 20+Flutter 3.47+ / Dart 3.13+ (desktop build from source)Xcode (macOS desktop build)macOS or LinuxShell / CLINetwork accessLocal filesystem
Typical use
Developers juggling a work laptop, home server and GPU box who want Claude Code and Codex panes visible side by side in one window.
Not a fit if
  • Users who want a browser-only workflow with no local daemon
  • Teams that refuse any vendor relay or Cloudflare TURN fallback
  • Windows desktop users — only macOS and Linux builds are offered

What does this agent do, and when should you use it?

Harness is a multi-machine command center for coding agents, shipped as one repository containing a native desktop app, a CLI with an hn terminal UI, a per-machine daemon, a relay and an open-hardware device. Each agent runs in its own tmux pane, so scrollback, colors and keystrokes behave natively; Harness never wraps an agent, it reads transcripts and uses the vendor's own hooks. Machines connect over WebRTC first, falling back to Cloudflare TURN or the project relay, with every path sealed by ChaCha20-Poly1305, X25519 session keys and pinned Ed25519 identities while the relay holds no keys. Beyond code, the Store lists 49 domain-specific harnesses such as Blender, CircuitJS, MuJoCo, Godogen, Strudel, RDKit and Typst, each a folder with a harness.json plus a live viewer. The project is MIT licensed and the desktop client is native rather than Electron, and it can drive local models through Grid, Ollama, MLX-LM and vLLM.

The desktop app keeps one harness per running agent session and groups them into tabs; a new harness can start on its own worktree branch so your working copy stays clean. Every machine runs a daemon that launches Claude Code, Codex, Cursor, OpenCode and other CLIs inside tmux, and dials out so no port is ever opened. The app links a machine through the password set with harness remote-password set after harness login, then picks the best path among direct WebRTC, Cloudflare TURN and the relay, streaming terminal text as bytes rather than pixels. The keyboard layer provides ⌘P to find any harness on any machine, ⇧⌘I to jump to the session waiting on you, and ⌘D to split, all remappable through a single JSONC file reloaded on save with chords up to four strokes. Harnesses in the same tab can message each other via harness send (Agent Messages, experimental and off by default). Domain-specific harnesses are installed with harness dsh install and bundle instructions, a pinned toolchain, a project template, checks and a live viewer, so the agent reasons while the harness supplies tools and the view. The optional Harness device is an ESP32-S3 round display connected to the host daemon over USB for status, answering questions and speaking new tasks.

  1. Developers juggling a work laptop, home server and GPU box who want Claude Code and Codex panes visible side by side in one window.
  2. Teams that want each agent to work on its own git worktree branch without hand-managing worktrees.
  3. Engineers behind restrictive firewalls who cannot use SSH keys, Tailscale or port forwarding but still need an encrypted path to remote machines.
  4. Groups running open-weight models locally with Grid, Ollama, MLX-LM or vLLM and orchestrating them alongside cloud agents from the same UI.
  5. Makers doing 3D modeling, PCB layout, robot simulation or game prototyping who need craft-specific harnesses like Blender, KiCad, MuJoCo or Godogen with live viewers.
  6. Hardware tinkerers who want an open-source desk display that shows which agent is waiting for an answer.

How do you install or deploy this agent?

Download the desktop app for macOS or Linux. On every machine you want to reach, run the install script, which sets up the CLI and daemon:

curl -fsSL https://harness.autonomous.ai/cli/install.sh | bash
harness login
harness remote-password set
harness start

For a terminal-only workflow the same script also installs hn:

curl -fsSL https://harness.autonomous.ai/cli/install.sh | bash
hn

Building from source needs Node.js 20+, tmux, Xcode and Flutter 3.47+ / Dart 3.13+:

git clone https://github.com/autonomous-ai/openharness.git
cd openharness
(cd cli && npm ci)
make install-cli
cd desktop
flutter config --enable-swift-package-manager
flutter pub get
flutter run -d macos

To give Claude Code the harness skill plugin:

claude plugin marketplace add autonomous-ai/openharness --sparse .claude-plugin plugins
claude plugin install harness@openharness

How do you use this agent?

In the app, open Machines → Link Machine and enter that machine's remote password. Then use ⌘N for a new harness, ⌘O to open, ⌘T for a new tab and ⌘D to split; ⌘P finds a harness on any machine and ⇧⌘I jumps to the session waiting on you. Each pane shows its machine, project and branch. Before installing a domain harness, link the shared viewer and scaffold a copy of the example:

harness dsh install "$PWD/store/viewers/web-viewer" --link
cp -R store/examples/hello-world ../my-harness
harness dsh check ../my-harness
harness dsh install ../my-harness --link

Then press ⌘N and choose Hello World to start talking. To let agents in one tab message each other, enable Agent Messages under Settings ▸ Experimental and call harness send from a session.

What are this agent's strengths and limitations?

Pros
  • Every agent gets a real tmux pane, so scrollback, colors and key bindings work as in a native terminal without wrapping or hijacking vendor CLIs.
  • Direct WebRTC is preferred and degrades to Cloudflare TURN or the project relay, with ChaCha20-Poly1305 and X25519 sealing every path while the relay holds no keys.
  • The desktop client is native, not Electron; README reports on an M2 Max median 11–13 ms for ⌘N/⌘O/⌘T, 1.1 ms local terminal echo, and roughly 0.1% of one CPU core plus 304 MiB.
  • The Store ships 49 domain-specific harnesses across design, engineering, music, science, simulation and games, and you can author your own with a single harness.json without touching the app.
  • The hardware layer is fully open: ESP32-S3 firmware, an EasyEDA Pro PCB project and STEP/STL enclosure files all live in the repo.
  • MIT licensed with app, CLI, daemon, relay and device code in one repository, plus local model backends via Grid, Ollama, MLX-LM and vLLM.
Limitations
  • Setup requires running a curl install script and keeping a daemon resident on every machine, plus setting a remote password before the first link.
  • Desktop builds exist only for macOS and Linux; building from source additionally needs Xcode and Flutter 3.47+/Dart 3.13+, leaving Windows users without a documented path.
  • Agent Messages and some Store entries are marked experimental, so their behavior may change.
  • Remote connections rely on WebRTC negotiation and may fall back through Cloudflare TURN or the vendor relay; teams sensitive to third-party network intermediaries should assess this.
  • The published performance figures come only from a macOS M2 Max Release build; other platforms and remote link paths lack comparable detail in the repository.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Harness This agent 45 · Major gaps Desktop appFree + model costs ★ 1.3k today TypeScript Codex · Claude Code
Best of Agent Harnesses 75 · Good MCP serverFree + model costs ★ 1.3k 4d ago Python Claude Code · Claude API
OpenRig 79 · Good CLIFree + model costs ★ 8.1k today TypeScript Codex · Claude Code
amux Agent Control Plane 77 · Good Self-hosted serviceFree + model costs ★ 543 today Rust Codex · Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
45/ 100 5-point scale 2.3 / 5
Trust 11/29
Reliability 6/14
Adaptability 8/18
Convention 9/18
Effectiveness 7/13
Verifiability 4/8
Why each dimension lost points
Trust11 / 29 · 1.9/5

Trust evidence is mixed. README claims end-to-end encryption (ChaCha20-Poly1305, X25519, pinned Ed25519) with a keyless relay, and SECURITY.md details device key logs and QR sign-in risks, supporting data-flow transparency (2). However, least_privilege and user_confirmation are weakened by docs/plans/2026-10-22-swarm-full-permission-mode.md: Swarm-launched Leads and agents always run in full permission mode with permission controls hidden, and SECURITY.md acknowledges example-provider runs claude with --dangerously-skip-permissions. These are deliberate design choices, not defects, but they reduce least-privilege and confirmation strength (1 each). On sensitive data, SECURITY.md admits anyone who can sign in can add a device and the backend can add devices, mitigated only by visibility (1). Dependency security shows only pinned CI actions and npm ci --ignore-scripts; no dependency audit or vulnerability policy is visible (1). External effects and rollback: worktrees, checkpoints and resume exist, but no user-facing undo/rollback guidance (1 each). Source attribution: MIT and upstream tool attribution are mentioned, but publisher identity is unverified (1).

Reliability6 / 14 · 2.1/5

Reliability: multiple docs/research files record failing-tests-first, golden baselines, mutation testing and 100% coverage gates, showing good self-consistency (2). Dependency availability is only README prerequisites (Node 20+, Flutter 3.47+, tmux, Xcode); no lockfile or full version matrix is presented (1). Failure messages: docs mention typed holds and IDENTITY_UNAVAILABLE classifications, but user-facing failure messaging evidence is limited (1).

Adaptability8 / 18 · 2.2/5

Audience and scenarios are broad: coding, CAD, circuits, robotics, games, music, chemistry, documents across 49 harnesses, clearly described (2). Capability boundaries: README states harness never wraps an agent, reads transcripts and uses vendor hooks, but full permission mode and YOLO/allow-all boundaries are scattered in planning docs rather than user docs (1). Trigger precision: shortcuts like ⌘P and ⇧⌘I and harness send are described, but trigger conditions and conflict handling are not systematically documented (1). Environment fit: macOS/Linux desktop only, Windows unmentioned, firmware depends on ESP-IDF (1).

Convention9 / 18 · 2.5/5

Information architecture is good: README is layered and links to architecture, development, extending, CLI and naming docs (2). Install notes are complete with download, curl install, source build and plugin install (2). Naming stability: a Naming System doc is referenced, but harness/tab/DSH terminology is still mixed across docs (1). Examples and FAQ: hello-world harness example, store catalog and multiple GIF demos (2). Known limitations: SECURITY.md lists some non-vulnerabilities, but product-level limits (no Windows, full permission mode) are not consolidated (1). License: full MIT text with clear copyright holder (3). Versioning/changelog: no CHANGELOG or version policy found (0). Maintenance responsibility: CONTRIBUTING and a security email exist, but the publisher is unverified and maintenance commitments are unclear (1).

Effectiveness7 / 13 · 2.7/5

Output usability: README provides copyable install commands, a harness.json example and CLI commands with clear output shapes (2). Marginal value: unifying multiple agents and machines into one command center with domain-specific harnesses and live viewers is a clear increment over single-agent CLIs (2). Cost-benefit: claims native non-Electron low resource use, but performance data is author-measured and not independently verified, and the security cost of full permission mode is unquantified (1).

Verifiability4 / 8 · 2.5/5

claim_traceability: README performance numbers point to specific docs/performance files, and research docs cite specific commits and receipts, giving good traceability (2). cross_source_corroboration: performance and security claims come mainly from the project's own docs with no independent third-party corroboration (1). fact_inference_separation: research docs explicitly separate passed, unverified and non-evidence items, e.g. 'These four observations support no speed claim', showing good separation (2).

Risks and how to mitigate them
  • Swarm-launched agents default to full permission mode with permission controls hidden; users must be aware of this behavior.
  • SECURITY.md admits anyone who can sign in can add a device and the backend can add devices, mitigated only by visibility, creating account-takeover risk.
  • example-provider runs with --dangerously-skip-permissions and is only suitable for scratch directories.
  • Publisher identity is unverified, and install scripts are executed via curl | bash from a remote domain; verify independently.
  • Performance figures are author-measured and not independently verified; do not rely on them for selection.
  • No CHANGELOG or versioning policy is visible; upgrade compatibility must be assessed independently.
Evidence confidence: Low Reviewed Oct 22, 2026 Reviewed revision a1c34427755f
See the full review method →

FAQ

Does Harness call the LLM for me, and what does it cost?
No. Harness launches the CLIs you already have installed — Claude Code, Codex, Cursor, OpenCode and others — and reads their transcripts. Model usage bills through each agent's own subscription or API; Harness itself is MIT-licensed software.
Can the relay server see my code?
The README states all paths use ChaCha20-Poly1305 with X25519 session keys and pinned Ed25519 identities, and the relay only forwards ciphertext it cannot read. Direct WebRTC involves no server at all; when a firewall blocks it, traffic may pass through Cloudflare TURN or the project relay under the same encryption.
Do agents stop when I close the desktop app?
No. Agents run inside tmux sessions managed by each machine's daemon, so they keep working after you close the app and you can reattach later.
Can I build a private harness for my team's own toolchain?
Yes. Write a harness.json with spec, id, name, engine, workspace, agent and viewer fields as shown in the README, validate it with harness dsh check and install it with harness dsh install --link, without modifying the app.
Which operating systems and runtimes are supported?
Desktop builds are offered for macOS and Linux; source builds need Node.js 20+, tmux, Xcode and Flutter 3.47+/Dart 3.13+. The hardware device is ESP32-S3 firmware built with ESP-IDF and connects to the host daemon over USB with no Wi-Fi setup.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents