Skip to main content
In this guide you’ll send an encrypted file from one machine to another on your local network using Hayate’s Pairing Mode. You don’t need to know any IP addresses — both machines find each other automatically via mDNS and UDP broadcast. By the end you’ll have completed a full transfer, verified the checksum, and learned how to use Direct Mode when you already know the receiver’s address.

Send Your First File with Pairing Mode

Pairing Mode is the fastest way to get started. The receiver waits for a sender that knows the matching four-word code; Hayate handles discovery and connection automatically.
1

Install Hayate on both machines

Make sure Hayate is installed on both the sending and receiving machines before you begin. See the Installation guide for one-liners for macOS, Linux, Windows, and Android.
2

Start the receiver

On the machine that will receive the file, run:
The receiver binds a QUIC listener and begins advertising itself on the LAN via mDNS and UDP broadcast. It will wait until a sender with the matching code phrase connects — no IP address or port number needed.
3

Send the file

On the sending machine, run:
Hayate discovers the receiver automatically, performs an ephemeral X25519 key exchange using the code phrase as a salt, and streams the encrypted file over QUIC.
Prefer to let Hayate pick the code? Run hayate send ./photo.jpg without --code and Hayate prints a randomly generated four-word phrase. Share that phrase with the receiver, who then runs hayate receive --code "word-word-word-word" to connect.
4

Confirm the transfer

Both terminals display a live progress bar during the transfer. When it completes, each side prints the file checksum (Blake3 by default) so you can confirm the file arrived intact:
If the checksums match on both sides, the transfer succeeded.

Direct Mode

When you already know the receiver’s IP address — or when your network restricts multicast traffic — use Direct Mode instead. The receiver binds a port and you connect to it by address.
Direct Mode skips mDNS discovery entirely and connects straight to the address you provide. The encryption handshake still happens — the session is protected by the same ephemeral X25519 key exchange — but without a passphrase, security relies on network locality rather than a shared secret.

Discover Peers

To see which Hayate receivers are currently listening on your network, run:
Hayate scans all detected subnets and streams results live as it finds them. By default the scan runs for 15 seconds. You can shorten the timeout or specify a subnet manually:
Use discover any time you want to find an active receiver without remembering its IP address, then copy the address into a send command.

Next Steps

Send Files

Explore all the options for sending files and directories, including compression and integrity settings.

Receive Files

Learn how to configure the receiver, set output directories, and use auto-accept mode.