mrkeyoor.com_
Sat 17 Oct 13:31 UTC
Self-Hostedevaluationupdated 12 Oct 2026

TorrServer review

TorrServer fetches and caches torrent data, then serves it over HTTP so a media player can start before the whole file downloads. Its main README is in English, while some community discussion is in Russian. It includes a web interface and an MCP endpoint for managing a shared streaming server.

+11 / 4dstars / 7d
Verdict

Our TorrServer run built in 55 seconds and passed all 34 reported Go tests in 31 seconds, making it worth a trial as an HTTP bridge to an existing media player. Use it when you can configure access and verify seeking on your actual devices. Choose the gst variant deliberately if playback requires conversion, because the standard binary cannot add it through settings.

We ran it

Lab card: what happened when we ran TorrServerScreenshot of TorrServer (yourok.ru)
Install✓ · 106s380 packages
Build✓ · 55s
Tests✓ · 31s34 passed · 0 failed of 34 (go test)
Repo572 files~61,780 lines of source · 139.4 MB · 4 CI workflows

Answers from our run

Does TorrServer build from source?

Dependencies installed in 106 seconds (380 packages), and the build succeeded in 55 seconds. We cloned commit f4ce2d7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do TorrServer's tests pass?

Yes. The project's own test command finished in 31 seconds and reported 34 passed, 0 failed (go test).

Who should not use TorrServer?

Users expecting the standard binary to transcode: the README requires the gst variant and a suitable GStreamer runtime.

What are the alternatives to TorrServer?

WebTorrent, Transmission. Our TorrServer run built in 55 seconds and passed all 34 reported Go tests in 31 seconds, making it worth a trial as an HTTP bridge to an existing media player.

Setup4/5Source path passes; auth and optional GStreamer need configuration
Docs4/5English README details auth, HTTPS, gst variants, and MCP limits
Community4/5October push and release with specific merged fixes
Maturity4/534 passing Go tests; seeking and device playback still need a trial

Who it’s for

Home-server users whose existing media player can open HTTP streams.
Developers connecting a torrent library to an application through the REST API or MCP.
Operators willing to choose cache limits, authentication, and optional media runtimes for their devices.

Who it’s NOT for

Users expecting the standard binary to transcode: the README requires the gst variant and a suitable GStreamer runtime.
Viewers needing bitmap subtitles converted into HLS text tracks: the documented GStreamer path does not convert them.
Remote-server users who cannot configure access: the default bind reaches all interfaces and authentication must be enabled.
Anyone expecting a catalog-backed next-episode selector: the MCP helper uses filenames and viewed marks, with no series database.

Setup reality

Our sandbox installed commit f4ce2d7 under ./server/ in 106 seconds, adding 380 packages. The build passed in 55 seconds, and all 34 reported Go tests passed in 31 seconds with 0 failures. We used an unprivileged Debian container with 3 CPUs, 8 GB of RAM, golang:1.24-bookworm, and no secrets.

A basic server needs reachable torrent peers, a compatible player, and a writable configuration location. Enable Basic authentication with accs.db when needed. Torznab search needs an indexer URL and API key, while the optional Telegram integration needs its bot token.

The default bind reaches all interfaces. Transcoding requires a gst binary and its GStreamer runtime; ordinary binaries cannot enable those routes through configuration. TVs may reject self-signed HTTPS certificates. Our passing Go suite does not measure playback, seeking, or these optional runtime paths.

TorrServer feeds a player while the torrent is still arriving

TorrServer lets a media player request a file over HTTP while the server fetches and caches its torrent data. You don't have to wait for the whole file before opening it. That is useful when a TV or player understands ordinary stream URLs but isn't a torrent client. The README documents local and remote use, an adjustable cache, and a web interface for managing what the server streams.

Our checkout contained 572 files and about 61,780 lines of source in 139.4 MB. The Go project lives under ./server/, with a separate web application. This is a manageable repository to inspect, though the user experience spans torrent retrieval, HTTP delivery, and whatever player receives the URL. A successful server command establishes only part of that chain. Your device's format support and the torrent's available peers still affect whether playback is useful.

What happened when we ran it

Our sandbox installed commit f4ce2d7 in 106 seconds, adding 380 packages, and built it in 55 seconds. We ran the Go project under ./server/ on October 12, 2026, using golang:1.24-bookworm in an unprivileged Debian container with 3 CPUs and 8 GB of RAM. Installation and compilation both succeeded, so the measured source path cleared those basic requirements in a fresh environment.

The test step succeeded in 31 seconds: all 34 reported tests passed, with 0 failures. Our scan also found 4 CI workflow files, no Dockerfile, and no tests directory. Go checks can exist without a directory named tests, and the successful command is the relevant evidence here. These results don't measure startup buffering, seeking, codec compatibility, or sustained streaming. The lab supplied no playback benchmark, and we can't turn a green suite into one.

Transcoding requires the gst variant and its runtime

The README distinguishes standard binaries from the optional gst variant. A normal executable cannot gain GStreamer routes through a settings toggle. If your player needs HLS output or conversion of unsupported media, choose the matching variant and provide its runtime. Linux and macOS require installed GStreamer libraries and plugins; some Windows distributions carry an embedded runtime.

Our 55-second build result doesn't establish that GStreamer, its codec plugins, or hardware encoding worked in the sandbox. The documentation distinguishes copying compatible media into a different container from transcoding it, which changes the encoded content. It also says bitmap subtitles aren't converted. If your viewing setup depends on those subtitles, that limitation is enough to rule out this route. Check the actual file and player before assuming the extra runtime solves compatibility.

Authentication is optional, and the default bind reaches every interface

The server-argument documentation says an empty bind address listens on all interfaces. Authentication must be enabled, and accs.db supplies the Basic credentials. The Docker Compose example explicitly disables authentication. Those are convenient choices for a controlled home setup, but they require deliberate changes for a shared or remote host. Pick the listening address, enable credentials, and decide which devices may reach the port before handing out stream links.

All 34 tests passing in our run says nothing about the access policy you configure. The README explains that many TVs reject self-signed certificates and provides separate HTTPS and HTTP-media modes. Keeping media on HTTP also sends its URLs and Basic credentials without encryption. That tradeoff is documented, so choose it only for the network you intend to trust.

MCP controls the existing library, including permanent removal

TorrServer exposes /mcp on the web server's port, and its MCP documentation describes tools for adding torrents, returning play links, and selecting the next unwatched episode. It uses the REST API's Basic credentials when authentication is enabled. The remove tool can permanently delete a torrent from memory, the database, and disk cache. Read-only database mode restricts mutating tools, a useful setting when an agent only needs library access.

Our 8 GB sandbox doesn't establish a safe cache allowance for your host, especially if several clients stream together. The MCP episode helper also has a narrower job than a media catalog: it parses filenames and skips files recorded as viewed. It has no series database. If filenames don't encode episodes consistently or watch marks aren't updated, the next-episode request lacks the information you'd expect from a catalog-backed television application.

October maintenance addresses real playback and upgrade behavior

The last push was October 11, 2026. GitHub lists 3,121 stars and 25 open issues and PRs, and MatriX.146.1 shipped on October 12. Its release notes include corrections for concurrent stream-state access and browsers retaining an old web interface after an upgrade. The dates and specific merged work show current maintenance.

The stream-state correction needs careful wording. Pull request 909 fixes races on the request path discussed in issue 845, but explicitly says the author couldn't reproduce that reporter's failure and doesn't claim to fix it. Our 31-second test run can't resolve that playback report either. Anyone depending on reliable seeking should repeat rapid range requests and actual player seeks against the chosen release, including concurrent clients if that's the intended use.

Choose WebTorrent for application code and Transmission for downloads

WebTorrent is the alternative to investigate when streaming belongs inside your own JavaScript application. Transmission fits a conventional download-and-seed workflow. TorrServer earns its place when an existing player needs HTTP delivery and you're willing to configure the server around that device, including formats, access, and cache limits.

The 34 passing tests make TorrServer worth a controlled trial for that job. Use a torrent you have permission to distribute and a player you'll actually keep using. Open it, seek near the end, then repeat with another client connected. If that workflow requires transcoding or HTTPS, repeat it with those features enabled. The decision should rest on the playback path you need, with the measured Go suite as supporting evidence.

Alternatives

ProjectWhat it isPick it when
WebTorrentA JavaScript torrent client for streaming inside browser and Node.js applications.pick this instead when you are writing the streaming application and want a library inside it.
TransmissionA BitTorrent client for conventional downloading and seeding.pick this instead when downloading and retaining complete files is the main requirement.

What people are saying

  1. [github-trending] YouROK/TorrServer

Sources

  1. TorrServer English README
  2. TorrServer repository metadata
  3. MatriX.146.1 release
  4. Concurrent stream-state correction and scope
  5. MCP tools and episode-selection limits
  6. WebTorrent
  7. Transmission

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →