localbolt.app - use it now, no install needed.
Encrypted peer-to-peer file transfer. Files go directly between devices, never stored on any server.
- End-to-end encrypted with NaCl/Curve25519 (same crypto as Signal and WireGuard)
- Direct transfer - files never touch a server
- No accounts - no sign-up, no cloud, no trace
- No file size limits - limited only by your device storage
- Cross-platform - works in any modern browser
- LAN discovery - discovers nearby devices on your local network
- Works offline - self-host on your local network with no internet required
git clone https://github.com/the9ines/localbolt.git
cd localbolt
./start.shThat's it. The script installs any missing dependencies (Rust, Node.js), builds the signaling server, and starts everything.
Open http://localhost:8080 on two devices. Devices discover each other automatically. Select one and start transferring.
Windows:
start.bat
If Rust or Node.js aren't installed, the script will tell you where to get them.
- Open LocalBolt on two devices on the same local network
- Select the other device from the device list (it appears automatically)
- Transfer files by drag-and-drop, encrypted, peer-to-peer, no size limits
The signaling server only helps devices find each other. Once connected, all data flows directly between devices over an encrypted WebRTC channel. The signaling server never sees your files.
LocalBolt is LAN-only. Its signaling server helps nearby devices on your local network find each other. It does not provide cross-internet discovery or remote-network transfer.
- Same network: Devices on your LAN discover each other automatically
- Offline mode: If there's no internet, LAN discovery still works
┌─────────┐ WebSocket ┌──────────────────┐ WebSocket ┌─────────┐
│ Device A │◄──────────────────►│ Signal Server │◄──────────────────►│ Device B │
│ (browser)│ (discovery + │ (Rust, port │ (discovery + │ (browser)│
│ │ connection │ 3001) │ connection │ │
│ │ setup only) └──────────────────┘ setup only) │ │
│ │ │ │
│ │◄══════════════════════════════════════════════════════════►│ │
│ │ WebRTC Data Channel (direct) │ │
│ │ NaCl encrypted file transfer │ │
└─────────┘ └─────────┘
If you prefer to run the components separately:
Signaling server:
cd signal
cargo run --releaseWeb app:
cd web
npm install
npm run dev| Component | Technology |
|---|---|
| Web UI | Vanilla TypeScript, Tailwind CSS |
| Encryption | TweetNaCl (NaCl box: Curve25519 + XSalsa20-Poly1305) |
| Transfer | WebRTC data channels, 16KB chunks |
| Signaling | Rust (Tokio + Tungstenite WebSocket) |
| Discovery | LAN/local-network signaling, IP-based peer grouping |
LocalBolt is part of the Bolt Protocol ecosystem. See PRD.md and ROADMAP.md in this repo for product requirements and roadmap.
| Relationship | Repository |
|---|---|
| Ecosystem governance (mirror) | bolt-ecosystem |
| Protocol spec | bolt-protocol |
| SDK dependency | bolt-core-sdk |
| Bundles (subtree) | bolt-rendezvous |
| Native/mobile app shells | localbolt-app |
| Production web app | localbolt-v3 |
This is an open-source project. Free to use, self-host, and modify.
- localbolt.app — use it in the browser, no install
- LocalBolt App — native/mobile shells over the shared Rust core
MIT — built by the9ines