Relayium

Receive files from the command line

Last updated: 2026-07-09

Sending is only half the story — sooner or later you're on the receiving end: a colleague wants to hand you a file across the internet, one of your own machines wants to hand off to another, or you want to reach out and grab something from a server you administer. The Relayium CLI covers all three with a different command for each, and none of them need an account.

Pick receive when someone else is pushing to you by pairing code, serve when you want a standing inbox that trusted machines can push to any time, and pull when you're the one reaching out to a server you can already ssh into.

Three ways to receive, and when each applies

Which command you run depends on who's starting the transfer and how the two machines know each other:

receive: someone sends you a file across networks

This is the receiving half of relayium send. The other person picks a short code and tells you what it is over any channel you both trust — a call, a chat message — then runs relayium send <path> <code> on their end. You run receive with the same code:

relayium receive 428571

# or into a specific directory
relayium receive 428571 ./downloads

serve: turn this machine into a listening drop box

serve works the other way around: instead of you reaching out, other machines push straight to you over relayium:// — built for machines you already trust, like your own laptop pushing to a NAS, or a build server dropping artifacts on a box you own — over a pinned TLS 1.3 connection, no SSH, no rendezvous.

relayium serve

# a specific directory, port, and allowing delete requests
relayium serve --dir ~/incoming --port 9031 --allow-delete

Pre-authorize for unattended serve

For a serve that runs unattended (systemd, a background script), have the pusher run relayium id to print its fingerprint, then approve it ahead of time from the receiving side:

relayium authorize <fingerprint>

pull: reach out and fetch from a server you can ssh into

pull is the mirror of push: instead of waiting for someone to send you something, you reach out over your existing SSH access and fetch files back.

relayium pull user@host:/path/to/files ./local-dest

Frequently asked questions

Do I need an account to receive files?

No. All three ways — receive, serve, and pull — are completely free and need no Relayium account, on either end.

Does relayium receive interoperate with the browser's pairing code?

No. The CLI's pairing-code protocol is separate from the browser's join-link and QR flow at relayium.com — they use different handshakes and don't talk to each other today. That's on the roadmap, not something you can rely on yet.

What happens if an unknown machine pushes to my serve listener?

In a terminal, you're prompted to approve it by address and fingerprint on its first push, and the approval is remembered. Without a terminal — a systemd service, a cron job — there's no one to ask, so an unrecognized pusher is rejected; pre-authorize it first with relayium authorize <fingerprint>.

Can I pull from a server that doesn't have relayium installed?

No. pull always needs relayium on the remote end; there's no tar fallback the way there is for push. Install relayium there first.

Where does relayium keep my identity and trusted peers?

In ~/.config/relayium by default — override the location with --config-dir on any command that touches identity or trust.

Ready to receive your first transfer? Install the CLI and pick receive, serve, or pull.

Get the CLI

Keep reading