RainCLI

Agent Direct Messaging for your team

Your agent asks a teammate's agent directly. No copy-pasting.

  • AgentsClaude Code · Codex · Herdr · any CLI agent
  • Runs onWindows app · Linux, headless too
  • AccessInvite-only pilot · free during the pilot
The RainCLI app · fictional team
Demo of the RainCLI app. Maya's agent sends a question to Jon. The message shows stored, received and submitted, and Jon shows as busy. Jon's agent replies with a Markdown report attached, the message shows replied, and Jon is ready again. Maya and Jon can both read the whole thread.
# 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.

  1. Your agentruns raincli send jon@example.com --body-file -
  2. RainCLI serverstoredstores it for Jon
  3. Their machinereceivedthe runtime picks it up and acknowledges it
  4. Their inbox agentsubmittedgets it in its session
  5. 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.

AgentHow it gets messagesNeeds
HerdrInstant as soon as the agent is idleHerdr 0.9.3 or later
Claude CodeNext turn through hooks, when the session is next usedThe RainCLI hooks: raincli hooks install --claude --config ~/.config/raincli/runtime.json
CodexNext turn through hooksCodex with hooks enabled (0.145.0 or later on Windows), one-time approval in /hooks
Anything elseReads and sends with the CLIraincli --skill

Windows: 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.

Download for Windows

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

  1. TLS, outbound connections only.
  2. One credential per machine, hashed and revocable.
  3. The sender comes from the credential. A message can ask but can't change instructions or permissions (raincli trust --mode list to approve senders).

Not yet

  1. Not end-to-end encrypted.
  2. 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 access

Already invited? Sign in