A Node.js + WebTorrent app with a modern browser UI for downloading torrents from magnet links or .torrent files.
- Add torrents using a magnet link or file upload.
- Preview metadata before adding (name, size, file list).
- Track live progress, speeds, and peers.
- Filter by folders in the sidebar:
All,In Progress,Completed,Failed,Seeding Off. - Select multiple torrents and run bulk actions.
- Stop/resume seeding per torrent or in bulk.
- Open a torrent folder directly in Finder/Explorer.
- Persist torrent state across restarts via
state.json. - Change download directory from the UI (
config.jsonis updated).
- Node.js 18+
- npm
npm install
npm startOpen: http://localhost:3000
Cmd+A/Ctrl+A: Select all visible torrentsArrow Up/Arrow Down: Move card focusShift + Arrow Up/Down: Extend selection while moving focusEsc: Close shortcuts panel, then clear selection/focus?: Open keyboard shortcuts help
server.js: Express API + WebTorrent enginepublic/index.html: App shell and modal markuppublic/app.js: Frontend behavior and API interactionspublic/styles.css: Stylingconfig.json: Current download directorystate.json: Persisted torrent/seeding statedownloads/: Download output locationtmp/: Temporary upload/preview files
GET /api/torrentsGET /api/torrents/:hashPOST /api/torrents/previewPOST /api/torrents/preview/filePOST /api/torrentsPOST /api/torrents/fileDELETE /api/torrents/:hashPOST /api/torrents/:hash/retryPOST /api/torrents/:hash/stop-seedingPOST /api/torrents/:hash/resume-seedingPOST /api/torrents/:hash/openGET /api/fs/browseGET /api/configPATCH /api/configGET /api/test-torrents
- This is a local utility app; do not expose it publicly without authentication and network hardening.
- Use only content you are authorized to download/share.
- For very large or long-running torrent workloads, a dedicated desktop client may be more suitable.
MIT (see LICENSE).