One emit. Every agent your users run.

Tell Claude Code, Codex and Cursor when the job is done, from one MCP server.

Your users connect your MCP server to Claude Code, Codex, Cursor, Copilot CLI and others. Most can be woken when the job finishes, each in its own way, and no agent's built-in wake reaches another.

With Wakeshift you write one emit call. Wakeshift recognizes which agent subscribed and wakes it the way that agent can be woken. Your code is the same for all of them.

Try it in two minutes, no sign-up · Read the quickstart

Why it takes one integration per agent today

The built-in options are Claude Code's MCP tasks, codex queue, Cursor's and Copilot's automations for their cloud agents, and the MCP Events clients, which start a new run for each event. How Wakeshift compares covers each one. Building it yourself means one integration per agent, each with its own install, permissions and failure modes, kept working as every agent ships new releases.

One emit, every agent

TypeScript
// In the handler that learns the deploy is live, whichever agent asked
await deployLive.emit({ deploy }, { status: "live", url })

Each agent subscribed through your server wakes with your event's text and payload, marked as coming from your app, not as an instruction from the user. The agent then acts on it: it looks into it, uses your tools or tells the user. How it works has the whole flow.

What each agent does, and what your user approves

Agent Wakes while idle What your user does Typical wake
Claude Code Yes Nothing to install. The agent asks once how to notify the user: in this session, in every session (Wakeshift's plugin, then nothing to approve), or not at all. For this session only, in manual permission mode, the user approves a background monitor and each restart of it (every 25 minutes), or approves once if your app turns on its wait tool (off by default) Seconds
Codex Yes A one-time install through Codex's own plugin commands, then trusts the new hook Seconds
Cursor (CLI and IDE) Yes Nothing to install. Cursor asks before it starts a background command: choose "Run (once)" Seconds
GitHub Copilot CLI Yes Nothing to install. With Wakeshift's optional hooks (a one-time install), nothing to approve; without them, one "Yes" per wake Seconds
opencode Yes A one-time install, then a restart Seconds
Antigravity CLI Yes Nothing to install. It may ask to allow a background command Seconds
Claude Cowork Yes, while Cowork is open Nothing Seconds
OpenClaw Yes, while the gateway runs A one-time install through OpenClaw's own plugin installer Seconds
Hermes Agent Yes, while Hermes runs A one-time install through Hermes's own plugin installer Seconds
Grok Bot Only while it's waiting for events; talking to it interrupts the wait Nothing Seconds, while waiting
ChatGPT (Work chats) Each event starts a run in the chat Asks ChatGPT to watch the event Slower: each one starts a new run
Cursor cloud agents, Goose, Cline No Nothing: what arrived comes with the agent's next call to Wakeshift's tools, or to yours that Wakeshift wraps —

"Seconds" is the time to the agent's first words, most of it the model starting its turn. Any other MCP client that can run a command in the background and is told when it exits is woken too; otherwise its events wait for its next call. Agents has every detail: each install, what it changes, and how to remove it.

What your user consents to

Adding your app is the consent: a subscription starts only when the user asks their agent to watch something, any install runs only if they agree, and your events arrive marked as information from your app, never as the user. The FAQ has the rest.

It serves the standard too

Your events follow MCP Events (SEP-3415), so clients that speak it, such as ChatGPT's Work chats and dots, OpenClaw and Hermes Agent, subscribe natively with the same code, and Wakeshift covers the coding agents that don't. Hosted MCP Events has the detail.

Next