- CSharp 62.1%
- JavaScript 20.2%
- HTML 8.1%
- CSS 6.7%
- Markdown 0.9%
- Python 0.6%
- PowerShell 0.6%
- Yaml 0.5%
- Shell 0.2%
- JSON 0%
QBMonitor
QBMonitor is a 99% vibecoded self-hosted BitTorrent dashboard and control plane. It bundles an in-process SOCKS5 interceptor (with optional MITM of HTTPS trackers), a per-torrent diagnostic surface, and a browser UI on top of an ASP.NET Core server. A native tray/menu-bar wrapper is included for desktop use. An optional docs/wiki sidecar adds RAG-powered Q&A over the project documentation.
What lives here
src/QBMonitorMain ASP.NET Core server, REST API, SignalR hub, background pollers, and web UI.src/QBMonitor.RagSidecarOptional docs/wiki indexing and query sidecar, proxied through the main app.src/QBMonitor.TrayAvalonia tray/menu-bar wrapper that bundles and launches the server for native desktop use.docsInstall guide for third parties (SETUP.md, SETUP-WINDOWS.md, SETUP-DOCKER.md).
Current runtime shape
- Main dashboard/admin surface
Default listener:
9100 - Guest/public dashboard
Default listener:
9101 - RAG sidecar
Default listener:
9115
The main server owns the dashboard UI and proxies safe RAG endpoints same-origin. The guest/public surface is server-enforced and intentionally limited to aggregate, read-only views plus Docs Chat.
Quick start
Docker dev stack
From the repo root:
docker compose up -d
docker compose logs -f qbmonitor qbmonitor-rag
Current docker-compose.yml publishes:
9100:9100main dashboard/admin9101:9101guest/public dashboard9115:9115RAG sidecar
Native tray publish
Cross-platform tray publish helpers live in scripts/:
./scripts/publish-tray-all.sh
.\scripts\publish-tray-all.ps1
Both scripts clean the server and tray projects, then publish:
win-x64linux-x64osx-x64osx-arm64
RID arguments can be passed to limit the matrix.
Build/tooling notes
global.jsonprefers the .NET 8 SDK family, but allows newer installed SDKs when needed.Directory.Build.propsredirects MSBuild intermediate files to a local temp cache on Windows so tray/server builds work reliably from UNC paths.- The repo explicitly excludes local
obj/andbin/trees from default compile globs to avoid stale generated file bleed-through.
Security/public-mode notes
- Main-port requests from trusted private networks behave like admin traffic unless an explicit guest/public listener is used.
- The guest/public listener is always treated as guest traffic unless an admin token is supplied.
- Untrusted main-port requests are forced through the same public-mode restrictions as the guest listener.
- Guest/public mode is aggregate-only by design. It does not expose torrent lists, tracker internals, settings, audit streams, or controller detail.
Install
- docs/SETUP.md - master setup guide (read first)
- docs/SETUP-WINDOWS.md - Windows native path
- docs/SETUP-DOCKER.md - Linux/Docker path
- GitHub Releases - pre-built Windows .zip and Linux .tar.gz (self-contained .NET 8, no runtime install required by the third party)
- GitHub Container Registry - multi-arch Docker image (linux/amd64, linux/arm64)