Getting Started

Hayate encrypts and transfers files and directories across your local network at wire speed. It uses QUIC transport, X25519 key agreement, and hardware-accelerated AEAD encryption. Peer discovery works on every platform via mDNS with automatic UDP broadcast fallback.


Installation

macOS & Linux

curl -sSf https://shiinasaku.github.io/Hayate/install.sh | bash

Windows (PowerShell)

irm https://shiinasaku.github.io/Hayate/install.ps1 | iex

Android (Termux)

Hayate runs on Termux via aarch64-linux-android binaries. Install from GitHub Releases:

curl -sSfL "https://github.com/ShiinaSaku/Hayate/releases/latest/download/hayate-termux-arm64" -o "$PREFIX/bin/hayate"
chmod +x "$PREFIX/bin/hayate"

Transfer Modes

1. Pairing Mode (Auto-Discovery)

Pairing mode finds peers on your LAN automatically. The sender broadcasts its presence via mDNS and UDP; the receiver picks up whichever arrives first. No IP addresses or port numbers needed.

Receiver (waits for a sender with the matching code):

hayate receive --code "forest-river-mountain"

Sender (broadcasts and connects):

hayate send ./document.pdf --code "forest-river-mountain"

Tip — omit --code on the sender and Hayate generates a random 4-word phrase for you. Share it with the receiver.

2. Direct Mode (IP:Port)

Use direct mode when you know the receiver's address or when you're on a network where multicast is restricted.

Receiver:

hayate receive --port 50001
# prints: ● Listening on 192.168.1.50:50001 via QUIC [io_uring]

Sender:

hayate send ./archive.tar.gz 192.168.1.50:50001

Directory Transfers

Pass a folder path and Hayate streams it as a tar archive — compressed, encrypted, extracted safely:

# Sender
hayate send ./my-project --code "shared-code"

# Receiver
hayate receive --code "shared-code" --output ./downloads/

Security — directory extraction rejects symlinks, hardlinks, absolute paths, and .. traversal. Every entry is validated before writing.


Network Discovery

Scan your local subnet for active Hayate receivers:

hayate discover
# Scans all detected subnets with a 15-second timeout

Specify a CIDR range:

hayate discover --cidr 192.168.1.0/24

Platform Notes

PlatformDiscoveryNotes
LinuxmDNS + UDPio_uring backend, best throughput
macOSmDNS + UDPkqueue backend
WindowsmDNS + UDPIOCP backend, Unicode terminal recommended
Android (Termux)mDNS + UDPepoll backend, auto-discovery works