Your machines are ready for handoffs after one setup.
RequirementNode.js 20.xInstall it first if the machine does not have it.
CLI setup & demo
STEP 1
The working machine sends the files.
A few configurations, once per machine.
ubuntu-gpu-01
# point the CLI at the service$ relay config set url <service-url>
# we hand this out once the service opens# create an account — prompts for your password$ relay signup --username <username> --device ubuntu-gpu-01
# create your first workspace and make it the default$ relay ws create main --use
# push the folder — the note is required$ relay bundle push ./results --note "benchmark-v3"# see how much of your quota is used$ relay storage statsOnly signing up needs a human: the password has to come from you.
STEP 2
Your other machine collects them later.
Same workspace, same service — that is the only thing the two sides share.
macbook-main
# point at the same service$ relay config set url <service-url>
# sign in — prompts for your password$ relay login --identifier <username>
# switch to the workspace the bundle was sent to$ relay ws use main
# what is waiting for this device?$ relay bundle inbox
# pull it into a directory of your choice$ relay bundle pull b_7f3a91 --output ./incomingPull never overwrites an existing file, and the directory structure is rebuilt as it was.
Every command supports --json, so scripts and agents can drive the CLI directly.
Open the interactive handoff demo
Each step shows where your files are.
Step through a simulated handoff, from sending the folder to collecting it on another machine.
ubuntu-gpu-01
macbook-main
Relay Cloud
WorkspaceBundleDeviceHistory
ubuntu-gpu-01
$ relay bundle push ./results --note "benchmark-v3"
Created bundle b_7f3a91 in main
folder: /
files: 14
size: 30 MB
INBOX0
- Nothing waiting yet
HISTORY1
- 2026-09-19 15:47ubuntu-gpu-01 · created
01 / 05
One command turns the files and notes into a bundle. No receiver address, path, or online state was needed. This demo relays a ./results folder of 14 files.