# Example 07 — E2EE file upload with Shade Streams

Two Bun processes, both running real `Shade` instances. Alice uploads a file
to Bob; the file is chunked, encrypted per-chunk under a per-lane key, sent
over HTTP across 4 parallel lanes, and verified end-to-end.

## Files

- `prekey-server.ts` — boots a `@shade/server` prekey server on port 9991.
- `bob-receiver.ts` — Bob's Shade runtime + a Bun HTTP server that mounts
  `Shade.transferRoute()`. Saves incoming files to `./received/`.
- `alice-sender.ts` — Alice's Shade runtime; uploads a file to Bob.

## Run

```bash
# Terminal 1 — prekey server
bun run examples/07-streams-upload/prekey-server.ts

# Terminal 2 — Bob (receiver)
bun run examples/07-streams-upload/bob-receiver.ts

# Terminal 3 — Alice (sender)
bun run examples/07-streams-upload/alice-sender.ts ./path/to/file
```

The receiver writes the decrypted file to `./received/<filename>` and prints
the matching sha256.
