81,955 Lines
  • 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%
README.md

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/QBMonitor Main ASP.NET Core server, REST API, SignalR hub, background pollers, and web UI.
  • src/QBMonitor.RagSidecar Optional docs/wiki indexing and query sidecar, proxied through the main app.
  • src/QBMonitor.Tray Avalonia tray/menu-bar wrapper that bundles and launches the server for native desktop use.
  • docs Install 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:9100 main dashboard/admin
  • 9101:9101 guest/public dashboard
  • 9115:9115 RAG 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-x64
  • linux-x64
  • osx-x64
  • osx-arm64

RID arguments can be passed to limit the matrix.

Build/tooling notes

  • global.json prefers the .NET 8 SDK family, but allows newer installed SDKs when needed.
  • Directory.Build.props redirects 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/ and bin/ 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

Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover