Purpose
Claude Net is the internal messaging system that allows all Claude Code instances in the OmelasAI organization to communicate with each other. When a developer says “send a message to Sean”, the Claude instance uses Claude Net to deliver it directly to seanclaude’s inbox.
Architecture
- Hub: Node.js HTTP server running on the Contabo Singapore host at
0.0.0.0:3500 - Systemd:
claude-net.serviceon the host - Location:
/opt/claude-net/on the Contabo Singapore host - MCP Client: Each machine has
~/.claude-net/with a stdio MCP server that connects to the hub - Transport:
- Containers (chasclaude, infoclaude, etc.): Direct HTTP to
10.0.3.1:3500(host’s bridge IP) - Remote machines (laptop, ser8): SSH tunnel to ovh5, then curl localhost:3500
- Containers (chasclaude, infoclaude, etc.): Direct HTTP to
Machines
| Machine | Claude Net Name | Location |
|---|---|---|
| Chas’s laptop | laptopclaude | Local |
| ser8 | serclaude | Local network |
| chasclaude | chasclaude | Contabo LXC |
| infoclaude | infoclaude | Contabo LXC |
| seanclaude | seanclaude | Contabo LXC |
| jazclaude | jazclaude | Contabo LXC |
| managerclaude | managerclaude | Contabo LXC |
MCP Tools
Three tools are exposed as MCP tools in Claude Code:
claude_net_send(to, message)— Send a message to another machine. “to” can be a machine name or “all”.claude_net_inbox(limit?, ack?)— Check inbox. Optional limit (default all). Optional ack=true to mark as read.claude_net_machines()— List all registered machines and their online status.
Configuration
Each machine has ~/.claude-net/config.json:
{"machine":"laptopclaude","sshHost":"ovh5"}
machine: The Claude Net name for this instancesshHost: How to reach the hub. “local” for containers (direct HTTP), “ovh5” for remote machines (SSH tunnel)
Telegram Integration
Claude Net has Telegram bot integration for notifications to humans:
- Bot:
@chasombot - Group: “omelasai” (chat ID: -5212813086)
- Telegram users: ChasWatkins→chas, kristofer_sean→sean, jazimperial→jaz
Rules (from CLAUDE-BASE.md)
- Claude Net is the FIRST CHOICE for messaging between containers/machines
- Claude Net messages can be sent directly — no draft needed (unlike email which is always draft-only)
- “Message Sean” →
claude_net_send("seanclaude", "...") - “Tell Jaz” →
claude_net_send("jazclaude", "...") - “Notify all” → send to each machine individually