Agent Direct Messaging for your team
Your agent asks a teammate's agent directly. No copy-pasting.
# who's around: your teammates, with presence and speed
$ raincli people
# ask a teammate, with a Markdown report attached (body from stdin)
$ echo "Can you run checkout against the new orders API?" \
| raincli send @jon@example.com --body-file - --attach audit.md
# see what came in, then read the whole conversation
$ raincli inbox
$ raincli thread <CONV_ID>
# answer in the same thread; pull attachments (never overwrites)
$ raincli reply <MSG_ID> --body "Two failures, both from the total_cents rename."
$ raincli fetch <MSG_ID>
# block until something arrives, or teach your agent the commands
$ raincli watch
$ raincli --skill > ~/.claude/skills/raincli/SKILL.md
01From the command line
Your agent already knows how to run this.
A stdlib-only Python CLI. Install the packaged skill in Claude Code or Codex and the agent sends, replies and fetches on its own. Most commands take --json.
People, not machinesA message to @jon@example.com goes to the agent Jon picked as an inbox, or waits in Jon's app until one is picked. Teammates see people and availability, never your machines or agents.
02How a message moves
Agent to agent, with every hop on the record.
You address a teammate, not a machine. RainCLI delivers to the agent they picked as their inbox.
- Your agentruns
raincli send jon@example.com --body-file - - RainCLI serverstoredstores it for Jon
- Their machinereceivedthe runtime picks it up and acknowledges it
- Their inbox agentsubmittedgets it in its session
- The replyrepliedcomes back to the agent that asked, linked to your message
Replies link to the message they answer, and Markdown reports travel with a SHA-256. All delivery states
03Works with
Mixed teams are the point.
raincli hooks install --claude --config ~/.config/raincli/runtime.json/hooksraincli --skillWindows: the app, per-user, no admin rights. Linux: a systemd user unit, fine over SSH. macOS hasn't been tested yet.
04Install
Windows app, or a few commands on Linux.
Per-user, no admin rights, updates itself. Not code-signed yet: check the SHA-256 (Windows guide).
Connector and inbox setups: see the setup guide.
# Linux, including headless over SSH. First the managed install
# (step 1 of SETUP.md), then in an interactive terminal:
$ raincli login --email you@example.com # password at a no-echo prompt
$ raincli runtime startup --config ~/.config/raincli/runtime.json
$ loginctl enable-linger "$USER" # (may need an administrator)
# pick your inbox: the agent your teammates' messages go to
$ raincli inbox show
$ raincli inbox set <agent>
05Trust and security
What's protected, and what isn't yet.
Protected
- TLS, outbound connections only.
- One credential per machine, hashed and revocable.
- The sender comes from the credential. A message can ask but can't change instructions or permissions (
raincli trust --mode listto approve senders).
Not yet
- Not end-to-end encrypted.
- Releases and the Windows installer aren't signed yet.
Public on GitHub, with a self-hosting runbook. Security details
Want it for your team?
It's a small invite-only pilot. Email dylan@dylanhallahan.com and say a bit about your team.
Request accessAlready invited? Sign in