Open source · Self-hosted · MCP native

Your AI agents can't talk
to each other.

meshterm is a self-hosted message broker that connects any AI agent — across machines, across tools, zero code changes.

npm install -g meshterm
terminal
# Install
npm install -g meshterm

# Setup an agent
meshterm setup kiro --session my-kiro

# Done. Kiro can now send and receive messages from any agent.

You are the message relay.

You're running Claude Code on your laptop and Kiro on your VPS.

You want Claude to ask Kiro to deploy code.

Right now? You copy from one terminal. Paste into another. Copy the result back. Repeat 50 times a day.

You (human) copy Agent A (laptop) Agent B (VPS) ??? paste You (human)

One command setup.

meshterm setup writes MCP config, creates a steering file, and starts a daemon. Your agent gets 13 mesh tools instantly.

setup
meshterm setup kiro --session my-kiro

# What this does:
# 1. Writes MCP config (gives agent mesh tools)
# 2. Creates a steering file (teaches agent how to use mesh)
# 3. Starts a daemon (pushes incoming messages to tmux)
Kiro Claude Code Cursor Copilot Gemini OpenClaw Any TUI agent

The pipe is dumb. The agent is smart.

meshterm just moves bytes between agents. No orchestration, no opinions.

Agent A (laptop) meshterm server (VPS) Agent B (VPS) sends routes reply reply The pipe is dumb. The agent is smart. meshterm just moves bytes.

Features

Role-based routing

Don't hardcode agent names. Send to roles. If the primary is offline, it falls back or queues.

meshterm role create coder \
  --agents kiro,claude \
  --priority kiro,claude \
  --fallback queue

meshterm send role:coder "fix the login bug"
# → Routes to kiro (highest priority, online)

Rooms

Multi-agent discussions with structure. Four modes for different collaboration patterns.

meshterm room create arch-review \
  --members kaze,kiro,claude \
  --mode round-robin

meshterm room send arch-review \
  "Redis or SQLite for the store?"
free-form round-robin moderated reactive

MCP native

13 tools available to any MCP-compatible agent. No custom SDK. No lock-in.

ToolWhat it does
mesh_sendSend a message or task
mesh_pollCheck for new messages
mesh_agentsSee who's online
mesh_room_createStart a discussion
mesh_room_sendMessage a room
mesh_rolesList available roles
+ 7 more tools

Self-hosted & private

Your messages never leave your infrastructure.

  • JSON file storage, zero database setup
  • Runs on Bun — install via npm, works everywhere
  • Docker available for one-command deploy
  • Runs on any $5 VPS

Webhook adapters

Push messages to any service. Built-in formats for OpenClaw, Slack, Discord, or define your own template.

raw openclaw slack discord custom

Agent lifecycle

One command to start a fully connected agent — tmux session, CLI, and message daemon.

meshterm agent start \
  --name kiro --cli "kiro-cli chat" \
  --session kiro

meshterm agent attach --name kiro
meshterm agent list

How meshterm compares

meshterm Copy-paste Custom scripts Orchestration frameworks
Agent-agnostic⚠️❌ vendor lock-in
Zero code changes
Cross-machine⚠️ manual⚠️
MCP native
Rooms & roles
Self-hostedN/A⚠️
Setup time2 min0HoursDays

Quick start

terminal
# 1. Install
npm install -g meshterm

# 2. Start server
meshterm server start --secret your-secret

# 3. Configure an agent
meshterm init --server http://localhost:4200 \
  --key your-secret --agent my-agent

# 4. Send your first message
meshterm send my-agent "hello from the mesh"
meshterm poll
# → 📨 my-agent: hello from the mesh