Skip to content
Back to skills

Routing Messages Across Daemons

ASecurity

Use when thrum send fails with unknown recipient, when sending a cross-box message to an agent on another daemon, when there is no second hop, when you need to route or relay through a paired peer, reach an agent on another box, or tmux send to a remote agent.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
toolsgobash

Works with

  • cli

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add thrum-team/thrum-pro --skill routing-messages-across-daemons --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Routing Messages Across Daemons?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Routing Messages Across Daemons
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thrum-team-routing-messages-across-daemons/badge)](https://www.skillsdirectory.com/skills/thrum-team-routing-messages-across-daemons)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: routing-messages-across-daemons
description: "Use when thrum send fails with unknown recipient, when sending a cross-box message to an agent on another daemon, when there is no second hop, when you need to route or relay through a paired peer, reach an agent on another box, or tmux send to a remote agent."
---

# Routing Messages and tmux Commands to Agents on Other Daemons

Routing and pairing are different things. Pairing connects two daemons directly. Routing sends a message through a
directly paired peer to an agent that peer knows.

## Messages

- A daemon resolves a recipient from its local agents and from agents registered on its directly paired peers.
- To reach an agent on a daemon you are not paired with, run once on the SENDING daemon, per remote agent:

  ```bash
  thrum peer configure <relay-peer-name> add-agent <agent-name>
  ```

  `<relay-peer-name>` is the directly paired daemon that knows the agent.
- Then `thrum send --to @<agent-name>` routes through that peer.
- Run it on each side that needs to send.
- Pairing the two daemons with each other is not the fix.
- `thrum peer relayed add` and `thrum peer relayed grant` are not needed for delivery. They govern what a daemon accepts
  from a relayed origin.

## Verify

- `thrum peer list` shows directly paired daemons only.
- `thrum message get <id>` shows `(delivered)` per recipient. A send that returned without error is not proof of
  delivery.

## CLI notes

- `thrum peer relayed add --via` takes daemon IDs, not peer names.
- `thrum peer relayed grant` does not validate the capability key. The messaging key is `can_send_messages`.

## Unresolved agent records warning

After `add-agent`, the supervisor may report "Unresolved agent records" for the proxy rows, because reconcile asks the
relay, which refuses with "owned by daemon X ... no second hop". A build with the reconcile owner pointer follows the
named owner once and the warning clears. Older builds keep it. Do NOT delete those rows as the supervisor suggests:
deleting them removes the routing.

## tmux

`thrum tmux send <agent> [<text>] [--keys K1,K2,...]` goes through the peer-routed `tmux.send` RPC. Both text and
`--keys` modes work the same against a local session and a remote or peer session. Check the target's peer relationship
with `thrum peer list` and confirm by effect on the target pane.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.