Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
rustTorrent — a modern, self-hostable BitTorrent client written in Rust. Web UI, HTTP API, qBittorrent-compatible endpoints, streaming, and Docker support.
Translation pending
Developer toolsRust · TypeScriptGitHub @TheDancingDeveloper-orgOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
A modern BitTorrent client written in Rust — fast, lightweight, self-hosted
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A modern, self-hostable BitTorrent client written in Rust — a single small binary with a clean web UI, a full HTTP API, and qBittorrent-compatible endpoints for the tools you already run.
Beta software. rustTorrent is under active development. Expect bugs, breaking changes, and incomplete features. Report issues.
Website: rusttorrent.dev · Live demo: rusttorrent.dev/demo · Discord: discord.gg/pu6chSqpnJ
rtbit-fluent, a GPU-rendered client built on gpui with
the Fluent design system, for managing a local or remote daemon. Linux .deb and
binary and a signed Windows .exe ship with each release.docker run -d --name rusttorrent \
-p 127.0.0.1:3030:3030 -p 4240:4240 \
-v rtbit-db:/home/rtbit/db \
-v rtbit-cache:/home/rtbit/cache \
-v ~/downloads:/home/rtbit/downloads \
-v ~/completed:/home/rtbit/completed \
ghcr.io/thedancingdeveloper-org/rusttorrent:latest
Or build from the repository:
git clone https://github.com/TheDancingDeveloper-org/rustTorrent.git
cd rustTorrent
docker compose up --build -d
Ports: 3030 (web UI + API), 4240 (BitTorrent TCP + uTP). Publishing 3030
without an address, as -p 3030:3030 or the bundled compose file does, makes it
reachable from your whole network. Until the first-run setup is complete, anyone
who can reach that port can claim the setup, so finish setup before exposing it,
or keep it on 127.0.0.1 as in the command above.
Volumes: the image declares four volumes. Mount all of them to keep state across container upgrades and removal.
| Container path | Contents |
|---|---|
/home/rtbit/db | Session, RSS, DHT and credential state (XDG_DATA_HOME). Back this up before upgrading. |
/home/rtbit/cache | Cache data that can be rebuilt. |
/home/rtbit/downloads | Default download folder for new torrents. |
/home/rtbit/completed | Folder for completed torrents, when a completed folder is configured. |
Image tags: latest and beta both point at the most recent v* release tag,
and <tag> (for example v0.1.0-rc.1) is that release. Pin an exact tag when you
need reproducible deployments. Other tags are used for development:
staging tracks main, dev tracks the dev branch, and sha-<commit> is an
immutable build of one commit. Container images are published for linux/amd64
and linux/arm64 for release tags only; main and dev builds are linux/amd64.
Static binaries for Linux and Windows, with SHA256 checksums, are published at dl.rusttorrent.dev/latest:
curl -LO https://dl.rusttorrent.dev/latest/rtbit-linux-x86_64
chmod +x rtbit-linux-x86_64
./rtbit-linux-x86_64 server start ~/Downloads
The web UI comes up at http://localhost:3030.
git clone https://github.com/TheDancingDeveloper-org/rustTorrent.git
cd rustTorrent
cargo build --release
./target/release/rtbit server start ~/Downloads
Requires a recent stable Rust (CI builds with 1.95) and Node.js/npm for the bundled web UI. See docs/TESTING.md for running the test suites.
Most behaviour is configurable from the web UI's settings dialog or via CLI flags
(rtbit --help). The first browser visit walks through authentication setup.
| Path | Contents |
|---|---|
crates/rtbit | CLI binary and server entry point |
crates/librtbit | Core session, torrent state machine, storage, HTTP API, web UI |
crates/librtbit-* | Protocol building blocks: bencode, DHT, peer protocol, trackers, UPnP, LSD |
crates/rtbit-fluent | Native desktop client (gpui) |
crates/rtbit-ui-core, crates/rtbit-client | Toolkit-free client state and the daemon API client it uses |
desktop/ | Tauri desktop application |
website/ | Static rusttorrent.dev website and deployment assets |
fuzz/ | Fuzz targets for the protocol parsers |
docs/ | Architecture notes, testing guide, fork provenance, release notes (docs/releases/) |
Pull requests run only the CI areas they touch; the merge queue runs the full
suite before anything reaches main. See docs/ci.md.
The project has several names, and they refer to different things:
rusttorrent).rtbit is the command-line program (rtbit server start …) and the
crates/rtbit package.librtbit is the core engine library, in crates/librtbit. It is published
as the swarmforge package, so depend on swarmforge and import librtbit.
The other librtbit-* directories are published as swarmforge-* packages.rustTorrent is a permanent hard fork of rqbit by Igor Katson, licensed under Apache 2.0. The original copyright and license notices are preserved; see NOTICE and docs/FORK_PROVENANCE.md for details of what was imported and when. We're grateful for Igor's work — rustTorrent builds on that foundation.
Apache 2.0 — see LICENSE. Each path in the repository is described in docs/REPOSITORY-LAYOUT.md. Contribution guidelines are in CONTRIBUTING.md, the release history is in CHANGELOG.md, and security reports follow SECURITY.md.