Writing · Tools
Agents That Wake Each Other Up
How agentlink lets AI coding agents on different machines and Claude accounts message each other, and what that took.
We run coding agents on more than one machine, under more than one Claude account: one on the desktop working on the API, another on the laptop working on the web app. Sooner or later one of them needs something only the other knows, such as which endpoint the frontend should call. Until now, the way to get that answer was a person copying text from one terminal to the other.
agentlink removes the copying. Each agent has an address, like api@laptop.local, and any agent can message any other. A message arrives even when the receiving session is idle: it wakes up, reads the message, does the work and replies.
What Claude Code already does
Claude Code can message other sessions itself, but when we tested it in November 2026, it only reached sessions on the same Claude account. Two accounts on one machine couldn’t see each other, in either direction. Across machines, it worked only through Remote Control, which routes through Anthropic and again only reached the same account.
That’s a reasonable design for one person on one subscription. It doesn’t fit a team, or one person with a work account and a personal one, or an agent that isn’t Claude.
Waking an idle session
An agent that only reads messages when someone types to it isn’t much use. The answer to “which endpoint?” should arrive while you’re making coffee, not the next time you look at the other terminal.
agentlink does this with a Claude Code hook. Setup adds a hook that runs in the background of each session and waits. When a message arrives for that session, the hook exits with a code that tells Claude Code to start a new turn, even if the session was idle. Claude then reads its inbox and acts. When the turn ends, however it ends, the hook starts waiting again.
The hook passes Claude no message text, only a fixed line saying there’s mail. Claude reads the messages itself through agentlink’s inbox tool, so nothing another agent writes ever reaches Claude disguised as output from Claude Code. Messages are also labelled as coming from another agent, not from the user, and a woken session still stops at its normal permission prompts.
No server
There’s no agentlink service to sign up for. Each machine runs a small node, a Node.js process with a SQLite store, and the nodes talk to each other directly.
- Discovery. Machines on the same network find each other through encrypted broadcasts. Across networks, Tailscale connects them.
- Identity. Each machine has its own key. Nodes talk over TLS 1.3, and every message is signed by the machine that sent it, so a machine that relays a message can’t alter it.
- Membership. The network is a signed list of machine keys. Adding a machine takes a one-time invite: a line of shell whose download only succeeds against the inviting machine’s key, and which expires after 24 hours.
- Delivery. Messages are stored at every hop and retried. If the recipient’s machine is off, up to three other machines keep copies for up to seven days, and the first to see it come back delivers.
Not just Claude
Agents get send, inbox and peers through an MCP server, so any agent that speaks MCP can join. Only Claude Code has the wake hook; other agents check their inbox with a tool call. We’ve run a full round trip with Gemini CLI: Claude asks, Gemini answers, and Claude wakes up with the answer.
Setup
Setup is one prompt pasted into Claude Code, which runs the installer. The installer prints a prompt to paste on the next machine. It needs no sudo, accounts or config files. On a Mac, agentlink installs as a signed app.
Limits
- Apple silicon Macs and Linux only, for now.
- Machines must share a network or run Tailscale.
- A woken session still asks before anything that needs permission, so it isn’t fully hands-off. That’s deliberate.
Where it fits
Our working paper The Heat Death of the Codebase? sizes fleets of coding agents. One of the forces that limits a fleet is coordination: agents redo or undo each other’s work because they don’t know what the others are doing. In one study, a shared log of who had claimed which task cut the share of agents redoing a teammate’s work from 78% to none. Agents that can ask each other questions directly are another way to keep that cost down, once a fleet spans more than one machine.
agentlink is free and MIT licensed. The one-minute demo shows it from setup to reply, and the code is on GitHub.