{"id":50851946,"url":"https://github.com/gapmiss/peer-share","last_synced_at":"2026-06-14T14:04:14.337Z","repository":{"id":326157739,"uuid":"1103421456","full_name":"gapmiss/peer-share","owner":"gapmiss","description":"Share files between Obsidian vaults using WebRTC peer-to-peer connections","archived":false,"fork":false,"pushed_at":"2026-06-06T21:56:35.000Z","size":551,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T14:04:07.799Z","etag":null,"topics":["obsidian-md","obsidian-plugin","p2p-file-sharing"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gapmiss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-24T21:12:07.000Z","updated_at":"2026-06-06T21:56:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gapmiss/peer-share","commit_stats":null,"previous_names":["gapmiss/p2p-share","gapmiss/peer-share"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/gapmiss/peer-share","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gapmiss%2Fpeer-share","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gapmiss%2Fpeer-share/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gapmiss%2Fpeer-share/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gapmiss%2Fpeer-share/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gapmiss","download_url":"https://codeload.github.com/gapmiss/peer-share/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gapmiss%2Fpeer-share/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34324004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["obsidian-md","obsidian-plugin","p2p-file-sharing"],"created_at":"2026-06-14T14:04:13.666Z","updated_at":"2026-06-14T14:04:14.308Z","avatar_url":"https://github.com/gapmiss.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Peer Share\n\nShare files between Obsidian vaults using WebRTC peer-to-peer connections, powered by [PairDrop](https://github.com/schlagmichdoch/pairdrop).\n\n## Features\n\n- **P2P File Sharing**: Direct peer-to-peer file transfers using WebRTC\n- **PairDrop Compatible**: Works with PairDrop web and mobile browser apps\n- **Device Pairing**: Pair devices for cross-network file sharing\n- **Share Files \u0026 Folders**: Share individual files or entire folders between vaults\n- **Transfer History**: Track all sent and received files in a searchable sidebar view\n- **Cross-Platform**: Works on desktop (Windows, macOS, Linux) and mobile\n- **Auto-Discovery**: Automatically discover peers on the same network\n- **Progress Tracking**: Real-time transfer progress with detailed status\n- **Multilingual**: Available in 8 languages (English, Spanish, German, French, Russian, Japanese, Korean, Simplified Chinese)\n- **System Notifications**: Optional OS-level notifications for incoming transfers (desktop only)\n- **Configurable**: Custom signaling server, save location, and log levels\n\n## Installation\n\n[Install from community.obsidian.md](https://community.obsidian.md/plugins/peer-share)\n\nFrom Obsidian's settings or preferences:\n\n1. Community Plugins \u003e Browse\n2. Search for \"Peer Share\"\n\nManually:\n\n1. download the latest [release](https://github.com/gapmiss/peer-share/releases/latest) archive\n2. uncompress the downloaded archive\n3. move the `peer-share` folder to `/path/to/vault/.obsidian/plugins/` \n4.  Settings \u003e Community plugins \u003e reload **Installed plugins**\n5.  enable plugin\n\nor:\n\n1.  download `main.js`, `manifest.json` \u0026 `styles.css` from the latest [release](https://github.com/gapmiss/peer-share/releases/latest)\n2.  create a new folder `/path/to/vault/.obsidian/plugins/peer-share`\n3.  move all 3 files to `/path/to/vault/.obsidian/plugins/peer-share`\n4.  Settings \u003e Community plugins \u003e reload **Installed plugins**\n5.  enable plugin\n\n## Usage\n\n### Sharing Files\n\n1. Click the Peer Share icon in the ribbon (left sidebar)\n2. Select a peer from the list of discovered devices\n3. Choose files or folders to share\n4. Monitor transfer progress\n\n### Alternative Methods\n\n- **Context Menu**: Right-click any file/folder and select \"Share via Peer Share\"\n- **Command Palette**: Use `Ctrl/Cmd + P` and search for \"Peer Share\"\n  - `Show available peers` - Open peer selection\n  - `Share current file` - Share the currently open file\n  - `Share files...` - Open file picker\n  - `Open share history` - View transfer history\n  - `Reconnect to server` - Manually reconnect\n  - `Pair with device` - Pair for cross-network sharing\n  - `Toggle connection` - Connect or disconnect from server\n- **Status Bar**: Click the status bar item for quick access to connect/disconnect, show peers, pair, and view your display name\n\n### Receiving Files\n\nWhen someone sends you files:\n1. An incoming transfer dialog will appear\n2. Review the files being sent\n3. Click \"Accept\" to receive or \"Decline\" to reject\n4. Files are saved to your configured save location (default: `Peer Share/`)\n\n### Device Pairing\n\nPair devices to share files across different networks:\n\n1. Run command `Peer Share: Pair with device`\n2. Choose \"Show pairing code\" on one device\n3. Enter the 6-digit code on the other device\n4. Devices are now paired and can discover each other from anywhere\n\nManage paired devices in Settings \u003e Peer Share \u003e Paired Devices.\n\n### Share History\n\nView all your sent and received file transfers in the Share History sidebar:\n\n1. Open via command palette: \"Peer Share: Open share history\"\n2. Or from Settings \u003e Peer Share \u003e Share History \u003e \"Open History\"\n3. Browse transfers grouped by time (Today, Yesterday, This Week, etc.)\n4. Search by filename, peer name, OS, or browser\n5. Filter by direction (sent/received) and status (completed/failed/cancelled)\n6. Export/import history for backup\n7. View statistics and reveal received files in vault\n\n## Settings\n\n| Setting | Description |\n|---------|-------------|\n| **Signaling Server URL** | WebSocket URL for peer discovery (default: `wss://pairdrop.net`) |\n| **Save Location** | Folder where received files are saved (default: `Peer Share/`) |\n| **Discovery Mode** | `Auto-discover` (local network + paired devices) or `Paired devices only` |\n| **Log Level** | Console logging verbosity (Silent, Error, Warning, Info, Debug) |\n| **Auto-connect on startup** | Automatically connect to server when Obsidian loads (default: enabled) |\n| **System Notifications** | Show OS-level notifications for incoming transfers (desktop only, default: disabled) |\n| **Paired Devices** | View and manage paired devices (each can have auto-accept enabled) |\n| **Share History** | Configure history tracking, retention period, and privacy settings |\n\n## Self-Hosted Server\n\nYou can use your own PairDrop signaling server for privacy or reliability:\n\n1. See **[DEPLOYMENT.md](DEPLOYMENT.md)** for detailed hosting options including:\n   - Docker (recommended)\n   - Fly.io, Railway, Render (free tiers)\n   - VPS with Nginx reverse proxy\n2. Update the \"Signaling Server URL\" in plugin settings to your server's WebSocket URL\n\nThe signaling server only handles peer discovery - actual file data transfers directly between peers via WebRTC.\n\n## How It Works\n\n1. **Signaling**: Peers connect to a signaling server to discover each other\n2. **WebRTC**: Once peers are found, a direct WebRTC connection is established\n3. **Transfer**: Files are chunked into 64KB pieces and sent directly peer-to-peer\n4. **Storage**: Received files are saved to your vault using Obsidian's API\n\nData flows directly between peers - the signaling server only facilitates the initial connection and never sees your file contents.\n\n## Security\n\nPeer Share uses **WebRTC's built-in encryption** (DTLS + SRTP) for secure peer-to-peer file transfers:\n\n- ✅ **All file data is encrypted** during transfer (same encryption as Zoom/Google Meet)\n- ✅ **Signaling uses WSS (WebSocket Secure)** - encrypted with TLS like HTTPS\n- ✅ **Server never sees your files** - only connection metadata for peer discovery\n- ✅ **No configuration needed** - encryption is automatic\n\nFor detailed security information, see **[SECURITY.md](SECURITY.md)**.\n\n## Compatibility\n\n- **Obsidian**: v1.0.0+\n- **Platforms**: Desktop (Windows, macOS, Linux), Mobile (iOS, Android)\n- **Peers**: Works with other Obsidian vaults and PairDrop web/mobile browser apps\n\n## Troubleshooting\n\n### Can't see peers\n- Ensure both devices are connected to the same signaling server\n- Check if you're behind a restrictive firewall (may need TURN server)\n- Try the \"Reconnect\" button in settings\n\n### Transfers failing\n- Large files may timeout on slow connections\n- Check your internet connection\n- Try sending fewer files at once\n\n### Connection issues\n- WebRTC requires HTTPS for the signaling server\n- Some corporate networks block WebRTC - try a different network\n\n## License\n\nMIT License - See [LICENSE](LICENSE) for details.\n\n## Credits\n\n- [PairDrop](https://github.com/schlagmichdoch/pairdrop)\n- [Obsidian](https://obsidian.md/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgapmiss%2Fpeer-share","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgapmiss%2Fpeer-share","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgapmiss%2Fpeer-share/lists"}