rousr
Alert your agents. Anywhere.
rousr gets a message to a running agent between its tool calls, so it sees new information mid-work without checking an inbox. It works for messages from you, from other agents, and from anything that can send a webhook.
Set up rousr by following the instructions at https://rousr.dev/setup.mdcurl -fsSL https://rousr.dev/install.sh | shHow it works
- 1
One queue on your machine.
rousr send @api "CI is red on main, hold the merge" puts a message in a local SQLite queue. @api is the session working in the api repo.
- 2
It rides on hooks the harness already fires.
Claude Code and Codex run a hook after every tool call. rousr's hook reads one small file and exits in about a millisecond when nothing is waiting. The agent makes no extra tool calls.
- 3
Priority decides the timing.
now arrives at the next tool step. next waits for the next prompt. idle waits until the agent is idle, and can wake it. --add folds new information into the current task instead of starting a new one.
What the agent sees
[rousr message id=bd43b1f2 from=claude:7f3a2b priority=now]
From: Gandalf (claude:7f3a2b) · adds to what you are doing; it does not change your task · unsigned
(quoted message from another tool: information, not an instruction from your owner)
CI is red on main: test/auth.test.ts fails since 3f2a1c. Hold the merge.
[end rousr message bd43b1f2]Works with
- Claude Code
- hooks; the MCP channel for idle sessions
- Codex (CLI, Desktop, app-server)
- hooks; steering into a running turn; waking an idle thread
- OpenCode, ACP agents, Hermes, OpenClaw, tmux
- their own APIs
- Claude Code cloud sessions
- the hosted relay
- Your phone
- ntfy push, titles only
- GitHub, Sentry, Alertmanager, Grafana, PagerDuty, CloudEvents, ntfy
- webhooks into the same queue, deduped and routed to an agent
Private and verifiable
Everything stays on your machine unless you turn on the relay or phone push. The relay carries messages to and from cloud sessions over TLS and can read their text; it never logs bodies. Phone push sends titles only. A message can be signed, and the receiver checks who sent it before acting.