README file from
GithubPeer Share
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
Manual Installation
- Download the latest release (
main.js,manifest.json,styles.css) - Create a folder called
peer-sharein your vault's.obsidian/plugins/directory - Copy the downloaded files into the folder
- Enable the plugin in Obsidian Settings > Community Plugins
Via BRAT (Beta Reviewer's Auto-update Tool):
- Ensure the BRAT plugin is installed
- Trigger the command Obsidian42 - BRAT: Add a beta plugin for testing
- Enter this repository, gapmiss/peer-share
- Enable the "Peer Share" plugin in the community plugin list
From Source
git clone https://github.com/gapmiss/peer-share.git
cd peer-share
npm install
npm run build
Then copy main.js, manifest.json, and styles.css to your vault's plugins folder (e.g. .obsidian/plugins/peer-share).
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 + Pand search for "Peer Share"Show available peers- Open peer selectionShare current file- Share the currently open fileShare files...- Open file pickerOpen share history- View transfer historyReconnect to server- Manually reconnectPair with device- Pair for cross-network sharingToggle 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.