Share files between Obsidian vaults using WebRTC peer-to-peer connections, powered by PairDrop.
Features
- P2P File Sharing: Direct peer-to-peer file transfers using WebRTC
- PairDrop Compatible: Works with PairDrop web and mobile browser apps
- Device Pairing: Pair devices for cross-network file sharing
- Share Files & Folders: Share individual files or entire folders between vaults
- Transfer History: Track all sent and received files in a searchable sidebar view
- Cross-Platform: Works on desktop (Windows, macOS, Linux) and mobile
- Auto-Discovery: Automatically discover peers on the same network
- Progress Tracking: Real-time transfer progress with detailed status
- Multilingual: Available in 8 languages (English, Spanish, German, French, Russian, Japanese, Korean, Simplified Chinese)
- System Notifications: Optional OS-level notifications for incoming transfers (desktop only)
- Configurable: Custom signaling server, save location, and log levels
Installation
Install from community.obsidian.md
From Obsidian's settings or preferences:
- Community Plugins > Browse
- Search for "Peer Share"
Manually:
- download the latest release archive
- uncompress the downloaded archive
- move the
peer-share folder to /path/to/vault/.obsidian/plugins/
- Settings > Community plugins > reload Installed plugins
- enable plugin
or:
- download
main.js, manifest.json & styles.css from the latest release
- create a new folder
/path/to/vault/.obsidian/plugins/peer-share
- move all 3 files to
/path/to/vault/.obsidian/plugins/peer-share
- Settings > Community plugins > reload Installed plugins
- enable plugin
Usage
Sharing Files
- Click the Peer Share icon in the ribbon (left sidebar)
- Select a peer from the list of discovered devices
- Choose files or folders to share
- Monitor transfer progress
Alternative Methods
- Context Menu: Right-click any file/folder and select "Share via Peer Share"
- Command Palette: Use
Ctrl/Cmd + P and search for "Peer Share"
Show available peers - Open peer selection
Share current file - Share the currently open file
Share files... - Open file picker
Open share history - View transfer history
Reconnect to server - Manually reconnect
Pair with device - Pair for cross-network sharing
Toggle connection - Connect or disconnect from server
- Status Bar: Click the status bar item for quick access to connect/disconnect, show peers, pair, and view your display name
Receiving Files
When someone sends you files:
- An incoming transfer dialog will appear
- Review the files being sent
- Click "Accept" to receive or "Decline" to reject
- Files are saved to your configured save location (default:
Peer Share/)
Device Pairing
Pair devices to share files across different networks:
- Run command
Peer Share: Pair with device
- Choose "Show pairing code" on one device
- Enter the 6-digit code on the other device
- Devices are now paired and can discover each other from anywhere
Manage paired devices in Settings > Peer Share > Paired Devices.
Share History
View all your sent and received file transfers in the Share History sidebar:
- Open via command palette: "Peer Share: Open share history"
- Or from Settings > Peer Share > Share History > "Open History"
- Browse transfers grouped by time (Today, Yesterday, This Week, etc.)
- Search by filename, peer name, OS, or browser
- Filter by direction (sent/received) and status (completed/failed/cancelled)
- Export/import history for backup
- View statistics and reveal received files in vault
Settings
| Setting |
Description |
| Signaling Server URL |
WebSocket URL for peer discovery (default: wss://pairdrop.net) |
| Save Location |
Folder where received files are saved (default: Peer Share/) |
| Discovery Mode |
Auto-discover (local network + paired devices) or Paired devices only |
| Log Level |
Console logging verbosity (Silent, Error, Warning, Info, Debug) |
| Auto-connect on startup |
Automatically connect to server when Obsidian loads (default: enabled) |
| System Notifications |
Show OS-level notifications for incoming transfers (desktop only, default: disabled) |
| Paired Devices |
View and manage paired devices (each can have auto-accept enabled) |
| Share History |
Configure history tracking, retention period, and privacy settings |
Self-Hosted Server
You can use your own PairDrop signaling server for privacy or reliability:
- See DEPLOYMENT.md for detailed hosting options including:
- Docker (recommended)
- Fly.io, Railway, Render (free tiers)
- VPS with Nginx reverse proxy
- Update the "Signaling Server URL" in plugin settings to your server's WebSocket URL
The signaling server only handles peer discovery - actual file data transfers directly between peers via WebRTC.
How It Works
- Signaling: Peers connect to a signaling server to discover each other
- WebRTC: Once peers are found, a direct WebRTC connection is established
- Transfer: Files are chunked into 64KB pieces and sent directly peer-to-peer
- Storage: Received files are saved to your vault using Obsidian's API
Data flows directly between peers - the signaling server only facilitates the initial connection and never sees your file contents.
Security
Peer Share uses WebRTC's built-in encryption (DTLS + SRTP) for secure peer-to-peer file transfers:
- ✅ All file data is encrypted during transfer (same encryption as Zoom/Google Meet)
- ✅ Signaling uses WSS (WebSocket Secure) - encrypted with TLS like HTTPS
- ✅ Server never sees your files - only connection metadata for peer discovery
- ✅ No configuration needed - encryption is automatic
For detailed security information, see SECURITY.md.
Compatibility
- Obsidian: v1.0.0+
- Platforms: Desktop (Windows, macOS, Linux), Mobile (iOS, Android)
- Peers: Works with other Obsidian vaults and PairDrop web/mobile browser apps
Troubleshooting
Can't see peers
- Ensure both devices are connected to the same signaling server
- Check if you're behind a restrictive firewall (may need TURN server)
- Try the "Reconnect" button in settings
Transfers failing
- Large files may timeout on slow connections
- Check your internet connection
- Try sending fewer files at once
Connection issues
- WebRTC requires HTTPS for the signaling server
- Some corporate networks block WebRTC - try a different network
License
MIT License - See LICENSE for details.
Credits