IISBlitz
Ops console for IIS: sites, pools, config, logs, live CPU/RAM and memory dumps
⚡ IISBlitz
A fast desktop console for the IIS sites on a Windows server: start, stop and recycle, edit appsettings
and web.config in place, watch CPU and memory of every app pool, read logs and Windows events, take a
memory dump — one portable exe that keeps itself up to date. Built with Avalonia UI and .NET 10.
Features
Sites and pools
- Start / stop / restart a site, start / stop / recycle its application pool
- Applications of the site with their pools and a Recycle per pool — recycling restarts one pool only, so sub-applications in other pools are not touched
- Bindings and SSL certificates (subject, issuer, expiry, thumbprint) at a glance
- Automatic
GET /healthprobe — shows the status and version the deployed app reports - Open the site in the browser or its folder in Explorer, copy the physical path
Configuration
appsettings.jsoneditor with JSON highlighting: chips forbase,Development,Productionand any otherappsettings.*.jsonfound; missing files are created on save- Apply to web.config writes
ASPNETCORE_ENVIRONMENTfor the selected file's environment; the toolbar shows what web.config currently sets (or that it is not set and ASP.NET Core defaults to Production) web.configeditor with XML highlighting, save and reload from disk- Any file as a tab — the
+in the tab strip opens a file of the site (highlighting by extension); open tabs are remembered per site and come back next time,Ctrl+Ssaves all of them - Folder permissions of the site: list, add and remove ACL entries
Monitoring
- Live CPU and memory of every app pool's worker processes — next to each site in the sidebar, on the overview cards and as two-minute charts; the worker table updates every two seconds
- Memory dump — one click writes a full dump of a worker process (
MiniDumpWriteDump) toDocuments\IISBlitz\dumpsand opens Explorer; the file opens in Visual Studio, WinDbg ordotnet-dump
Logs and events
- Log viewer for the site's
logsfolder (tail of the selected file) - Search across all log files with a hit count per file and highlighted matches
- Windows Event Log: IIS / ASP.NET Core / WAS events of the last 24 hours, filtered by level, with a detail pane and copy
UI
- Command palette (
Ctrl+K): fuzzy search across sites, tabs and actions — recycle, restart, dump a worker, switch the update channel, open the app log… - Theme switch System / Light / Dark (
Ctrl+Shift+Lcycles); System follows Windows live, Light and Dark are remembered - Keyboard:
F5refresh ·Ctrl+Ssave ·Ctrl+Rrecycle ·Ctrl+Ffilter sites - Version in the header, update banner and updater state in the status bar
Download
| Channel | What | Where |
|---|---|---|
| Stable | Tagged releases | Releases |
| Nightly | Every push to master, version 0.x.y-nightly.<commit> |
Nightly pre-release |
Unzip IISBlitz-win-x64.zip (or win-arm64) somewhere writable — for example C:\Tools\IISBlitz —
and run IISBlitz.exe as administrator; IIS can only be managed from an elevated process. The exe is
self-contained: nothing else to install.
Updates
IISBlitz updates itself through TomLabs.AutoUpdate:
- A nightly build follows the nightly pre-release, a release follows stable; switch the channel from the command palette ("Switch to nightly/stable updates"), the choice is remembered.
- The app checks a few seconds after start and every six hours. When a newer build exists the status bar
shows "v0.7.0 available · Update"; the zip is downloaded to
%LOCALAPPDATA%\IISBlitz\updates, its SHA-256 checked, the manifest's ECDSA signature verified, and Restart to update swaps the exe and relaunches with the same elevation. - The previous exe stays as
IISBlitz.exe.olduntil the new build shows its window; a build that fails to start is rolled back automatically. - "Check for updates" in the palette runs a check now; the result (
up to date,check failed: …, or why updating is off — read-only folder, second instance) is shown in the status bar.
Diagnostics
| File | Purpose |
|---|---|
%APPDATA%\IISBlitz\iisblitz.log |
Updater and monitor messages ("Open app log" in the palette) |
%APPDATA%\IISBlitz\crash.log |
Unhandled exceptions |
%APPDATA%\IISBlitz\settings.json |
Theme and update channel |
Documents\IISBlitz\dumps |
Memory dumps |
Because the app runs elevated, these live in the profile of the account you elevated with.
Building
git clone https://github.com/TomasBouda/IISBlitz.git
cd IISBlitz
dotnet run --project src/TomLabs.IISBlitz.App
The updater library comes from nuget.org (TomLabs.AutoUpdate.Avalonia).
A release-style build — self-contained, trimmed, single file, ~25 MB:
dotnet publish src/TomLabs.IISBlitz.App/TomLabs.IISBlitz.App.csproj -c Release -r win-x64 -o publish
IISBLITZ_UPDATE_MANIFEST=https://host/latest.json points the updater at a test manifest instead of GitHub.
Releasing
Every push to master publishes the nightly pre-release. A stable release is a tag:
git tag v0.7.0
git push origin v0.7.0
Both go through the shared publish-app.yml workflow of TomLabs.AutoUpdate, which builds win-x64 and
win-arm64, attaches update.json (version, commit, SHA-256 per asset) and signs it with the
UPDATE_SIGNING_KEY repository secret. Bump <VersionPrefix> in the csproj and add a section to
CHANGELOG.md first.
Tech stack
| Layer | Technology |
|---|---|
| UI | Avalonia UI 11.3, Fluent theme with custom "ops console" tokens and styles |
| Pattern | MVVM (CommunityToolkit.Mvvm + ReactiveUI commands) |
| Editors | AvaloniaEdit + TextMate (Dark+ / Light+ follow the theme) |
| IIS | Microsoft.Web.Administration; System.Diagnostics.Eventing.Reader for events |
| Updates | TomLabs.AutoUpdate (GitHub Releases source, signed manifests) |
| Icons | Projektanker.Icons.Avalonia (FontAwesome) |
| Target | .NET 10, Windows x64 / arm64 |
License
MIT © Tomáš Bouda
Changelog
Changelog
0.6.1 — unreleased
- Changed: the theme switch now has a System option that follows Windows live; earlier Light/Dark choices were reset to System once.
- Added: the header button shows the current mode (half circle = System, sun, moon); the command palette can set each mode directly.
- Changed: amber bolt application icon (
icon.png, window icon) matching the UI;appstore.jsondescribes the app for the TomLabs app store, which links to these GitHub releases. - Added: open any file of a site as an extra tab ("+" in the tab strip or the palette); tabs are remembered per site, Ctrl+S saves every open file.
- Added: the overview lists the site's applications with their pools and a Recycle button per pool — recycling restarts only that pool, so sub-applications in other pools keep running.
- Added: live CPU and memory of every app pool's worker processes — in the sidebar, on the overview cards and as two-minute charts.
- Added: one-click full memory dump of a worker process (Documents\IISBlitz\dumps), opens in Visual Studio, WinDbg or dotnet-dump.
- Added: the status bar shows the updater state (up to date / check failed / why updating is off) and the app writes %APPDATA%\IISBlitz\iisblitz.log; "Open app log" in the command palette.
- Fixed: nightly builds no longer get stuck on a build whose commit hash happens to sort high (updater 0.2.1).
- Changed: built on .NET 10.
- Changed: the health endpoint card colours the status (Healthy green, Degraded amber, Unhealthy red).
- Changed: updates keep the previous executable until the new build shows its window; a build that fails to start is rolled back automatically.
- Changed: update manifests are signed; the app only installs builds signed by the release pipeline.
- Removed: the Ping / 5× ping health check and the response time chart; the automatic GET /health probe on the overview stays.
- Changed: the self-update library comes from nuget.org (TomLabs.AutoUpdate 0.3.2) instead of a git submodule; updates work as before.
0.6.0 — 2026-09-15
- Added: in-app updates through TomLabs.AutoUpdate — the status bar offers "Update" when a newer build is on GitHub Releases (nightly builds follow the nightly pre-release, releases follow stable); the channel can be switched from the command palette.
- Changed: releases and nightly builds are published by the shared workflow with an
update.jsonmanifest. - Removed: the Response tab (HTTP inspector and JS console capture) together with the PuppeteerSharp dependency.
- Fixed: the appsettings toolbar no longer claims web.config sets Production when ASPNETCORE_ENVIRONMENT is absent; it shows "not set → Production".
0.5.0 — 2026-09-15
- Changed: complete UI redesign ("ops console"): dark and light palettes, custom title bar, hairline cards, status dots, subtle animations.
- Added: command palette (Ctrl+K) searching sites, tabs and actions.
- Added: theme follows the OS and the toggle is remembered; editor colours switch with the theme.
- Added: overview cards with an automatic GET /health probe showing the deployed version.
- Changed: appsettings chips select the file (base, Development, Production, …); "Apply to web.config" writes the selected file's environment. Staging is no longer offered by default.
- Changed: Windows events load in the background with a 24 h filter and show a detail pane.
- Changed: version shown in the header comes from the assembly; crashes are written to %APPDATA%\IISBlitz\crash.log.
- Changed: the release exe is trimmed and compressed (117 MB → 27 MB); a nightly pre-release is published from every push to master.
0.4.0
- Added: folder permissions editor and JS console capture.