harnsy

Install harnsy

One sentence to your agent, or one command. The installer stays in your user account and asks before it changes another tool’s settings.

Let your agent install it.

Paste this into Claude Code, Codex or OpenCode. The agent shows you the plan first, then installs, then asks you to answer the installer’s questions in your own terminal. It doesn’t edit your settings files itself.

Installing takes one sentence to your agent.

Install harnsy following https://harnsy.dev/llms.txt

Or run one command.

The same install without an agent. It downloads the demo build from GitHub (harnesy/app).

  • Linux and macOS

    curl -fsSL https://harnsy.dev/install.sh | sh
  • Windows (PowerShell)

    irm https://harnsy.dev/install.ps1 | iex
  • Linux and macOS: show every step, change nothing

    curl -fsSL https://harnsy.dev/install.sh | sh -s -- --dry-run
  • Windows: show every step, change nothing

    $env:HARNSY_INSTALL_ARGS = "--dry-run"; irm https://harnsy.dev/install.ps1 | iex

Demo edition: 1 project, up to 10 agents running at once, no nodes or cluster mode.

Linux, Windows and macOS (not yet verified on a real Mac).

What the installer does

Everything it writes, everything it asks, and what it leaves alone. harnsy install --dry-run prints every step, the diff of every file it would change and the path of every file it would create, and changes nothing.

It stays in your user account.

Everything goes into your own user directories. No sudo or admin rights. It doesn’t change PATH or your shell profile; if ~/.local/bin is not on PATH, it tells you.

It checks the download.

The one-line installer downloads the release for your OS and CPU from GitHub over HTTPS and stops if the file is missing from the release’s SHA256SUMS or doesn’t match it. It unpacks into a temp folder, runs harnsy install from there and deletes the folder when it’s done. The check catches a broken or cut-off download; the sums come from the same release.

It sets up three things without asking.

The program, an install record and a background service for your user only. The service starts now and at every login.

Written without a question on a fresh install
LinuxmacOSWindows
The program (a copy)~/.local/bin/harnsy and the link ~/.local/bin/ccbusas on Linux%LOCALAPPDATA%\harnsy\bin\harnsy.exe
Install record~/.local/share/harnsy/install.json and hooks/harnsy-introduce.pyas on Linux%LOCALAPPDATA%\harnsy\install.json
A service: starts now and at login, restarts after a crashsystemd user unit ~/.config/systemd/user/harnsy.serviceLaunchAgent ~/Library/LaunchAgents/com.github.butschster.harnsy.plist, log in ~/Library/Logs/harnsy/Task Scheduler task harnsy, least privilege; if Windows refuses it, the value harnsy under HKCU\Software\Microsoft\Windows\CurrentVersion\Run (no restart after a crash)

If a different service file or task is already there, it shows it and replaces it only after your yes. An existing ~/.local/bin/ccbus file is moved to ccbus.pre-harnsy.

It asks before everything else.

Each of these is a [y/N] question. Only y or yes counts; no answer, no terminal or --dry-run means no.

  • Which terminal opens your agents, while none is chosen yet: WezTerm or tmux (tmux not on Windows), saved as terminal.driver in ~/.harnsy/config.yaml.
  • The tray icon (Linux, macOS): ~/.local/bin/harnsy-tray. Starting it at login is a second question.
  • A startup hook for new sessions in ~/.claude/settings.json and ~/.codex/hooks.json, only if ~/.claude or ~/.codex exists (not on Windows).
  • A status line in ~/.claude/settings.json, only if you have none.

For each settings file it first shows you the exact change. A file that already exists is first copied to ~/.local/share/harnsy/backups/ (Windows: %LOCALAPPDATA%\harnsy\backups\). No option answers yes for you; --no-tray, --no-hooks and --no-statusline skip a step.

It stays on your machine.

The dashboard on 127.0.0.1:7788 and the agent port on 127.0.0.1:7790 listen only on this computer. The service is also given 127.0.0.1:7789 for other nodes; that port opens only after you issue a node token, and never in the demo. harnsy sends no telemetry and checks for no updates: it talks to your harnesses on this machine and to nodes you connect.

It doesn’t touch:

  • MCP servers: it prints the optional claude mcp add line for you to run
  • ~/.claude.json
  • Codex’s ~/.codex/config.toml
  • OpenCode’s settings

Later, while it runs: only with claude.auto_trust: true in config.yaml (off by default) harnsy marks a project folder trusted in ~/.claude.json before it opens Claude Code there, after copying the file to claude.json.bak in ~/.harnsy. Codex opened by harnsy gets folder trust as command-line flags; no file is written.

Remove it.

harnsy uninstall removes the service, the tray, the program and the settings entries it added, and asks before each settings change. Your data in ~/.harnsy and the backups stay until you delete them. harnsy uninstall --dry-run shows it all first.

site-3flead · Claude Codeliveview only
❯ Plan #42 with the team.

Waiting for the breakdown from analyst-7a…

from analyst-7a through harnsy❯ #42 broken down: three acceptance criteria, including a retry after 24 h.

I’ll hand #42 to site-9a.

❯