Two agents, one state.
Entangle lets AI agents on your network find each other, join a group with one short code, and share files and JSON over end-to-end encrypted links. Nothing in between can read them.
- Experimental
- v0.7.0
- Rust, one binary
- Windows, macOS, Linux
- MIT or Apache-2.0
Discover, join, sync.
Each machine runs one Entangle process as an MCP stdio server. Discovery is automatic, joining is a human step, and every sync is encrypted end to end.
-
Resonance
Particles advertise over mDNS on the local network and publish only public group IDs, never a key. Where multicast is blocked, static
--peerentries do the same job.entangle scan
-
Joining, by a human
One device opens an invite and shows a short one-time code; every other device enters it once, in any order. The code drives a password-authenticated key exchange, so typing it correctly proves both ends to each other, and each new member is introduced to the rest of the group. Agents never see the code and cannot invite.
entangle group create work --invite 4 entangle group join 4-ion-quark-muon
-
State sync
An agent sends JSON or one file over a Noise
XXpsk3link on TCP 7337. The receiver checks the byte count and SHA-256 before anything reaches its inbox; the other agent observes it, then collapses it.find_entangled_particles sync_entangled_state observe_entangled_states
What it is for.
Each one has a playbook with the exact commands for every machine. Entangle is experimental, so expect rough edges.
-
An agent runs another machine's tests
One agent writes each test step and sends it; the agent on the other machine runs it inside a scope you set, then sends back the exit code and the real output. You get a step-by-step report you can check.
Playbook 08 -
All your devices, one group
Your desktop, laptop and home server join with a single code. Their agents can then hand each other files, notes and JSON state, to one member, a few, or the whole group.
Playbook 02 -
Home and work, kept apart
One machine can belong to several groups at once. Each group has its own members and its own inbox, so a work project never reaches your home devices.
Playbook 04 -
A laptop away from home
Run a repeater on a box you own. When the laptop leaves the LAN, its links fall back to the repeater, which forwards encrypted bytes it cannot read.
Playbook 07
All playbooks, including self-hosting a repeater, Windows with omp, and troubleshooting.
Across networks, through a relay that cannot read.
When two machines cannot reach each other directly, a repeater you host carries the still-encrypted link over WebSocket. The Noise session stays end to end; the repeater forwards bytes it cannot open.
- It seesEnrolled device public keys, the declared group ID, connection timing, traffic sizes.
- It cannot seeParticle names, group keys, invite codes, or any synced content.
- EnrollmentA one-time invite code from the host. Devices pin the repeater's static key; revocation by fingerprint.
- Runs as
entangle repeater serveon a VPS or home box, as a systemd unit or a Docker container. - Relay-only
--relay-onlyremoves the TCP listener and mDNS for machines that must never accept a direct link.
One binary, no administrator rights.
The installer verifies SHA-256 checksums, installs into your user directory, and prints a PATH hint if you need one. Then register it with your MCP client. Entangle is experimental: until 1.0, commands and the wire protocol can change between releases.
Or let your agent do it
Paste this into the agent on each machine. It installs Entangle, registers it with its MCP client and checks the result, and it asks before installs, firewall changes or config edits. You type the group commands and reload the client.
Read https://raw.githubusercontent.com/DailenG/entangle/main/docs/AGENT_SETUP.md and follow it to set up Entangle on this machine.
macOS and Linux
curl -fsSL https://raw.githubusercontent.com/DailenG/entangle/main/install.sh | sh
Windows PowerShell
irm https://raw.githubusercontent.com/DailenG/entangle/main/install.ps1 | iex
Claude Code
claude mcp add entangle -- entangle serve --context project-x
Any stdio MCP client
{ "mcpServers": { "entangle": {
"command": "/ABSOLUTE/PATH/TO/entangle",
"args": ["serve", "--context", "project-x"] } } }