Quickstart
Get a harness up and attached in a couple of minutes. For the longer walkthrough — running the daemon as a service, supervising real agents, scheduled sweeps and push events — start with Getting started.
1. Install
Homebrew builds from source, so there is no macOS Gatekeeper prompt. --HEAD
builds main, which these docs track:
brew install --HEAD stump-wtf/tap/harness
Or build from source (Go 1.26+):
git clone https://github.com/stump-wtf/harness.git
cd harness
go install ./cmd/harness
2. Configure a harness
Create ~/.config/harness/harness.toml and define what to run. A minimal
always-on harness:
[harness.heartbeat]
harness = "generic"
args = ["-c", "while true; do echo $(date); sleep 60; done"]
description = "prints the time once a minute"
enabled = true
The full field reference is in Configuration and
harness.toml.example in the repo.
3. Run the daemon
Start the supervisor. Easiest in a terminal:
harness daemon
Or detach it into the background (dev convenience — prefer an init service for production, see Supervision):
harness daemon --detach
4. Drive it
From the same or another terminal:
harness list # see every harness and its state
harness attach heartbeat # attach to it as a live terminal (Ctrl-C to detach)
harness describe heartbeat # show its details
harness logs heartbeat # read its tail log
harness with no arguments opens the full TUI dashboard.
5. Check the plumbing
harness doctor
prints a health report: config parses, the daemon is reachable, harnesses are in their expected states, and the client/daemon protocol versions agree.
That's the whole loop. Next: the CLI reference.