GitHubMonitor is a Windows Presentation Foundation (WPF) application developed in C#. It continuously monitors GitHub for newly created repositories and provides real-time notifications. Users can define custom criteria to filter and display only the repositories that match their specified criteria. Click a toast or double-click a row to open the repo in the browser.
Stack: .NET (Windows TFM), WPF, MVVM (CommunityToolkit.Mvvm), GitHub Search API, WinRT app notifications.
- Features
- Requirements
- Build and Run
- How to Use
- View Menu
- Criteria Mapped to GitHub Search
- Toast Notifications
- Files
- Project Layout
- Limits
- License
- Criteria panel: keywords, language, topic, user/org, stars, age, extra GitHub qualifiers, PAT
- Background polling with start/stop and a one-shot Poll once
- Deduplicated results (seen repo IDs persisted)
- Windows toast on each new match (
ToastGeneric; click opens the repo URL) - View menu to show or hide Criteria, Results, and Log
- Grid splitters to resize Criteria vs Results and Results vs Log
- Hidden Criteria: results and log expand to full width
- Hidden Log: New matches expands to fill the vertical space
- Log panel with Clear log and auto-scroll (stays put if you scroll up)
- Layout, visibility, and criteria saved under
%LocalAppData%\GitHubNewRepoMonitor\
- Windows 10 version 2004+ or Windows 11
- .NET SDK that can target
net8.0-windows10.0.19041.0ornet10.0-windows10.0.19041.0 - Network access to
https://api.github.com - Optional: GitHub personal access token
Anonymous search is limited to 10 requests/minute. A token raises that to 30 requests/minute.
The project file must use a Windows 10 SDK TFM so toast APIs exist:
<TargetFramework>net10.0-windows10.0.19041.0</TargetFramework>
<UseWPF>true</UseWPF>dotnet restore
dotnet build
dotnet runNuGet packages:
- CommunityToolkit.Mvvm
- Microsoft.Extensions.DependencyInjection
Do not set StartupUri in App.xaml. The window is created in App.OnStartup and assigned a MainViewModel from DI.
- Fill in Criteria. Watch the query preview; that string is what GitHub receives.
- Paste a personal access token if you have one.
- Click Start monitoring. The first poll seeds seen IDs (no toast flood) unless Toast on first poll too is checked.
- New repositories appear under New matches and as toasts.
- Double-click a row or click the toast to open the repository.
- Poll once runs a single search immediately.
- Clear seen history allows current matches to notify again.
- Close the window to save settings and stop the loop.
| Item | Effect |
|---|---|
| Criteria | Show or hide the left filter panel. When hidden, Results and Log use the full width. |
| Results | Show or hide New matches (and the log host). |
| Log | Show or hide the log. When hidden, New matches uses the remaining height. |
| Show All | Turns every section back on. |
Drag the vertical splitter to resize Criteria. Drag the horizontal splitter to resize the log. Sizes are written to settings when you drag or close the window.
| Field | Becomes |
|---|---|
| Keywords | Free text |
| Language | language: |
| Topic | topic: |
| User / Organization | user: / org: |
| Min stars | stars:>=N |
| Created within (hours) | created:>ISO-8601 |
| Extra qualifiers | Raw, for example topic:mcp stars:10..50 |
| Exclude forks / archived | fork:false archived:false |
- Examples:New C# repos in the last day: Language C#, Created within 24
- Agent repos with traction: Keywords agent, Min stars 20
Toasts use inbox WinRT APIs (Windows.UI.Notifications).
ToastNotificationManager
.CreateToastNotifier("GitHubNewRepoMonitor")
.Show(toast);The payload is ToastGeneric with activationType="protocol" and launch="https://github.com/...".
If a toast does not appear:
- Confirm the TFM is net*-windows10.0.19041.0 (or another 10.0.17763+ SDK).
- Open Settings → System → Notifications and allow banners for this app. The first toast registers the AUMID GitHubNewRepoMonitor.
- Turn off Focus assist / Do not disturb while testing.
- Run the app as the logged-in user, not as LocalSystem.
Path: %LocalAppData%\GitHubMonitor</mark>
| File | Contents |
|---|---|
| settings.json | Criteria, token, poll interval, section visibility, splitter sizes |
| seen.json | Repository IDs already processed |
The token is stored in plain text. Use a revocable, minimally scoped PAT.
App.xaml / App.xaml.cs DI, resources (BoolToVis, Label style)
Views/MainWindow.xaml Layout, menu, splitters
Views/MainWindow.xaml.cs Splitter persist, collapse columns/rows
ViewModels/MainViewModel.cs Commands, polling, settings snapshot
Models/ GitHubRepo, MonitorSettings, LayoutState
Services/ Search, settings, seen IDs, toasts, URL open
Behaviors/ListBoxAutoScrollBehavior.cs
Converters/InverseBoolConverter.cs
- GitHub search is eventually consistent.
- Keep the poll interval at 5+ minutes to stay under rate limits.
- Public repositories only unless the token can see more.
- Query length is capped by GitHub.
GitHub API terms apply to any token and traffic you generate.
Copyright © Scott Cantwell
GitHubMonitor is provided as-is under the Apache 2.0 license. For more information see LICENSE.