Hermes

Preview

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 --prerelease
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

~3,800 LOC Native

.NET 10 Ready

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.

Minimal Footprint

Only ~3,800 lines of native code vs 12,000+ in alternatives. Pure C# on Windows with CsWin32, thin shims elsewhere.

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.

Native Dialogs

File open, save, and folder selection dialogs that look and feel native 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()

How Hermes Compares

See how Hermes stacks up against alternatives
Feature Hermes Photino Electron
Native Menus
.NET Native
Native LOC ~3,800 12,300+ N/A
Native Dialogs
IHostApplicationBuilder
Dock Menu (macOS)

Platform Support

One codebase, three platforms
Windows

Windows 10/11 with WebView2

Pure C# via CsWin32
macOS

macOS 12+ with WKWebView

~2,400 LOC Obj-C shim
Linux

x64 with WebKitGTK 4.x

~1,400 LOC C shim

Pricing

Simple, predictable pricing for commercial use
Community

Free

Open source projects (MIT/Apache/GPL)

Non-commercial use

Companies under $1M annual revenue

Educational use

Full feature access

Per-App, Not Per-Seat
Enterprise

Contact Sales

Multi-application bundles

Custom support SLAs

Architecture consultation

Invoice billing

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, significantly less native code (~3,800 LOC vs 12,300+), AOT compatibility from day one using LibraryImport, and implementation of IHostApplicationBuilder for a familiar ASP.NET Core-style developer experience.

Do I need a license during the preview?

No. Hermes is free to use during the preview period with no licensing requirements. Once the product reaches general availability, the pricing tiers shown above will apply.

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.

Do I need the commercial license for internal tools?

If your company revenue exceeds $1M and you're using Hermes for internal tools that are part of commercial operations, a commercial license will be required after GA. Internal tools at companies under $1M annual revenue qualify for the free tier.

Ready to Build?

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

dotnet add package Mythetech.Hermes.Blazor --prerelease