Install and first run
Requirements
Section titled “Requirements”| Need | Version | Why |
|---|---|---|
| Node.js | 20 or newer | Every uh command except uh tui runs on plain Node. |
| Bun | 1.3.14 or newer | Package manager for the repo, and the runtime for uh tui (OpenTUI/Solid TSX). |
| git | any recent | Sandboxes are git worktrees by default. |
| A runtime CLI or key | per adapter | For example codex, omp, cmd, hermes, or OPENROUTER_API_KEY / ANTHROPIC_API_KEY in the environment. |
Runtime credentials never go into .harness/. API keys come from the environment; CLI runtimes keep their own login.
Install
Section titled “Install”bun add -g @agenticengineeringagency/ultimate-harnessuh --helpFrom a clone, for development:
bun install --frozen-lockfilebun run buildnode dist/cli.js --help # the built CLIbun run dev -- --help # tsx, no build stepFirst mission
Section titled “First mission”uh init # creates .harness/ with schema-backed stateuh adapter capabilities # what each adapter can douh adapter check codex # is this runtime installed and reachable?
uh mission create m1-example \ --title "Example mission" \ --workflow spec-first-feature \ --objective "Demonstrate the mission lifecycle"uh validate --all-missions
uh mission dry-run .harness/missions/m1-example/mission.yaml --runtime codex # render, do not launchuh mission run .harness/missions/m1-example/mission.yaml --runtime codex # launch, supervised
uh verify m1-example # run the mission's declared checksuh promote m1-example --approved-by "Reviewer Name" --change README.mduh status --jsondry-run renders the exact prompt, command, sandbox routing and runtime overrides without spending anything. Use it before every real run while you learn the system.
Watching runs (v0.11)
Section titled “Watching runs (v0.11)”uh ps # every run: liveness, turns, denials, last tooluh wait <run-id> # block until it settles; exit code says howuh report <run-id> # tools, files written, denials, efficiencyuh steer <run-id> "<message>" # stop and resume with a new first instructionuh kill <run-id> # stop it and prove it is deaduh mission run ends with a single UH_RESULT {json} line and exits 0 passed, 1 failed, 2 blocked, 130 cancelled, so scripts and orchestrators can drive it.
Human surfaces
Section titled “Human surfaces”uh tui --once # print one frame of Mission Controluh tui # interactive; needs BunThe Hermes dashboard plugin (apps/hermes-plugin) and uh mcp serve (v0.11) read the same .harness/ files. See Surfaces.
- Mental model for the vocabulary.
- The lifecycle for what each command does to disk.
- Source quickstart for the repository’s own quickstart.