Tandem lets you connect and control any coding agent—including Claude, Codex, or Hermes—across different devices. It allows all your agents to coordinate with each other seamlessly, whether you're working from a browser, a terminal, or any other client.
$ npx -y skills add Maxmedawar/tandem --agent claude-code
Repo: Maxmedawar/tandem
What's inside
Tandem turns an MCP-capable AI chat into a control desk for all of your coding agents.
Open your browser, desktop AI client, or another MCP agent and ask it to start Claude on your laptop, check Codex on your workstation, continue a task on your server, or stop a runaway terminal command. Your agents stay on the computers where their projects and tools already live. Tandem gives you one secure connection for reaching all of them.
your browser chat / AI client / MCP agent
|
Tandem
_________|_________
| | |
laptop workstation server
Claude Codex Hermes
For example, from a browser client that supports remote MCP connectors:
Show me every agent currently running.
Start Codex on
studioand have it review the authentication changes.
Send the failing test output to Claude on
laptopand ask it to fix the regression.
Stop the shell command running on
serverbut leave the session open.
Tandem is the bridge behind that conversation. It does not replace Claude, Codex, Hermes, or your preferred AI interface.
Without Tandem, each agent is trapped inside the terminal and computer where it started. You switch machines, open SSH sessions, search for the right terminal, and repeat context by hand.
With Tandem, one agent can coordinate the others. You can begin work from a browser, let agents run on the machines that have the right repositories and tools, and come back later from a different client to inspect or steer them.
Paste this into Claude Code, Codex, or another trusted local coding agent on the computer you want to use as the Tandem hub. It will perform the installation and pause only when it needs you to sign in, approve a Tailscale setting, or choose which folders it may use.
Install Tandem on this computer for me from:
https://github.com/Maxmedawar/tandem
Tandem lets an MCP-capable browser chat or AI client see, start, steer, and stop
my coding agents across all of my enrolled computers.
Do the setup yourself. Keep explanations short. Stop only when you need me to
sign in, approve an account setting, or answer a required question.
Safety rules:
- Read README.md, SETUP.md, SECURITY.md, and .env.example before changing anything.
- Preserve unrelated files and working-tree changes.
- Ask me which exact project folders Tandem may use. Never choose my home folder
or a filesystem root. Do not continue until I answer.
- Ask which extra engines I want. Claude is the only default. Do not enable
Codex, Hermes, shell, or Claude permission bypass unless I explicitly request it.
- Never print or paste a consent password, OAuth token, fleet credential,
invitation token, private Tailscale address, or tailnet identity. You may report
only the protected local file paths that setup intentionally prints, without
reading or copying those files' contents.
- Never put a secret in a URL, command argument, issue, screenshot, or log.
- Use Tailscale Funnel only for the public MCP service. Use the separate,
tailnet-only Tailscale Serve service for device traffic.
- Stop if a verification fails. Do not report partial setup as success.
Steps:
1. Check for Node.js 22.6+, tmux, Tailscale, and at least one supported coding
agent. Install missing prerequisites with the normal package manager when safe.
If an install needs administrator approval, ask me first.
2. Check whether Tailscale is running and connected. If I must sign in or enable
HTTPS or Funnel in my account, give me short numbered instructions and wait.
3. Clone the repository if it is not already present, then enter the repository.
4. After I provide the allowed project folders and optional engines, run:
TANDEM_CWD_ALLOWLIST=<exact approved folders> ./setup.sh hub
5. Confirm that setup verified public OAuth, rejected an unauthenticated private
device connection, and detected the hub as a local device.
6. Confirm protected Tandem state is outside the repository and owner-only.
Check permissions without displaying any secret contents.
7. Run npm run typecheck, npm test, and npm audit.
When everything passes, tell me only:
- that Tandem is ready;
- the stable MCP URL reported by setup;
- where setup stored the consent password, without reading it;
- where setup stored the first device invitation, without reading it;
- that I can run ./setup.sh invite once for each additional computer;
- that an invitation expires after 15 minutes if unused, but an enrolled device
stays connected and reconnects automatically.
The same installation prompt lives in SETUP-PROMPT.md.
| Engine | What Tandem controls | Default |
|---|---|---|
| Claude Code | A real interactive Claude Code session | On |
| Codex | A real interactive Codex session | Off until enabled |
| Hermes | An explicitly approved Hermes agent | Off until enabled |
| Shell | A terminal running as your OS user | Off until enabled |
Claude is enabled by default. Enable only the additional engines you intend to expose:
TANDEM_ENABLED_ENGINES=codex,hermes ./setup.sh hub
Shell access is powerful. It gives an approved caller command execution as the Tandem OS user and is not a sandbox.
You need:
tailscale upClone Tandem and tell it which project folders it may use:
git clone https://github.com/Maxmedawar/tandem.git
cd tandem
TANDEM_CWD_ALLOWLIST=/absolute/path/to/project ./setup.sh hub
Setup gives you:
The MCP URL contains no secret. Your client opens Tandem's OAuth approval page when it connects.
Create a separate invitation for each computer you want to add:
./setup.sh invite
Copy the reported invitation file to that computer, clone Tandem there, and run:
git clone https://github.com/Maxmedawar/tandem.git
cd tandem
TANDEM_CWD_ALLOWLIST=/absolute/path/to/project \
TANDEM_DEVICE_ID=studio \
TANDEM_DEVICE_NAME=studio \
./setup.sh device /secure/path/device-enrollment.json
Repeat this for every computer. Multiple invitations may exist at the same time.
The 15-minute limit applies only to an unused invitation file. It does not limit the device. After enrollment, the device stays authorized and reconnects automatically until you rotate its fleet credential or remove its protected configuration.
If the AI client runs on the same computer and you do not want any network listener:
TANDEM_CWD_ALLOWLIST=/absolute/path/to/project ./setup.sh desktop
This writes a local MCP connector under ~/.tandem/desktop/connector.json. The client starts Tandem directly over stdio.
| Tool | What it lets the AI do |
|---|---|
list_devices | See your connected computers and their available engines. |
list_sessions | See live Tandem sessions on a computer. |
open_session | Start or reattach to an agent session. |
send_to_session | Give the agent more work or read its latest output. |
interrupt_session | Stop the current turn while keeping the session alive. |
close_session | End a Tandem-owned session. |
relay | Run Tandem's optional persistent Claude lead-and-worker loop. |
Tandem routes remote sessions using stable names such as studio:review, so later requests return to the same agent on the same computer.
Tandem controls real coding agents and terminals, so treat access to it like remote terminal access.
The folder allowlist controls where a session starts. It is not an operating-system sandbox. Every agent still has the permissions of the OS account running Tandem.
Read SETUP.md for operations and troubleshooting. Read SECURITY.md before exposing a hub.
Tandem works with clients that support remote MCP servers and OAuth. When that capability is available in a browser-based AI product, you can control Tandem directly from that browser conversation. Tandem also works with local MCP clients over stdio.
Tandem provides the agent-control backend. It cannot add MCP support to a third-party interface that does not offer it, and it cannot force a third-party chat to resume on its own.
npm install
npm run typecheck
npm test
npm audit
The automated setup tests use temporary homes, synthetic network names, loopback listeners, and a mocked Tailscale CLI. They do not change your real Tailscale configuration.
MIT. See LICENSE.
FAQ
tandem is a Claude Code plugin with 3 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes tandem-agentic-engineering, tandem-engineering-workflow, tandem-orchestration. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it