Skip to content

feat(file-transfer): P2P file transfer via WebRTC + Durable Object signaling - #63

Merged
slaveofcode merged 2 commits into
developfrom
feat/p2p-file-transfer
Aug 1, 2026
Merged

feat(file-transfer): P2P file transfer via WebRTC + Durable Object signaling#63
slaveofcode merged 2 commits into
developfrom
feat/p2p-file-transfer

Conversation

@slaveofcode

Copy link
Copy Markdown
Owner

New P2P File Transfer tool (/tools/file-transfer, Files) — send a file directly to another device, peer-to-peer.

First server-side component: a tiny Cloudflare Durable Object (SignalRoom, free SQLite tier) added to the existing Worker relays only the ~2KB SDP/ICE handshake at /api/signal/<room>. File bytes travel peer-to-peer over a WebRTC data channel and never touch our server.

  • Mandatory ack-before-connect gate.
  • STUN-only (public STUN, no TURN); clear failure message on restrictive networks.
  • Shareable room link; sender picks a file, receiver downloads. Backpressure via bufferedAmountLowThreshold. Robust to either peer connecting first.

Pure tested logic: signal.lib (room ids/link/parse), file-transfer.lib (chunking/meta/progress). Worker+DO bundle validated via wrangler deploy --dry-run.

Spec+plan under docs/superpowers/. Shared signaling infra will be reused by the video call (item 5).

529 tests pass · lint 0 errors · build green (/tools/file-transfer built).

⚠️ Deploy note: this introduces the DO + a SQLite migration (new_sqlite_classes). After the staging deploy I'll run a two-WebSocket signaling smoke test against staging before promoting to production.

🤖 Generated with Claude Code

Kresna and others added 2 commits August 1, 2026 09:13
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New Files tool (/tools/file-transfer): send a file directly to another
device, peer-to-peer. File bytes travel over a WebRTC data channel and never
touch our server; a tiny Durable Object (SignalRoom, free SQLite tier) on the
existing Worker relays only the ~2KB SDP/ICE handshake at /api/signal/<room>.

- Mandatory ack-before-connect gate.
- STUN-only (public STUN); clear failure message on restrictive networks.
- Shareable room link; sender picks a file, receiver downloads. Backpressure
  via bufferedAmountLowThreshold. Robust to either peer connecting first
  (WebRTC initiator decoupled from app send/receive role).

Pure tested logic: signal.lib (room ids, link, message parsing), file-transfer
.lib (chunking, meta, progress). Browser transport (signal-client, peer),
useFileTransfer hook, thin island. Worker+DO bundle validated via wrangler
dry-run. Spec+plan under docs/superpowers/. Shared infra reused by the
upcoming video call (item 5).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
goodwebtools 02b8e1b Aug 01 2026, 02:26 AM

@slaveofcode
slaveofcode merged commit 6fe1fa9 into develop Aug 1, 2026
2 checks passed
@slaveofcode
slaveofcode deleted the feat/p2p-file-transfer branch August 1, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant