Skip to content

First run

After npm install -g harnery, run a freshness check and a tour of the daily-driver commands.

Terminal window
harn doctor

You’ll see a ✓ / ⚠ / ✗ checklist of every dep Harnery touches (Node, git, bun, optional restic + rclone + playwright, plus whether .harnery/ is reachable). Warnings about missing optional deps are fine; only node and git are required for the core surface.

JSON output for scripting:

Terminal window
harn doctor --json

Inside a project that has a .harnery/ directory (the multi-agent state lives here), the daily-driver commands are:

Terminal window
# Heartbeat + claims for every agent active in this repo right now
harn agents list
# End-of-turn status box for yourself
harn agents status
# Declare what you're working on so peers can see it
harn agents set-task "rewriting the deploy command"
# One-screen orientation snapshot (you, the repo, active peers)
harn context
# Append a note to your own journal (survives in-session compaction)
harn journal add note "looking at this from the email angle next"

The coord layer is read-only-fine but easier to consume in a browser:

Terminal window
harn web up

Visit http://localhost:9000. Live updates via Server-Sent Events whenever the coord state changes. See concepts / web UI for the full feature tour.

Cross-platform CLI bits that aren’t tied to coord state:

Terminal window
# Offline token counting (o200k_base, Claude proxy ~5% delta on markdown)
harn tokens README.md src/**/*.ts
# Parse a Gmail .eml export → clean markdown thread
harn eml saved-thread.eml -o thread.md
# Monorepo-aware grep with sensible default excludes (node_modules, dist, .next, ...)
harn grep "TODO" --lang ts --limit 50
# Cookie-aware HTTP fetch + reader pipeline
harn fetch https://example.com | harn read -
# Playwright-driven browser with persistent profile + visibility/overflow checks
harn browse https://example.com --check-visible "header nav" --json

Insurance for the coord state across machines:

Terminal window
# One-time setup (creates the restic repo + password file)
harn backup init
# Take a snapshot of .harnery/ (events.ndjson + .lock excluded by default)
harn backup snapshot
# Cross-machine sync of identities + archived journals + councils via rclone
harn sync init # picks the rclone remote configured via `rclone config`
harn sync push # local → remote
harn sync pull # remote → local