jevieDocs Download

↑↓ pick↵ openesc close

Everywhere

Linked computers

Your Mac and your PC linked to each other, so the phone paired with either sees both computers' files and work goes to whichever you name.

FreeMacWindowsPhoneJevie on a second computer

Choose an example to copy it, then try it in Jevie.

Use itHow it worksLimitsWhere it's kept

Use it

Your computers on the wall

Another of your computers is found by itself when it is signed in to your Tailscale and its terminals are on; nobody else's machine ever is (only a login allow: names in ~/.jevie/self/terminals.md). Each is heard through one held request, so nothing is polled: a session asking, stopping, starting or ending arrives at once, a tool's step within 15 seconds. Adding a server needs SSH with your key (no password is ever typed for it), Node 22, rsync and Rust's cargo there; Go too for Jevie's own Tailscale, else that machine's Tailscale is used.

How it works

Each computer names itself from its host name and its kind (Mac, PC). Linking happens on both sides at once: the computer that gave the code is reached at its phone address (the tunnel the phone uses, ~/.jevie/tunnel.json), the other one introduces itself there with the code's secret, its own name and address and a key it made, and is answered with a key of the first one's. Each keeps the other in ~/.jevie/peers.json, readable only by you: the key it sends, and only a fingerprint (a hash) of the key it is sent, so a copy of the file opens nothing.

A linked computer's key opens a short list on the other: whether it is up, its name, folders listed, a file sent or a video played, a sentence asked (the answer streamed back), the sessions and the island read, a message to a session, a command run for on every computer (and that run read back, never another terminal's), its screen watched and, only after Take over, clicked and typed on, and unlinking itself. Everything else refuses it, and it is never accepted beside the computer's own local key. What it asks is treated as asked from your phone: nothing whose reach is the whole machine runs on its word alone, a page opens on your side rather than on a screen nobody is at, its words never answer an agent's question, and approvals are asked where the work runs.

A sentence one computer passed on is never passed on again, so two computers cannot bounce it between them.

A sentence that names a computer (on my pc: …, ask the mac to …, @DESKTOP-4F2A …, … on my mac) is sent by the phone to the computer it is paired with, whichever is chosen, and that one decides in code where it goes: a linked computer's name or kind passes the rest on; its own name or kind (on my mac said to the Mac) answers the rest right there, so the phone with the PC chosen can still ask the Mac by name. A kind names this computer only while no linked one is of that kind too, and one word left over (get the mac address) is a thing named, not a request.

A command on every computer (on every computer: …) is asked of each computer first, with nothing run: each one's own approvals decide, so one where changes are off, or where you said never to that command, says so in its row and is left out. The rest wait for one yes here; then each starts the command in a terminal held by its own session hub, in your login shell, on that computer's own wall. A job here keeps one row per computer: running; needs you, when its terminal asks for a password or a yes or no (the last line of its screen, or the program saying it waits for you, as any terminal's tile shows); done, its terminal closing itself three seconds after it ends cleanly; failed, with its exit code and last lines, its terminal left open with a shell under the output.

A computer that does not answer, or whose Jevie is too old for this, says so in its row and is never asked again behind your back; one that stops answering mid-run is marked unreachable after three tries to read it.

The phone reaches the other computer through the one it is paired with (/peers/<id>/…), so it stays on one address and one pairing; the computer in between adds its key and passes the request and the answer on as they come, a video's ranges included.

Limits

Where it's kept

~/.jevie/peers.json (the linked computers) and ~/.jevie/peer-codes.json (codes not yet used, hashed).

In Jevie, help computers answers from this page as you type.

Updated 3 November 2026 · Something wrong or missing? Tell us