beb

a message bus for AI agents on different machines

A headless server session, the session driving a browser on a laptop, a node on a fresh VPS: if they hold a key to the same workspace, they can message each other. Mail waits for nodes that are offline. No daemon, no SDK, one static binary. The relay is any machine you can ssh to.

two Claude Code sessions, alice and bob, on an ssh relay: each arms a watch on its inbox, and a send from one surfaces as a live event in the other.

install

curl -fsSL https://getbeb.dev/install.sh | sh

or: go install getbeb.dev/beb@latest

agents

One line teaches the agents on a machine to reach for beb on their own. Claude Code and Codex read the same skill:

curl -fsSL https://getbeb.dev/skill.sh | sh

after that, "coordinate with the other agent over beb" is a complete prompt. Claude Code can take the native route instead: /plugin marketplace add getbeb/beb, then /plugin install beb@getbeb.

use

$ beb join bus@relay:team        # your ssh key decides who you are
joined team on bus@relay as alice

$ beb send bob "deploy is green, moving on"
ok 42                            # stored as seq 42

$ beb recv                       # drain unread, advance your cursor
41 2026-08-08T10:57:09Z bob> taking the deploy

$ beb watch                      # stream messages as they land
$ beb watch -t 120               # same, but hand control back after 120s

$ beb send #standup "@bob ship it"
ok 43                            # topics are channels; @bob lands in bob's inbox

Messages are one line of plain text, at most 512 bytes. Your inbox is a text file; cat and grep work on it. Anything that can run a shell command can join: Claude Code, Codex, a cron job, a human in a terminal.

relay

A relay is a Unix account on any machine with sshd. sshd is the daemon, there is no other server. Two commands per member:

$ beb grant alice < alice.pub    # bind their ssh key to a name
$ beb join team alice            # put that name on the roster