需先自行安装 Node.js,否则 npx 无法运行;下载完成后默认持续做种,不想分享需在 Seeding 标签页手动暂停;serve/watch 等后台模式需加 --daemon 才能在退出登录后继续运行
torlink
baaironMIT活跃维护在终端里直接搜索和下载 BT 种子的工具,零配置开箱即用,省去装客户端、找资源的麻烦。
👾 A sleek, zero-setup torrent finder and downloader that lives right in your terminal.
npx torlnkREADME 未说明硬件要求,只要求安装 Node.js,未提及显存或 GPU
终端里的种子搜索下载器,零配置聚合多个可信源,搜到即下
在终端里直接搜索和下载 BT 种子的工具,零配置开箱即用,省去装客户端、找资源的麻烦。
核心能力
- 一次搜索并发查询多个精选种子源并流式返回结果
- 支持磁力链接、infohash、拖入 .torrent 文件三种输入
- 后台多任务下载,中断后可续传,完成后自动做种
- 多文件下载自动生成 playlist.m3u 按序播放
- 提供 search/seed/watch/serve 等无界面模式供服务器使用
容易踩的坑
- v1.11.0最新正式版2026-11-06 · 2026-11-06 14:41 UTC
torlink can now keep your torrents on your VPN: name the interface, and if the tunnel drops, downloads and seeds pause instead of falling back to your real connection.
Bind to a VPN or any interface. Start torlink with
--interface wg0(ortun0,NordLynx, or the address itself) and every peer, tracker, DHT and search connection goes out from that interface. It works in the TUI,serve,watchandseed, or throughTORLINK_INTERFACE.Pauses when the tunnel drops. If the interface goes away, downloads and seeds stop rather than take another route, and pick up on their own when it is back, on its new address if that changed.
Fixed ports.
--peer-portpins the listen port so one forward on the VPN side covers it, and--dht-portpins the DHT.Network over HTTP.
servereports the binding onGET /network, including how many peers dialed in, andPOST /networkchanges the interface or ports without a restart, so a script can hand over a forwarded port when the VPN moves it.Lighter long runs. A daemon left running for days no longer piles up UDP sockets and memory, since outgoing uTP peers now share one socket.
Clean exits.
watchandfilesexit as soon as their state is saved instead of hanging on open connections.Safer local API. A
serverunning without a token now refuses requests sent by a web page, so a site you visit cannot drive it.1337x removed. Every mirror now sits behind a browser challenge. Movies and TV still search YTS, EZTV, The Pirate Bay and BitTorrented, and
torlnk searchno longer lists the 1337x sources.npx torlnk - v1.10.02026-10-22 · 2026-10-22 19:44 UTC
查看更新说明
This release lets you grab a whole batch at once: mark results with space, then download them together.
Also on git.bairon.dev. torlink's code is now also hosted at git.bairon.dev/baairon/torlink. Issues and pull requests stay here on GitHub, and nothing changes for installs.
Batch downloads. Press space to mark or unmark the result under the cursor, then press
dto download every marked torrent, orDto pick one folder for all of them. With nothing marked,dandDwork on the highlighted row as before.Marks hold steady. Marks survive re-sorting and newly streamed results, and clear on a new search or category. Rows hidden by the filter are skipped, so nothing downloads unseen.
Batch-aware folder prompt. The
Dprompt shows how many torrents are marked and their total size, and cancelling it keeps the marks.npx torlnk - v1.9.12026-10-10 · 2026-10-10 00:16 UTC
查看更新说明
A stuck source no longer stalls a search, and a big seed keeps seeding through a restart.
- Headless search has a deadline:
torlnk searchtakes--timeout(default45s, same grammar as--seed-time). When time runs out, sources that already answered still print, and any source that didn't is reported with code"timeout". A source asking to retry later than the 20s backoff cap now fails right away with its HTTP status instead of holding up the whole search. (#196) - Large seeds survive a restart: a restored seed's grace period now starts after torlink finishes checking the pieces already on disk, so a big torrent with a few pieces to repair keeps seeding instead of being stopped and marked missing.
- FitGirl search finds the exact title: results now sort by relevance instead of date, so a title made of common words no longer gets buried under newer posts that merely mention them. (#198), thanks to @danielshefer1
npx torlnk - Headless search has a deadline:
- v1.9.02026-09-18 · 2026-09-18 19:13 UTC
查看更新说明
Multi-file downloads finish with a playlist, and one torrent can now carry its own seed limit.
- Playlists for anything with more than one track: a finished download drops a
playlist.m3uinto every folder holding two or more audio or video files, nested folders included, ordered the way the filenames read. An existing playlist is never overwritten. Pass--no-playlistor setTORLINK_NO_PLAYLIST=1to skip it. (#192), thanks to @ralyodio - Give one torrent its own seed limit:
POST /addnow takes aseedTimein the same grammar as--seed-time("30d","2h",0to never stop), and it wins over the daemon-wide flag. Theseed-timecontrol action changes it later, even mid-download, andGET /downloadsreports the limit and when it falls due. (#186), thanks to @ralyodio - An escape hatch for uTP socket exhaustion: uTP stays on by default, the way every major client ships it. Where peer counts drive it into
WSAENOBUFSorEMFILE, setTORLINK_NO_UTPand torlink runs without it.
npx torlnk - Playlists for anything with more than one track: a finished download drops a
- v1.8.02026-08-30 · 2026-08-30 15:20 UTC
查看更新说明
Every way into torlink started with a torrent somebody else made. Now it goes the other way too.
- Seed a path you already have:
torlnk seed ./albumturns the folder into a torrent, savesalbum.torrentnext to it, prints the magnet, and starts sharing.servetakes an uploaded.torrentnow too. (#184), thanks to @ralyodio - Search from a script:
torlnk search "<query>"prints one JSON document of merged, source-tagged results, ready to pipe into jq. (#180) - Turn the WebRTC stack off per machine: set
TORLINK_NO_WEBRTCon a box where the native build is unwelcome and torlink runs without it. (#178) - Rows keep every source's trackers: a result found on several sources merges their announce lists instead of dropping the losers', and holds onto them when a download resumes. (#175)
- 1337x results stop doubling up: base32 info hashes are normalized, so they dedupe against the other sources. (#181)
npx torlnk - Seed a path you already have:
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Finding a torrent these days sucks. One site is a minefield of fake download buttons. Another hides the real link under a popup that spawns two more tabs. And after all that, half the results are dead, zero seeders.
torlink is a torrent finder that lives in your terminal, with zero setup and nothing to configure. One search checks a short, curated list of reputable sources at once, and whatever you pick downloads straight to your computer. The files are yours, saved to your downloads folder.
Get started
-
Install Node (from nodejs.org), it's all torlink needs.
-
Open your terminal.
-
Start it:
npx torlnk
That's the only thing you'll type. torlink opens straight to a search bar: search for what you want, paste in a magnet link or a bare infohash, drag a .torrent file from your file manager onto the window, or just press Enter on an empty box to browse the curated library. From there it's all keypresses, nothing to memorize, and ? brings up the full list anytime.
Finding something
Type what you're looking for and press Enter. Results stream in from every source as they answer, tagged with size and how many people are sharing each one, so you can see what'll come down fast. Arrow to a result and press d to save it, or press space on several rows and then d to download them together. shift+d picks a folder for the current result or marked batch.
Your downloads
Active downloads sit up top with their progress, speed, and time left; when one finishes it drops into Recently downloaded just below, so the list stays tidy. Everything's still there when you come back, and anything interrupted picks up where it left off.
Downloads run in the background while you keep searching, so you can queue up as many as you want. They save to your downloads folder, and the Downloads pane keeps tabs on each one; press o anytime to change where that is, or use shift+d to send a result or marked batch somewhere else without changing the default. When something finishes it keeps seeding automatically so the next person can find it too, and the Seeding tab lets you pause or stop that anytime.
When a download comes with several videos or tracks, torlink drops a playlist.m3u into each folder holding more than one, so a course split into modules plays straight through in order. Run torlnk --no-playlist if you'd rather it didn't.
What it searches
A short, hand-picked list of trusted sources:
| Category | Sources |
|---|---|
| Games | FitGirl |
| Movies | YTS, The Pirate Bay, BitTorrented |
| TV | EZTV, The Pirate Bay, BitTorrented |
| Anime | Nyaa, SubsPlease |
Games are the only category that can run code, so they come from FitGirl alone, a repacker with a long, trusted track record; everything else is plain video and subtitles. If a source is down, the search carries on without it, and torlink tells you which one is offline.
Headless
torlink also runs without the TUI, for servers and seedboxes:
torlnk search "<query>" [--category games|movies|tv|anime]
print one JSON document of merged search results
torlnk seed <path> share files you already have
torlnk watch <dir> download anything dropped into a folder
torlnk serve take magnets over HTTP
torlnk files stream finished downloads over HTTP
torlnk attach keep the TUI alive across ssh sessions
Add --daemon to keep seed, watch, serve, or files running after you log out; torlnk --help has the full list of modes and flags.
Sharing something of your own
Everything else starts with a torrent someone else made. seed goes the other way:
torlnk seed ./album
It turns the folder into a torrent, saves album.torrent next to it, prints the magnet, and starts sharing right away. Send anyone the magnet and they pull the files from you.
Driving it over HTTP
serve takes a magnet or a .torrent you already have:
POST /add {"magnet":"magnet:?xt=..."}
POST /add {"torrent":"<base64>"}
Either can carry a seedTime for that one torrent, in the same grammar as --seed-time ("30d", "2h"; 0 means never stop). It wins over the daemon-wide flag, so a box that normally drops seeds after a couple of hours can keep one release alive for a month. Change it later, or on something already downloading, through the control endpoint; GET /downloads reports the limit and when it falls due (seedUntil):
POST /control {"id":"<info hash>","action":"seed-time","seedTime":"30d"}
Binding to a VPN or interface
If torrents should only ever leave through one interface, name it:
torlnk serve --interface wg0 --peer-port 51413
Every peer, tracker, DHT and search socket is bound to that interface's IPv4 address, and the fixed peer port is the one to forward. If the interface drops, downloads and seeds pause instead of taking another route, and pick up on their own when it is back. The same flags work on watch, seed and the TUI, or as TORLINK_INTERFACE, TORLINK_PEER_PORT and TORLINK_DHT_PORT, with nothing new on screen. serve reports the state on GET /network and takes changes on POST /network without a restart. torlink knows nothing about any particular VPN, only the interface; torlnk --help has the details and limits.
Contributing
To run or work on torlink locally:
- Clone the repository and open the folder.
- Install dependencies:
npm install - Run the development version:
Or build it and run the bundled version:npm run devnpm run build npx torlnk
Before opening a PR, skim CONTRIBUTING.md; it lays out the bar with examples from real merged PRs.
Privacy
Your files stay on your disk, and nothing routes through a central server; torlink only talks to the torrent network directly. Once a download finishes it keeps seeding by default, sharing it back so the next person can find it just as easily. The network only works because people pass things along, and even a few minutes makes a real difference. If you'd rather not, opt out anytime: open the Seeding tab, press p to pause or stop any item, and press it again to pick it back up. Always your call.