SpawnDev.WebTorrent
1.0.0
dotnet add package SpawnDev.WebTorrent --version 1.0.0
NuGet\Install-Package SpawnDev.WebTorrent -Version 1.0.0
<PackageReference Include="SpawnDev.WebTorrent" Version="1.0.0" />
<PackageVersion Include="SpawnDev.WebTorrent" Version="1.0.0" />
<PackageReference Include="SpawnDev.WebTorrent" />
paket add SpawnDev.WebTorrent --version 1.0.0
#r "nuget: SpawnDev.WebTorrent, 1.0.0"
#:package SpawnDev.WebTorrent@1.0.0
#addin nuget:?package=SpawnDev.WebTorrent&version=1.0.0
#tool nuget:?package=SpawnDev.WebTorrent&version=1.0.0
SpawnDev.WebTorrent
Pure C# BitTorrent/WebTorrent client and server. No JavaScript dependencies. Runs on desktop (.NET) and browser (Blazor WASM).
Features
- Pure C# — No JavaScript interop, no Node.js, no npm. 100% .NET.
- Desktop + Browser — Same library runs on .NET console/desktop apps and Blazor WebAssembly.
- Random-Access Streaming — Read any byte range from a torrent file as it downloads. Perfect for ML model weight streaming.
- WebSocket Tracker — Full tracker implementation with WebRTC signaling relay for browser peers.
- Web Seed Support — HTTP range request fallback (BEP 17/19) when peers aren't available.
- HuggingFace Integration — Optional server extension that proxies HuggingFace model CDN with local caching and automatic torrent generation.
- .torrent Creation — Create and parse .torrent files. Complete Bencode encoder/decoder.
Packages
| Package | Description |
|---|---|
| SpawnDev.WebTorrent | Client library — torrents, peers, streaming |
| SpawnDev.WebTorrent.Server | Server library — tracker, web seed |
Quick Start — Client
using SpawnDev.WebTorrent;
var client = new WebTorrentClient();
var torrent = await client.AddAsync("magnet:?xt=urn:btih:...");
// Stream a file as it downloads
var file = torrent.Files[0];
var chunk = await file.ReadAsync(offset: 0, length: 65536);
Quick Start — Server
using SpawnDev.WebTorrent.Server;
var tracker = new TorrentTracker();
var webSeed = new WebSeedServer("seed-data");
var app = WebApplication.CreateBuilder(args).Build();
app.UseWebSockets();
app.MapWebTorrentServer(tracker, webSeed);
app.Run();
Quick Start — HuggingFace Proxy
using SpawnDev.WebTorrent.Server.HuggingFace;
var proxy = new HuggingFaceProxy(new HuggingFaceProxyOptions
{
CacheDirectory = "hf-cache",
});
app.MapHuggingFaceProxy(proxy);
// Clients access: https://your-server/hf/{repoId}/{filePath}
// Auto-caches from HuggingFace CDN on first request
// Generates .torrent files for P2P distribution
Why This Exists
AI models are big. CDNs can't scale when every user downloads the same 2GB model. SpawnDev.WebTorrent turns every browser into a peer — the more users, the faster delivery. Built for SpawnDev.ILGPU.ML, the GPU-accelerated ML library for Blazor WebAssembly.
Architecture
Browser Client Server (spawndev.com)
┌─────────────┐ ┌──────────────────────┐
│ WebTorrent │◄──WebSocket───►│ TorrentTracker │
│ Client │ (signaling) │ (peer discovery) │
│ │ │ │
│ WebRTC ◄────►│ WebRTC │ WebSeedServer │
│ (P2P data) │ │ (HTTP range fallback)│
│ │ │ │
│ OPFS Cache │ │ HuggingFaceProxy │
│ (persistent) │ │ (fetch + cache + seed)│
└─────────────┘ └──────────────────────┘
▲ ▲
│ P2P piece exchange │ First fetch
▼ ▼
┌─────────────┐ ┌──────────────────────┐
│ Other │ │ HuggingFace CDN │
│ Browser Peers│ │ (origin source) │
└─────────────┘ └──────────────────────┘
Credits
Built by Todd Tanner (@LostBeard) and the SpawnDev team.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SpawnDev.WebTorrent:
| Package | Downloads |
|---|---|
|
SpawnDev.WebTorrent.Server
WebTorrent tracker and web seed server library. Provides WebSocket tracker, piece serving, and torrent management. No HuggingFace dependency — use SpawnDev.WebTorrent.Server.HuggingFace for AI model proxy. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 0 | 3/27/2026 |