Skip to main content

CI License

Tandem - one keyboard and trackpad, all your Macs

Run tandem on two Macs sitting side by side, pair them once with a 6-digit code, then just push your cursor off the edge of one screen to control the other machine - clipboard included.

Tandem exists because macOS's built-in Universal Control is flaky in daily use: devices stop seeing each other after sleep, reconnection is hit-or-miss, and when it silently fails there is nothing to inspect or restart. Tandem is the dependable alternative - explicit pairing, automatic reconnection, tandem doctor to diagnose, and logs you can actually read when something goes wrong.

  • Zero configuration - machines find each other via Bonjour; no IPs, no server (and --connect host for networks that block mDNS).
  • Multi-monitor aware - switching only happens at the outer edge of your whole display arrangement, never between your own monitors.
  • Live clipboard sync - copy on one Mac, paste on the other; text and images, deduplicated so nothing is transferred twice.
  • Encrypted - a one-time pairing code, per-connection challenge–response, and ChaCha20-Poly1305 session encryption on everything that follows.
  • Resilient - automatic reconnection after sleep or network blips, and no stuck keys or hidden cursors if a connection drops mid-action.
two Macs pairing in the terminal, then one cursor sliding across both

Quick start

Requires macOS with Python 3.11+. On both Macs:

pipx install tandem-kvm   # or: pip install tandem-kvm
tandem doctor             # verify permissions & environment

(The package is named tandem-kvm on PyPI - KVM (keyboard, video, mouse); the command it installs is just tandem.)

Then, with the second Mac to the right of the first:

# Mac on the left:
tandem --direction right

# Mac on the right:
tandem --direction left

Type the pairing code when prompted, and slide your cursor across.

Three or more Macs? Name each machine's neighbors instead and they form a chain the cursor walks across:

tandem --right macbook-pro                       # leftmost Mac
tandem --left macbook-air --right mac-mini       # middle Mac
tandem --left macbook-pro                        # rightmost Mac

macOS will require the Accessibility permission for your terminal app (System Settings → Privacy & Security → Accessibility). tandem doctor tells you if anything is missing.

How it works

switching happens at the outer edge of the whole arrangement, never between your own monitors

Every machine runs the identical program - no server, no client. They find each other over Bonjour, prove themselves with a one-time pairing code, and stream input over encrypted connections. Switching triggers only at the outer edge of your whole display arrangement, so moving between your own monitors never switches machines. With three or more Macs in a chain, the middle machines relay input along, so the cursor walks from one end to the other. The mechanisms - control modes, edge geometry, chains and relay, pairing and encryption, the wire protocol - are explained in docs/architecture.md.

Documentation

Status & limitations

Tandem is beta software and macOS-only. Machines connect in a left-to-right chain (two Macs need zero configuration; more just name their neighbors), and all machines must run the same version. See the security model for the honest fine print on what the encryption does and doesn't protect against.

Development

Requires Python 3.11+.

git clone https://github.com/visakhunnikrishnan/Tandem.git && cd Tandem
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m unittest discover -s tests   # run the test suite
.venv/bin/ruff check tandem tests                # lint

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tandem_kvm-0.1.0.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tandem_kvm-0.1.0-py3-none-any.whl (49.7 kB view details)

Uploaded Python 3

File details

Details for the file tandem_kvm-0.1.0.tar.gz.

File metadata

  • Download URL: tandem_kvm-0.1.0.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tandem_kvm-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9bee10e2bdb86bdaf1a906cc32edcce6f9717a8b7cfbd6e3e1750c88cc1fffa6
MD5 7f78a8d4898a18492fb9a1919d992d9c
BLAKE2b-256 e7ba8b33f463d7c45de0ba942abb2ecf0f3e6c05fac857e7aef4c46880f55c03

See more details on using hashes here.

Provenance

The following attestation bundles were made for tandem_kvm-0.1.0.tar.gz:

Publisher: release.yml on visakhunnikrishnan/Tandem

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tandem_kvm-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tandem_kvm-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 49.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tandem_kvm-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8684b1dfa136c3b4d8fd0f6da051128f412da01add7743195e339dcb57350168
MD5 5c3b3f27fe808206865c861941d65e33
BLAKE2b-256 8894f476c4bc3f00650e615a4a4028c8a7b6fc1de95b2e5b1eb77c5202475bd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tandem_kvm-0.1.0-py3-none-any.whl:

Publisher: release.yml on visakhunnikrishnan/Tandem

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page