Query and filter your Azure resources fast and tag them easily.
Report Bug
·
Request Feature
·
Contribute
·
Sponsor project
·
Sponsor via PayPal
AzTagger is a cross-platform desktop GUI application for fast and flexible querying of Azure resources and tag management. It allows fast search and filtering of all resources, resource groups, and subscriptions using Azure Resource Graph for your Entra ID tenant. It runs on latst Windows 11 (WPF), macOS (Mac) and Linux (GTK).
- Interactive sign-in to Entra ID via web browser, support for SSO and multi-factor authentication (MFA)
- Support for multiple parallel Azure contexts including environment (e.g., AzurePublicCloud, AzureChina), Entra ID tenant and app ID
- Fast search and filtering of all Azure resources, resource groups, and subscriptions based on in-memory result data from Azure Resource Graph
- A single input field for easy and flexible rmot querying of resources
- Multiple input fields for easy and flexible local quick-filtering of resources
- Comprehensive support of KQL and .NET regular expressions
- Support for large numbers of search results
- Column sorting
- Double-click on item to open it in the Azure Portal
- Context menu items to add result values to the search query for filtering
- Full display of all tags of all levels (subscription, resource group, resource) and combined
- Easy inline editing and deletion of tags in a table
- Add new tags by clicking into the last empty line's key or value cells and start typing
- Use default tag templates and maintain custom ones in a
tagtemplates.jsonfile in the user's AppData Local folder - Support of variables in tag template values such as {Date}, {Time}, {DateTime}, {User}
- Create and update all specified tags on all selected subscriptions, resource groups, and resources at once
- Copy any tag cell value via right-click context menu
- Open all hyperlinks of all tag values of a resource in the browser
- Dark mode supported on macOS (not yet on Windows and Linux by Eto.Forms)
- All errors logged to
errorlog.txtfiles in the user's AppData Local folder.
- C# .NET 9
- Eto.Forms, supporting for Windows 11 (WPF), Linux (GTK), and macOS (Mac)
- SeriLog
- Azure Identity
- Azure Resource Manager
- Azure Resource Graph
Hint for your interest: The migration from a .NET 9 Windows Forms application into a cross-platform .NET 9 Eto.Forms application was done within 3 days with help of OpenAI Codex and then GitHub Copilot using Claude Sonnet 4 (Preview) and GPT 4.1 models.
Clone the repository, open in VS Code, select the desired target platform and hit F5 to build and run the program.
dotnet build AzTagger.Wpf/AzTagger.Wpf.csproj -c Release --framework net9.0-windows --runtime win-x64
dotnet run --project AzTagger.Wpf/AzTagger.Wpf.csproj --framework net9.0-windows --runtime win-x64
dotnet build AzTagger.Gtk/AzTagger.Gtk.csproj -c Release --framework net9.0 --runtime linux-x64
dotnet run --project AzTagger.Gtk/AzTagger.Gtk.csproj --framework net9.0 --runtime linux-x64
Apple Silicon (arm64):
dotnet build AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net9.0 --runtime osx-arm64
dotnet run --project AzTagger.Mac/AzTagger.Mac.csproj --framework net9.0 --runtime osx-arm64
Intel (x64):
dotnet build AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net9.0 --runtime osx-x64
dotnet run --project AzTagger.Mac/AzTagger.Mac.csproj --framework net9.0 --runtime osx-x64
You can publish self-contained executables for each platform using dotnet publish with the same --framework and --runtime parameters.
x64:
dotnet publish AzTagger.Wpf/AzTagger.Wpf.csproj -c Release --framework net9.0-windows --runtime win-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/win-x64
ARM64:
dotnet publish AzTagger.Wpf/AzTagger.Wpf.csproj -c Release --framework net9.0-windows --runtime win-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/win-arm64
x64:
dotnet publish AzTagger.Gtk/AzTagger.Gtk.csproj -c Release --framework net9.0 --runtime linux-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/linux-x64
ARM64:
dotnet publish AzTagger.Gtk/AzTagger.Gtk.csproj -c Release --framework net9.0 --runtime linux-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/linux-arm64
Apple Silicon (arm64):
dotnet publish AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net9.0 --runtime osx-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/mac-arm64
mv ./publish/mac-arm64/AzTagger.Mac.app ./publish/mac-arm64/AzTagger.app
Intel (x64):
dotnet publish AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net9.0 --runtime osx-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/mac-x64
mv ./publish/mac-x64/AzTagger.Mac.app ./publish/mac-x64/AzTagger.app
Please open an issue on the GitHub repository with the tag "bug".
If you are using the tool but are unable to contribute technically, please consider promoting it and donating an amount that reflects its value to you. You can do so either via PayPal
or via GitHub Sponsors.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star 😉 Thanks!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.

