@jmoyers/harness
v0.1.23
Published
Harness is minimal agent orchestration in the terminal.
Downloads
1,164
Readme
Harness
Harness is minimal agent orchestration in the terminal.
Programmable, agent-agnostic, threaded, ergonomic, and fast.
What matters most
- Parallel threads across
codex,claude,cursor,terminal, andcritique. - One command palette (
ctrl+p) to jump threads, run actions, and control workflow quickly. - Toggle the bottom debug bar with
cmd+pwhen you need runtime launch/auth context. - Codex, Claude Code, and Cursor together in one workspace.
- Diff with Critique, with integrated terminals (
harness diff+ critique actions). - Detached gateway sessions keep long-running work alive through reconnects.
- Storage lifecycle maintenance remains paused in interactive runtime paths; use
harness gateway gcas a manual offline truncation/compaction escape hatch. - Storage lifecycle policy updates from
harness.config.jsoncstill apply without restart. - Command palette can open a GitHub thread entry in the left rail for the active project, then show full tracked-branch PR/review details in the main panel.
- Open the active project directly in local tools (
iTerm2,Ghostty,Zed,Cursor,VSCode,Warp,Finder) or copy its path from the palette. - Command-click links inside conversation terminal output: URLs open in browser, file-like paths open in your configured editor/open-in command.
Demo

Quick start
Prerequisites:
- Bun
1.3.9+ - At least one agent CLI (
codex,claude,cursor, orcritique)
Install and run:
# Bootstrap install
curl -fsSL https://raw.githubusercontent.com/jmoyers/harness/main/install.sh | bash
# Or run directly (no global install)
bunx @jmoyers/harness@latest
# Or install globally
bun add -g --trust @jmoyers/harness
harnessUse a named session when you want isolated state:
harness --session my-sessionNamed sessions automatically fall back to an available gateway port when the preferred port is already occupied. For deterministic restart/load diagnostics, you can still set an explicit non-default gateway port.
Standalone diff viewer (phase 1):
harness diff --helpArchitecture (VTE path)
flowchart LR
U[Keyboard + Command Palette] --> UI[Harness TUI]
UI --> CP[Control Plane Stream API]
CP --> TM[Thread Manager]
TM --> AG[Agent Threads<br/>Codex / Claude / Cursor]
TM --> PTY[Integrated PTY Terminals]
PTY --> VTE[VTE Parser + Screen Model]
VTE --> R[Terminal Renderer]
TM --> DF[harness diff + Critique]
DF --> R