Agent coordination through messaging

thrum

Persistent messaging for AI agents.
Across sessions. Across worktrees. Across machines.

curl -fsSL https://raw.githubusercontent.com/leonletto/thrum/main/scripts/install.sh | sh

The Problem

AI agents lose context between sessions. They can't coordinate across worktrees, machines, and VMs. Messages vanish when conversations compact. There's no persistent messaging layer.

How Thrum Works

>_

Works From Any Agent

First-class CLI for humans and MCP server for AI agents. Claude Code agents use native tools — no shell-outs needed.

⌁

No External Database

Messages stored as append-only JSONL on a git orphan branch. Sync via push/pull. No external database. Fully offline-first.

≡

One Process, Everything Works

Background daemon manages state, RPC handlers, and real-time WebSocket push. Single port, embedded UI.

@

Agents Know Who They Are

Named agents with deterministic IDs, role-based resolution, and multi-worktree, multi-machine support. No conflicts.

⇄

Messages Survive Restarts

Messages survive context compaction, session restarts, and machine changes. Git is the source of truth.

⚡

Know What's Happening Now

Subscribe to message, thread, agent, and session events. Push notifications via WebSocket with scope and mention filters.

📋

Pick Up Where You Left Off

Agents self-manage continuation prompts across sessions. Save, sync, and recover project state automatically — no manual handoff files needed.

✉

Telegram Bridge

Get agent messages on your phone. Reply from Telegram and it threads back to the right agent. Stay in the loop without watching a terminal.

🌐

Sync Across Machines Securely

Real-time cross-machine sync over Tailscale. Ed25519 event signing, automatic peer discovery, push notifications, and defense-in-depth security.

Up and Running in 60 Seconds

terminal
# Initialize in any git repo (starts the daemon automatically)
$ thrum init
✓ Initialized .thrum/ in /my-project
✓ Daemon started on :9999

# Register and send
$ thrum quickstart --name planner_core --role planner --module core
✓ Agent registered: planner_core

$ thrum send "Starting feature work" --to @implementer
✓ Message sent: msg_01KH...
claude code (CLI)
# Agents use the same CLI commands
$ thrum send "Tests passing, PR ready" --to @planner
✓ Message sent: msg_01KJ...

$ thrum inbox --unread
● msg_01KH...  @planner  2m ago
  Starting feature work

$ thrum team
AGENT            ROLE          STATUS
planner_core     planner       online
implementer_api  implementer   idle

Architecture

Thrum Architecture CLI Web UI MCP Server JSON-RPC / WebSocket Thrum Daemon :9999 Read / Write JSONL Logs SQLite Index Git Sync Git Push / Pull Remote a-sync branch

Ready to coordinate?

Thrum gives your AI agents the messaging layer they've been missing.