◆ 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
This is evidence of contents, not a promise from the transport.
01 / THE RELAY
Three commands. One unambiguous handoff.
-
01
Sign the inventory
The sender hashes every file and signs the ordered list with an Ed25519 identity.
handoff create ./final -k sender.key -
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 -
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
$ 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.
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.