
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@tjamescouch/wormhole
Advanced tools
Easy encrypted file transfer. Send files and directories through a relay with memorable codes.
Easy encrypted file transfer. Send files and directories through a relay with memorable codes.
sender relay receiver
| | |
| generate code: 42-banana-thunder |
| derive encryption key (PBKDF2) |
| derive relay key (PBKDF2, different salt) |
| encrypt payload (AES-256-GCM) |
| | |
| PUT /transfer/{relayKey} -->| |
| | (stores encrypted blob) |
| | |
| "wormhole receive 42-banana-thunder" |
| | |
| |<-- GET /transfer/{relayKey} |
| | (deletes after retrieval) |
| | |
| | decrypt with same code |
| | extract files |
The relay never sees plaintext — encryption key and relay key are derived from the same code using different salts.
# Send a file
wormhole send photo.jpg
# => To receive, run:
# wormhole receive 42-banana-thunder
# Send a directory (packed with slurp)
wormhole send src/
# Receive
wormhole receive 42-banana-thunder
# Self-host the relay
wormhole relay
npm install
npm run build
wormhole send <file-or-dir> Pack, encrypt, and upload
wormhole receive <code> Download, decrypt, and extract
wormhole relay Start the relay server
Options:
--relay, -r <url> Relay URL (default: localhost:8787, or WORMHOLE_RELAY env)
--output, -o <path> Output directory for receive (default: .)
--code, -c <code> Custom transfer code for send
{1-999}-{word}-{word} (~656K combinations from 500-word list)encryption_key = PBKDF2(code, "wormhole-encryption-v1")relay_key = PBKDF2(code, "wormhole-relay-key-v1")Minimal HTTP server with in-memory storage:
| Endpoint | Method | Description |
|---|---|---|
/transfer/:id | PUT | Store encrypted blob (max 1MB) |
/transfer/:id | GET | Retrieve and delete (one-time pickup) |
/transfer/:id | DELETE | Explicitly delete |
/health | GET | Server status |
Rules:
fly deploy from wormhole-relay/)Directories are packed using slurp — compressed into a self-extracting POSIX shell archive, then encrypted and sent through the relay. On receive, the archive is detected and extracted automatically.
# Relay tests (21 tests)
cd wormhole-relay && npm test
# Client tests (28 tests)
cd wormhole && npm test
49 tests covering crypto round-trips, code generation, relay store + HTTP, and E2E file/directory transfers.
MIT
FAQs
Easy encrypted file transfer. Send files and directories through a relay with memorable codes.
We found that @tjamescouch/wormhole demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.