Remote access
How the iPhone app and the CLI reach the desktop app.
The desktop app serves one API on two listeners:
| Listener | Address | Who uses it |
|---|---|---|
| Loopback | http://127.0.0.1:60223 | The app's own window, the CLI |
| Network | https://<computer>:63129 | Paired phones (local network, Tailscale) |
The loopback listener cannot be reached from another machine. The network listener is HTTPS only, every request on it needs a paired device's token, and it runs only while a phone is paired or a pairing window is open — with nothing paired, nothing listens on the network.
Pairing a phone
Open a pairing window in Settings → Integrations → Devices, or from a
terminal on that computer with actovia pair,
and scan the QR code with the iPhone app. The window lasts two minutes, its
code works once, and five wrong guesses close it.
The phone keeps the computer's certificate fingerprint and refuses any other. The computer keeps only a hash of the phone's token.
From anywhere
At home the phone finds the computer on the local network. Away from home, put both on the same Tailscale network: the phone reaches the same listener through the computer's Tailscale name, with the same pairing.
Setting up Tailscale
- Install Tailscale on the computer and on the iPhone, and sign both into the same tailnet (the same account).
- In the Tailscale admin console, under DNS, keep MagicDNS on. A
pairing link names the computer by its MagicDNS name
(
computer.tailnet.ts.net), never by its bare100.xaddress — iOS trusts the computer's self-signed certificate only for a name — so with MagicDNS off the link holds the local addresses alone, and the phone reaches the computer at home only. - Pair as above. The link carries both the local addresses and the Tailscale name; the phone tries them in order and keeps the one that answered last, so the same pairing works on the sofa and across town.
Nothing else changes: the listener, the port, the certificate the phone pinned and the token are the same on both networks.
Keep the computer awake
The phone can only reach a computer that is running Actovia and not asleep. Actovia does not keep the Mac awake by itself, so for use away from home:
- A desktop Mac, or a laptop on power with the lid open: in System Settings → Energy (on a laptop, under Options), turn on Prevent automatic sleeping when the display is off. The display can still sleep; the computer keeps answering.
- A laptop with the lid closed sleeps unless it is on power with an
external display, or kept awake by a tool such as
caffeinatefrom a terminal (caffeinate -swhile on power) or a utility like Amphetamine. - Wake for network access does not help here: it answers the Mac's own Bonjour services, not an HTTPS listener, and not over Tailscale.
Lock the app rather than the computer if you want it unattended: a paired phone unlocks it with its own Face ID (a locked app).
Unpairing
Revoke a device in Settings → Integrations → Devices or with
actovia devices revoke. The
phone learns it the next time it asks; until then the device is listed as
revoked but not yet told. Reset replaces the certificate, and every phone
has to pair again.
A locked app
While the app is locked, the API answers only an unlock. A paired phone unlocks it with its own Face ID; the CLI with the app-lock PIN.