TRANSPORT INDEPENDENT

Prove the whole folder arrived.

Create a signed inventory before you send. Your recipient checks every filename, byte count, and SHA-256 hash after it lands—over any NAS, SFTP, drive, or peer-to-peer link.

No account · No upload · No tracking

Pixel-art file packet travelling securely between two computers
TX signed manifest RX verified folder
10,000files checked
1altered file found
0false reports

This is evidence of contents, not a promise from the transport.

01 / THE RELAY

Three commands. One unambiguous handoff.

  1. 01

    Sign the inventory

    The sender hashes every file and signs the ordered list with an Ed25519 identity.

    handoff create ./final -k sender.key
  2. 02

    Move it your way

    Copy the files and receipt through your existing NAS, SFTP client, drive, or private link.

    handoff package ./final -m receipt/manifest.json -o package
  3. 03

    Verify what landed

    The recipient sees exact missing, altered, and unexpected paths—without uploading anything.

    handoff verify manifest.json ./files -p sender.key.pub

02 / BUILD

A single binary. Open format.

Rust 1.85+ · MIT licensed · JSON output for scripts · no telemetry

~/handoff
$ git clone https://github.com/B-Divyesh/sf-remote-file-handoff-manifest.git
$ cd sf-remote-file-handoff-manifest
$ cargo install --path .
✓ handoff 0.1.0 ready

SHA SHA-256 per file

SIG Ed25519 signed

AGE Optional encryption

JSON Scriptable output

03 / RECEIVE

Check a handoff in this browser.

Select the plain JSON receipt, the received folder, and the sender public key. Hashing happens on this device; nothing leaves the tab.

Choose manifest.json. Encrypted receipts require the CLI.
Choose the package’s files folder. Empty folders must be checked with the CLI.
Use the .pub file received through a trusted channel.

READY // LOCAL MODE

Waiting for a receipt

Your exact missing, changed, and extra paths will appear here.

04 / PRIVATE MODE

Filenames can be sensitive too.

Add --encrypt and provide RFHM_PASSPHRASE. Both JSON and HTML receipts are encrypted with the age file format; your files remain where they are.

Read the security notes