The open-source software and hardware platform for domain-specific harnesses.
Run Claude Code, Codex, and every other coding agent in persistent terminals on all your machines. Give them a domain-specific harness (DSH) and they design circuit boards, model 3D parts, simulate robots, and build games in a live viewer. Keep them on your desk with the open-hardware Harness device.
Run it · Domain-specific harnesses · Harness device · Architecture · Contribute
The coding agent is still the heart of the work, and OpenHarness is built around it.
- Real terminals that outlive the window. Every agent runs in a persistent tmux session. Close the app and the agents keep working; if tmux goes down with a reboot, the daemon brings the panes back and resumes the sessions.
- Every engine, no wrappers. Claude Code, Codex, Cursor, OpenCode, Pi, Hermes, Command Code, Devin,
Muse Code, Amp, Kilo, Grok Build, Antigravity and GitHub Copilot. OpenHarness reads the transcript each
agent already writes and installs the vendor's own hooks. Your credentials stay in
~/.claude,~/.codexand so on. See the engine list. - All your machines in one window. The laptop, the Mac mini at home, the server in the rack. Each runs a daemon with outbound connections only. Terminal traffic is end-to-end encrypted, the relay only forwards ciphertext, and it goes peer to peer over WebRTC when it can. No SSH server, VPN, or open port.
- Built for many agents at once. Split panes, a keyboard-driven layout, fuzzy search across sessions and machines (⌘O), and one shortcut to the agents waiting on you (⇧⌘I). The workspace guide and keybindings cover the rest.
- Download the desktop app for macOS or Linux.
- Sign in to a coding agent you already use, with your own subscription, API key, or local model.
- Press ⌘N, pick an agent or a harness, a machine and a project, and start.
On another machine:
curl -fsSL https://harness.autonomous.ai/cli/install.sh | bash
harness login
harness startThen Machines → Link Machine in the app.
macOS is the primary tested platform. Linux builds exist and feature parity is in progress; Windows is work in progress. The app and daemon still need a Harness account to start; account-free local use is tracked.
Build from source
For macOS, install 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 macosmake install-cli installs this checkout's CLI and restarts the local daemon. The
development guide covers tests and isolated environments.
flowchart LR
device["Harness device"] -- USB --> daemon
app["Harness app<br/>(Flutter)"] -- loopback --> daemon["harness daemon<br/>(TypeScript)"]
daemon --> tmux["tmux"] --> agents["Claude Code · Codex · OpenCode · …"]
daemon --> dsh["DSH toolchain<br/>+ live viewer"]
daemon <-- "E2EE · WebRTC" --> relay["Harness relay"]
relay <--> remote["daemons on your<br/>other machines"]
The architecture guide covers the daemon, the session model, transport and encryption.
A domain-specific harness turns a coding agent into a specialist. It brings the domain's instructions and skills, a pinned toolchain, a project template, a verdict the app can read, and a live viewer for what the agent makes. You chat on one side; the board, the part, the robot or the game takes shape on the other, and stays interactive after the agent is done.
A DSH is a folder with a harness.json. The agent does the reasoning; the harness brings the tools
and the view. Adding a domain never needs a change to the app or the daemon.
| Domain | Harnesses |
|---|---|
| CAD | Autonomous Workshop, text-to-cad |
| 3D | Blender |
| Electronics | Autonomous Circuit, CircuitJS, Yosys |
| Games | Godogen, Phaser |
| Documents and diagrams | Marp, Typst, Excalidraw |
| Video and music | OpenMontage, Remotion, Manim, Strudel |
| Simulation and analysis | MuJoCo, RDKit, marimo |
Each one wraps an open-source project under its own name, credits it, pins its toolchain, and installs on a fresh machine from the Harness Store. Eight shared viewers (CAD, 3D models, documents, games, film, video, MuJoCo, web) mean a new harness rarely needs to write its own.
The harness we'd love to see next is the one for the tool you use. KiCad, FreeCAD, OpenSCAD, Godot, Jupyter, QGIS, Home Assistant, LilyPond, Inkscape — or your own company's toolchain. A harness can live in this repository or in yours.
Every picture is real output from the harness's own toolchain, and the prompt is the one that made it.
The Hello World example is a Codex session that edits an HTML page shown in the shared Web Viewer:
hello-world/
harness.json
AGENTS.md # instructions for the agent
template/index.html # copied into a new project
Its manifest connects the pieces:
{
"spec": 1,
"id": "examples/hello-world",
"name": "Hello World",
"engine": "codex",
"workspace": {
"template": "template",
"marker": "index.html"
},
"agent": { "instructions": "AGENTS.md" },
"viewer": { "use": "autonomous/web-viewer" }
}The CLI and the package protocol call a harness a DSH, so the commands are harness dsh …. From this
checkout, with the harness CLI installed:
harness dsh install "$PWD/store/viewers/web-viewer" --link
cp -R store/examples/hello-world ../my-first-harness
harness dsh check ../my-first-harness
harness dsh install ../my-first-harness --linkPress ⌘N → Hello World, choose a new project, and ask it to “Say hello to Ada.” The agent edits
index.html; the viewer reloads. Change AGENTS.md to try another workflow, then start a new session.
--link keeps the package connected to your source directory; Store installs resolve viewer
dependencies on their own.
The authoring guide covers the full manifest, toolchains, live progress, verdicts, store pages, and publishing; the package specification is the contract.
| Piece | Responsibility |
|---|---|
| Engine | Runs the coding agent: Claude Code, Codex, OpenCode, and the rest |
| Harness (DSH) | Packages a domain: engine, instructions, toolchain, workspace, and viewer |
| Viewer | Shows and interacts with what the agent makes; shared across harnesses |
| Session | One running agent, in one project, on one machine |
No other agent stack ships this layer. The Harness device is a round, always-on display that sits beside your keyboard and shows your agents at a glance: what each one is doing, which one has finished, and which one is waiting on you. Read a question and answer it on the screen, or tap and speak a new task, without switching windows.
It is open hardware, all the way down. This repository has everything it takes to build one:
| Layer | What's here |
|---|---|
| Firmware | ESP32-S3, ESP-IDF, a 466 × 466 round AMOLED with touch, microphones and audio. Connects to the host's daemon over USB — no Wi-Fi setup, no account on the device. |
| PCB | The EasyEDA Pro project, the schematic, Gerbers, the bill of materials, and pick-and-place data for assembly. |
| Enclosure | STEP for editing and STL for printing: the housing, an iron counterweight base, the USB clamp, and the button. |
Get a Harness device, or build your own from these files. The firmware guide lists the supported boards and build commands, and the hardware guide covers the design files.
gallery-compress.2.mp4
There are three ways in, one for each layer of the stack.
- Make a DSH for a tool you use. Start from Hello World, make one workflow work end to end, pin the toolchain, credit the upstream project, and show something worth looking at in the viewer.
- Improve the coding workspace. Terminal behavior, engine support, the daemon, the relay, Linux and Windows.
- Hack the hardware. Port the firmware to another board, remix the enclosure, add a feature to the device.
Small fixes and notes about something that didn't work are welcome too. The contribution guide walks through each path.
desktop/ Flutter app and terminal workspace
cli/ TypeScript CLI, daemon, engine adapters, and package runtime
backend/ Relay and control plane
store/ Domain-specific harnesses, shared viewers, registry, examples, and package spec
provider/ Provider API contract, implementations, and conformance tests
devices/ Harness device firmware, PCB, and enclosure
- Development and testing · Extension points · CLI and automation
- Desktop · Daemon · Relay · Provider API
- Security policy · License
The repository is MIT licensed unless a folder says otherwise. Upstream tools, models, and assets keep their own licenses.








