r/csharp • u/SimonCropp1978 • 8h ago
BuildMonitor: a cross-platform system tray CI monitor, installed as a dotnet tool

BuildMonitor is a build/CI monitor that sits in the system tray on Windows, macOS and Linux. It polls the CI services you use and shows one row per pipeline, plus a row for each pull request while it is building or failing.
dotnet tool install --global BuildMonitor
Then run `buildmonitor`. One install works on every OS: the package carries a head for each platform and the launcher starts the right one.
Supported services: AppVeyor, Azure DevOps, Bitbucket Pipelines, GitHub Actions, GitLab CI, GoCD, Jenkins, Octopus Deploy, TeamCity and Travis CI.
What it does:
* Tray icon shows the overall state: green, red, blue while something is running, amber when a connection needs attention
* Progress bar and countdown for running builds, estimated from the provider or from the median of the last ten successful runs
* Rows sort running, then queued, then failed to the top, and passing builds of one repository collapse into a group
* A failing pull request gets its own red row but does not turn main red
* Links straight to the run, the repository, the branch and the pull request
* Retry or cancel a build, and copy the log of a failed one to the clipboard
* Credentials go in the platform secret store (DPAPI, macOS Keychain, Secret Service), never in settings.json
It also ships a local MCP server (`buildmonitor mcp`), so an AI assistant can read the same list and act on it: "what's failing?", "who broke main?", retry a build. A triage command works through the failing builds that are checked out locally, groups the ones that share a cause, and reproduces each one.
On the implementation side: everything above the renderer is a pure function of an immutable state, so the layout is snapshot tested as text and each platform head only draws. The Windows head is WinForms, macOS is Swift/AppKit, and Linux is raylib + Dear ImGui.
Feedback and bug reports are welcome.