Mythetech.Hermes.Blazor
1.0.0-preview.122
dotnet add package Mythetech.Hermes.Blazor --version 1.0.0-preview.122
NuGet\Install-Package Mythetech.Hermes.Blazor -Version 1.0.0-preview.122
<PackageReference Include="Mythetech.Hermes.Blazor" Version="1.0.0-preview.122" />
<PackageVersion Include="Mythetech.Hermes.Blazor" Version="1.0.0-preview.122" />
<PackageReference Include="Mythetech.Hermes.Blazor" />
paket add Mythetech.Hermes.Blazor --version 1.0.0-preview.122
#r "nuget: Mythetech.Hermes.Blazor, 1.0.0-preview.122"
#:package Mythetech.Hermes.Blazor@1.0.0-preview.122
#addin nuget:?package=Mythetech.Hermes.Blazor&version=1.0.0-preview.122&prerelease
#tool nuget:?package=Mythetech.Hermes.Blazor&version=1.0.0-preview.122&prerelease
Hermes
A modern, AOT-compatible native desktop framework for .NET 10.
Overview
Hermes is a cross-platform desktop framework that enables .NET developers to create native desktop applications with web-based UIs. It provides native windows, menus, dialogs, and WebView integration across Windows, macOS, and Linux.
Designed for .NET 10 and modern development workflows, Hermes prioritizes AOT compatibility, minimal native code, and runtime performance. Unlike frameworks that rely on large C++ codebases, Hermes uses pure C# on Windows (via CsWin32 source generators) and thin native shims on macOS and Linux, totaling approximately 4,900 lines of native code.
Features
- Native Windows and WebView Platform-native windows with embedded WebView2 (Windows), WebKitGTK (Linux), and WKWebView (macOS)
- Native Menus Full menu bar support with keyboard accelerators and runtime modification for plugin systems
- Context Menus Native right-click menus with screen coordinate positioning
- File Dialogs Native open, save, and folder selection dialogs with file filters
- AOT Compatible,Designed for Native AOT from day one using
LibraryImportinstead ofDllImport - Blazor Integration First-class support for Blazor applications via
Hermes.Blazor - Blazor Hot Reload Zero-config CSS and component hot reload via
dotnet watch, no setup required - Cross-Platform Single codebase targeting Windows, macOS, and Linux
- Minimal Dependencies Pure C# on Windows; thin native layers only where required
Platform Support
| Platform | Runtime | WebView | Status |
|---|---|---|---|
| Windows 10/11 | .NET 10 | WebView2 | Supported |
| macOS 12+ | .NET 10 | WKWebView | Supported |
| Linux (x64) | .NET 10 | WebKitGTK 4.x | Supported |
Getting Started
Installation
dotnet add package Mythetech.Hermes
For Blazor applications:
dotnet add package Mythetech.Hermes.Blazor
Basic Example
using Hermes;
var window = new HermesWindow()
.SetTitle("My Application")
.SetSize(1024, 768)
.Center()
.Load("https://example.com");
window.WaitForClose();
Blazor Example
using Hermes;
using Hermes.Blazor;
HermesWindow.Prewarm();
var builder = HermesBlazorAppBuilder.CreateDefault(args);
builder.ConfigureWindow(options =>
{
options.Title = "My Blazor App";
options.Width = 1024;
options.Height = 768;
options.CenterOnScreen = true;
});
builder.RootComponents.Add<App>("#app");
var app = builder.Build();
app.Run();
Native Menus
Hermes provides a fluent API for building native menus with full support for runtime modification, enabling dynamic plugin loading scenarios.
// Build menus with fluent API
window.MenuBar
.AddMenu("File", file =>
{
file.AddItem("New", "file.new", item => item.WithAccelerator("Ctrl+N"))
.AddItem("Open...", "file.open", item => item.WithAccelerator("Ctrl+O"))
.AddSeparator()
.AddItem("Save", "file.save", item => item.WithAccelerator("Ctrl+S"))
.AddItem("Exit", "file.exit");
})
.AddMenu("Edit", edit =>
{
edit.AddItem("Undo", "edit.undo", item => item.WithAccelerator("Ctrl+Z"))
.AddItem("Redo", "edit.redo", item => item.WithAccelerator("Ctrl+Y"))
.AddSeparator()
.AddItem("Cut", "edit.cut", item => item.WithAccelerator("Ctrl+X"))
.AddItem("Copy", "edit.copy", item => item.WithAccelerator("Ctrl+C"))
.AddItem("Paste", "edit.paste", item => item.WithAccelerator("Ctrl+V"));
});
// Handle menu clicks
window.MenuBar.ItemClicked += itemId =>
{
if (itemId == "file.exit")
window.Close();
};
// Runtime modification for plugins
window.MenuBar.AddMenu("Plugins", plugins =>
{
plugins.AddItem("My Plugin", "plugins.myplugin");
});
Accelerators automatically translate between platforms, Ctrl+S on Windows/Linux becomes Cmd+S on macOS.
Architecture
Hermes minimizes native code by leveraging platform-specific .NET capabilities:
| Platform | Approach |
|---|---|
| Windows | CsWin32 source generators + WebView2 NuGet |
| macOS | Thin Objective-C shim with LibraryImport |
| Linux | Thin C shim with LibraryImport |
This architecture provides:
- Easier maintenance, Most logic lives in C#, not platform-specific native code
- AOT compatibility,
LibraryImportgenerates marshalling code at compile time - Reduced build complexity, No C++ toolchain required on Windows
For detailed technical information, see ARCHITECTURE.md.
Packages
| Package | Description |
|---|---|
| Mythetech.Hermes | Core framework |
| Mythetech.Hermes.Blazor | Blazor integration |
Documentation
- Architecture Overview: Technical design and platform strategy
- Platform Differences: Cross-platform behavior notes
- Roadmap: Planned features and enhancements
License
Hermes is source-available under the Elastic License 2.0.
Free for: non-commercial use, educational use, open source projects, and commercial use under $1M annual revenue. See COMMERCIAL.md for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.AspNetCore.Components.WebView (>= 10.0.7)
- Mythetech.Hermes (>= 1.0.0-preview.122)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Mythetech.Hermes.Blazor:
| Package | Downloads |
|---|---|
|
Mythetech.Framework.Desktop
Desktop-specific components for cross platform Blazor applications using Photino or Hermes |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-preview.122 | 0 | 4/23/2026 |
| 0.1.0-preview.121 | 0 | 4/22/2026 |
| 0.1.0-preview.109 | 47 | 4/16/2026 |
| 0.1.0-preview.106 | 47 | 4/14/2026 |
| 0.1.0-preview.102 | 175 | 4/12/2026 |
| 0.1.0-preview.100 | 55 | 4/11/2026 |
| 0.0.0-preview.98 | 267 | 4/9/2026 |
| 0.0.0-preview.94 | 84 | 4/8/2026 |
| 0.0.0-preview.87 | 90 | 4/6/2026 |
| 0.0.0-preview.86 | 79 | 4/5/2026 |
| 0.0.0-preview.83 | 58 | 4/5/2026 |
| 0.0.0-preview.81 | 55 | 4/5/2026 |
| 0.0.0-preview.77 | 80 | 4/4/2026 |
| 0.0.0-preview.75 | 52 | 4/4/2026 |
| 0.0.0-preview.74 | 59 | 4/3/2026 |
| 0.0.0-preview.67 | 62 | 4/1/2026 |
| 0.0.0-preview.65 | 60 | 3/3/2026 |
| 0.0.0-preview.63 | 245 | 2/28/2026 |
| 0.0.0-preview.62 | 72 | 2/28/2026 |
| 0.0.0-preview.61 | 61 | 2/2/2026 |