Hermes

Open Source

Native Desktop, Web UI

A modern .NET 10 framework for building cross-platform desktop applications with HTML, CSS, and Blazor. Native menus, dialogs, and system integration without the XAML complexity.
Ship Windows, macOS, and Linux from a single codebase with AOT support from day one.
dotnet add package Mythetech.Hermes.Blazor
var builder = HermesBlazorAppBuilder
                        .CreateDefault(args);

                        builder.ConfigureWindow(options =>
                        {
                        options.Title = "My App";
                        options.Width = 1280;
                        options.Height = 720;
                        });

                        builder.RootComponents.Add<App>("#app");

                        var app = builder.Build();
                        app.Run();

Cross-Platform

AOT Compatible

Minimal Native Layer

.NET 10 Ready

MIT Licensed

Why Choose Hermes?

Build desktop apps the way you build web apps
Native Menus

Real OS menus with keyboard accelerators that translate across platforms. Ctrl+S on Windows becomes Cmd+S on macOS automatically.

Dev Server

Zero-config hot reload: just run dotnet watch. Hermes auto-detects it, stands up an internal Kestrel server, and live-reloads C# and CSS changes instantly.

AOT from Day One

Designed for Native AOT compilation using LibraryImport. Ship faster, smaller binaries.

First-Class Blazor

Implements IHostApplicationBuilder. Services, Configuration, and Logging work exactly like ASP.NET Core.

Fluent API

Chainable method syntax that reads like documentation. Configure windows, menus, and events with clean, discoverable code.

System Tray

Create tray-only apps that live entirely in the system tray with no dock or taskbar entry. Add tray icons with native context menus on every platform.

Ship native desktop apps with your Blazor skills. No XAML required.

Native Menus, Fluent API

Build native menu bars with a chainable API. Add items, separators, accelerators, and handle clicks, all with runtime modification support for plugin architectures.

Platform-native keyboard accelerators

Runtime menu modification

ID-based item lookup

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"));
                            });

                            window.MenuBar.ItemClicked += id =>
                            {
                            if (id == "file.save") Save();
                            };
HermesWindow.Prewarm(); // Fast startup

                                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");
                                builder.Services.AddSingleton<IMyService, MyService>();

                                var app = builder.Build();
                                app.Run();

Blazor Integration

HermesBlazorAppBuilder implements IHostApplicationBuilder, the standard Microsoft interface. Your existing Blazor skills and patterns transfer directly.

IHostApplicationBuilder compatible

Dependency injection support

appsettings.json configuration

Fast startup with Prewarm()

Dev Server with Hot Reload

Zero-config hot reload: just run dotnet watch. Hermes auto-detects it, stands up an internal Kestrel server, and live-reloads C# and CSS changes instantly.

Automatic dotnet watch detection

Live C# and CSS reloading

Built-in Kestrel server, no setup required

Hermes Dev Server Hot Reload

How Hermes Compares

See how Hermes stacks up against alternatives
Feature Hermes Photino Electron
.NET Native
Native Menus
Native WebView
Minimal Native Layer
Native Dialogs
IHostApplicationBuilder
Dock Menu (macOS)
Single Instance
Autostart
Key-Value Store
Crash Reporting

Platform Support

One codebase, three platforms
Windows

Windows 10/11 with WebView2

Pure C# via CsWin32
macOS

macOS 12+ with WKWebView

Native via Obj-C shim
Linux

x64 with WebKitGTK 4.x

Native via C shim

Free and Open Source

Hermes is MIT licensed. Build and ship commercial apps with no license key, no fees, and no revenue limits.
MIT License

Free

Commercial and internal use at any company size

No license key or registration

No per-app or per-seat fees

Full source code on GitHub

Fork, modify, and redistribute

Frequently Asked Questions

Common questions about Hermes
What is the difference between Hermes and Photino?

Hermes is the spiritual successor to Photino with enhanced native OS integration. Key differences include native menu support with keyboard accelerators, dock menus on macOS, context menus, a significantly smaller native layer, AOT compatibility from day one using LibraryImport, and implementation of IHostApplicationBuilder for a familiar ASP.NET Core-style developer experience.

Can I use my existing Blazor components?

Yes! Hermes provides first-class Blazor support through HermesBlazorAppBuilder. Your existing Razor components, services, and patterns work unchanged. The only difference is the host: instead of a browser, it's a native window.

What WebView does Hermes use?

Hermes uses the platform's native WebView: WebView2 on Windows, WKWebView on macOS, and WebKitGTK on Linux. This means your app renders consistently with the latest browser engine on each platform without bundling Chromium.

Is Hermes free for commercial use?

Yes. Hermes is open source under the MIT license, so you can use it in commercial products and internal tools at a company of any size. Earlier releases asked larger companies for a paid license. Current releases do not: there is no license key, no fee, and no revenue limit.

Ready to Build?

Get started with Hermes in minutes. Install from NuGet and explore the documentation.

dotnet add package Mythetech.Hermes.Blazor