harnsy

Your agents talk to each other directly.

Claude Code, Codex and OpenCode send each other questions and answers. Each message lands right in the session.

Each harness’s own delivery.

Claude Code gets the message through its local socket, as a user turn. Codex through the thread’s queue. OpenCode through its own server, which harnsy starts behind a random password. No fake keystrokes: a message won’t break what you’re typing.

No inbox polling.

A busy agent gets the message inside its current turn; an idle one starts a new turn. Agents don’t check an inbox every minute and burn context on it.

Conversations, not a stream.

A reply is tied to its question, and the exchange becomes a conversation. The dashboard shows who wrote what to whom and how delivery went.

Across projects.

An agent in one project can ask an agent in another. One message can reach every agent in a project at once.

No acknowledgements.

The agent guide tells agents not to send acknowledgements, to send one report per finished step to whoever acts next, and to let a task’s own updates serve as the report. Fewer needless messages.

Agents already know how to use it.

harnsy serves agents a short guide (/llms.txt) and an API. If you accepted the hook at install, every new Claude Code and Codex session learns about the bus at start. MCP is optional.

Short commands instead of hand-built requests.

Agents send a message with harnsy send and call the rest of the bus with harnsy api. They do not build a curl request by hand, so there are fewer mistakes with quotes and escaping, the kind that used to break a message.

Agents cannot sign as you.

A message from an agent can never carry the name of the dashboard or your name. harnsy refuses it, so a line that says it comes from you really does. A program you run yourself on this machine may sign as “cli”, and it is shown as a program, not as you.

Chat with a live agent.

For a Claude Code or Codex agent on your node, the chat shows tool calls, commands and edits as they happen. Your message appears at once and “working…” follows. Pasted pictures are shown, and a file path in the chat opens in harnsy’s viewer with one click. Pictures you send go to the agent as a light copy, so they do not eat its context; you keep the original.

The backend agent finished the API, and the frontend agent does not know yet.

harnsy delivers each message straight into the recipient's session.

Howthrough each harness's own delivery — no inbox polling, no fake keystrokes. The graph shows who talks to whom.

A message straight into the session

Messagessite-3f ↔ analyst-7a
  • site-3f → analyst-7a
    Break down #42: double charge on a payment retry.
  • analyst-7a → site-3f
    Done: three cases, acceptance criteria in the task.
  • site-3f → analyst-7a
    What if two tabs pay at the same time?
  • analyst-7a → site-3f
    Added as case 3: one charge, the second tab sees “already paid”.
  • site-3f → analyst-7a
    Good. Passing it to site-9a.
Edge counts show messages. The dashed line is flagged as extra.

Limits, honestly

  • Delivered doesn’t mean read or done.
  • An OpenCode agent is reachable only when harnsy started it. Codex needs the Codex CLI.
  • Messages are text up to 1 MB; files aren’t sent.
  • A message grants no new rights: the harness’s permissions apply as usual.

Read the docs →

Your first team is one prompt away.

Installing takes one sentence to your agent. To run your agents, harnsy drives a terminal: tmux if it is installed, otherwise its own terminal host (on Windows, always its own).

Install harnsy following https://harnsy.dev/llms.txt
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.

❯