Using it

Your phone

Pair a phone with voodoo pair, and it reaches this machine from anywhere, with nothing in between.

A paired phone reaches this machine from anywhere: across your own network, or through the internet, with an encrypted connection straight to the machine. There is no account and no server of ours in between. The phone dials the machine by its key, and only a phone you paired can.

Pair one

voodoo pair

It shows a QR code and waits. Scan the code with the Voodoo app, or paste it into the app if the camera can’t see the screen. The code works once and expires in ten minutes, and what gets paired is the phone that scanned it: the code alone is no use from any other phone.

See them, and forget one

CommandWhat it does
voodoo phonesThe phones paired with this machine: their names, keys, when they paired and when they were last here.
voodoo unpair <name>Forget a phone, by its name or the start of its key. Its key can’t reach this machine after this.
voodoo statusSays whether the link is up, and whether a relay has answered so that a phone off your network can find the machine.

How it stays yours

The link is iroh. The machine has a key of its own, kept in link.key in lu’s config folder, and so does the phone. A connection is QUIC, encrypted end to end with those keys as the two identities, whether it runs straight across the room or, when no direct path opens, through one of n0’s relays. A relay only forwards encrypted packets; it can’t read them. Delete link.key and every phone is unpaired at once. A phone that isn’t paired is closed at the handshake, before it can ask anything.

A phone can do everything you can in the terminal, except three things that stay on the machine: it can’t let another phone in, forget one, or stop the daemon.

Turn it off

Set "link": false in the config, or run the daemon with LU_LINK=off, and it never touches the network.

The app

It lives in apps/mobile in the repository, iOS first, and today you build it yourself, with Xcode installed:

pnpm --filter @voodoo/mobile ios

The first run fetches iroh’s iOS build. The app pairs by scanning or pasting the code, shows the machine and its projects as they change, and starts, types into, restarts and ends sessions. Its README has the rest. Raise-to-talk, Live Activities, push and Android are on the roadmap.

To carry it on a phone rather than in the simulator, plug the phone in, or pair it with Xcode, and run pnpm --filter @voodoo/mobile phone. That builds the app that runs on its own and signs it with the Apple team named in app.json, so set that to yours. With the phone nowhere near, eas init once and then pnpm --filter @voodoo/mobile build:phone has EAS build it, to install from the page the build ends on.