handover
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
handover
Hand a task to an AI agent on another machine and get the result back. Works with Claude Code, Codex and any MCP client.
You: handover wait ──▶ host (queue) ◀── agent on any machine picks it up
▲ blocks ── agent sends output + files back
└──── exits with the resultQuick start
1. Pick one machine as the host and run:
OS | Command |
macOS / Linux |
|
Windows (PowerShell) |
|
It prints a join command that contains the token. Show it again any time with handover link.
2. On every other machine, paste that join command. It installs handover, finds the host on your network, and asks one question:
◆ Take handovers automatically on this machine?
│ ● Yes, with Claude Code (runs each task unattended, with your usual permission settings)
│ ○ Yes, with Codex
│ ○ Yes, with both
│ ○ No (tasks wait until you ask an agent to pick them up)3. Check it: handover test on any machine.
✓ host http://192.168.1.20:7777 answers, token accepted
✓ roundtrip pc → host → pc: 526 ms
Round robin:
✓ pc → mac 1008 ms
✓ mac → pc 61 ms
All connections work.4. Hand something over:
handover wait --objective "Write a migration for X" --context-file notes.mdIt blocks until an agent finishes, then prints the output and saves any files to ./handover-<id>/.
Or let your coding agent set it up
Paste this into Claude Code or Codex on each machine:
Set up Handover on this machine: https://github.com/kylepantall/handover
1. Ask me two things: is this machine the host, or does it join an existing host? And should it
take handovers automatically with Claude Code, Codex, both, or not at all?
2. Install it with the README's Quick start command for this OS, adding --no-setup (Windows: -NoSetup).
3. Host: run `handover host` (add `--auto claude`, `--auto codex` or `--auto both` if I said yes). Don't repeat the
token it prints; tell me to run `handover link` myself when I want to share it.
Join: never ask me for the token in chat. Tell me to run `handover join` in my own terminal (it
asks for the token privately, and about auto-pickup) and wait until I say it's done.
4. Never use --full-access unless I ask for it by name.
5. Run `handover doctor` and `handover test`, then tell me which lines aren't ✓ and how to fix them.Related MCP server: LinkedRun
Agents working together
Every agent has its own address: claude@pc, codex@pc. Send a task to whoever should do it:
| Who can take it |
(nothing) | Any agent |
| Any agent on that machine |
| That agent, on any machine |
| Only Codex on |
Example: ask Claude Code: "Have Codex make the graphics for this page, wait for them, then finish the page and open a PR." Claude calls handover_create with to: "codex", then waits in the background with handover wait --id …. Claude Code wakes the session when Codex finishes, and Claude gets the files and carries on. If the request was itself a handover, Claude ends with handover_complete, putting the PR link in the output.
Waiting for a result | How |
Claude Code | Runs |
Codex and other agents | Call the |
You, in a terminal |
|
⚠️ Each agent's auto-pickup worker does one task at a time. A task it's running that delegates to the same agent on the same machine (Claude's worker → claude@pc) waits until it times out. Delegate to the other agent or another machine.
How agents pick up tasks
Setup | What happens |
Auto-pickup on (the setup question, or | Each task runs unattended with |
Auto-pickup off | Claude Code shows pending tasks when a session starts. Ask any agent to "pick up the handover", or to "watch for handovers" ( |
Other MCP clients |
Per-agent settings
handover agents # list: installed, MCP, auto-pickup, access
handover agents all on # every agent takes handovers automatically
handover agents codex off # just Codex stops
handover agents codex full-access # ⚠️ just Codex: no permission prompts or sandbox
handover agents all default-accessAccess | Claude Code | Codex |
default | Your permission settings; handover's own tools allowed | Writes only in the task's own folder, no network; handover's own tools allowed |
⚠️ full-access |
|
|
⚠️ Tasks come from other machines, so treat them as untrusted input. Only give an agent full access on a machine you'd trust anyone on the network with. With default access, an agent can make files and send them back, but it can't change your repos or open PRs: have an open session do that part (see the example above).
If an agent can't finish, it answers FAILED: …, and the task is marked failed.
Commands
Command | Does |
| Make this machine the host; prints the join commands |
| Join a host (asks for the token). The URL is only needed if the host is on another network |
| List agents, or change them: |
| Check every machine reaches every other. Exits 1 if any link fails |
| Check the host, the login service, Claude Code, Codex and auto-pickup |
| Create a task and block until it's done |
| Run tasks in the foreground with an agent |
| Show the queue |
| Host: print the join commands and token |
| Answer test pings on a machine without an agent open |
| Remove handover from Claude Code and Codex |
| Run handover at login |
| Install the latest version |
handover help lists every flag.
Uninstall
OS | Command |
macOS / Linux |
|
Windows (PowerShell) |
|
Removes the login service, the Claude Code and Codex entries, the app, and your config and queue. Keep the config: add -s -- --keep-config (macOS/Linux) or -KeepConfig (Windows).
Reference
| Does |
| This machine is the host |
| Join a host; token from |
| Auto-pickup without being asked |
| ⚠️ Auto-pickup skips the agent's permission prompts and sandbox |
| Agent name (default: hostname) |
| Don't add handover to that agent |
| Don't run handover at login |
| Install only |
| A branch, tag or commit (macOS/Linux) or a release (Windows) |
No option: a menu asks host or join. Old --peer / --relay flags still work (docs/flow.md).
macOS / Linux | Windows | |
Installs | Source + a private, checksum-verified Bun in |
|
At login | Host relay and auto-pickup (launchd / systemd | Nothing by default: runs while Claude Code or Codex is open. Opt in with |
Config |
|
|
⚠️ Windows: allow handover.exe on private networks when the firewall asks. If antivirus flags it, see docs/antivirus.md.
Exit | Meaning |
0 | success: output on stdout, files in |
1 | the agent reported |
2 | cancelled |
3 |
|
130 | Ctrl-C (task cancelled) |
--to AGENT sends it to one machine, --priority N jumps the queue, --json prints {id, status, failureReason, output, files}.
Feature | How |
Order | Highest |
Targeting |
|
Leases | A claim lasts 10 min and is renewed while the agent works; a dead agent's task goes back to the queue and fails after 3 claims |
Persistence |
|
Relay tuning lives in config.json under relay (port, tunnel, leaseSeconds, maxAttempts, retentionHours, data) or as handover serve flags.
Client | Connect with |
Claude Code, Codex | Automatic during |
Claude Desktop, Cursor (stdio) |
|
Any HTTP MCP client |
|
ChatGPT (developer mode) | Needs HTTPS: pick a tunnel in |
Tool | Does |
| Tasks you can pick up |
| Claim the next task |
| Wait for the next task to arrive, then claim it |
| Wait for a task you created to finish; returns its output and files |
| Claim a specific task |
| Extend your claim on long work |
| Send output and files back; unblocks the waiter |
| Read a task without claiming it |
| Delegate a task ( |
File |
|
Env overrides |
|
Log |
|
⚠️ Security
The token grants full access to the queue: treat it like a password. Join commands carry it in
HANDOVER_TOKEN, never as a command-line argument.Task context from another machine is untrusted input to your agent (prompt injection). Keep auto-pickup on default permissions.
?token=URLs may be logged by tunnel providers; prefer header auth.Agent names are self-declared:
--toroutes work, it isn't access control.The host announces its name and a one-way network id on the LAN; the token is never broadcast.
Received files are flat names only (no paths or dotfiles), max 25 MB per request.
Full spec: docs/flow.md.
Development
bun install
bun test tests
bun run typecheck
HANDOVER_SOURCE_DIR="$PWD" bash scripts/install.sh --no-setup # install this checkoutThis server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for task-first delegation to remote workstations and workers.
Coordinate multiple AI agents over MCP: atomic claims, leases, shared ledger, handoffs, tasks.
Personal task list for AI agents: read, add and delegate tasks over MCP, reports return to the task.
Headless task management for bots, apps and AI agents. Remote MCP server, OAuth or access token.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceExposes an agent orchestration task queue as an MCP tool interface, allowing agents to submit, list, get, and update tasks with typed validation.3MIT
- AlicenseAqualityCmaintenanceEnables agents to submit and manage persistent, dependency-aware task graphs with immutable artifacts, resource reservations, durable event streaming, and retryable process execution over MCP.12MIT
- AlicenseNot gradedqualityCmaintenanceEnables durable, least-privilege handoff of bounded tasks from a local producer to a configured MCP worker, with atomic claim, complete, and fail operations under expiring leases.MIT
- AlicenseAqualityCmaintenanceEnables MCP clients to submit tasks to a local file-backed queue and later read or cancel them by ID, with results produced by a separately run worker.3MIT