Mythetech.Hermes 0.0.0-preview.67

This is a prerelease version of Mythetech.Hermes.
dotnet add package Mythetech.Hermes --version 0.0.0-preview.67
                    
NuGet\Install-Package Mythetech.Hermes -Version 0.0.0-preview.67
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Mythetech.Hermes" Version="0.0.0-preview.67" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Mythetech.Hermes" Version="0.0.0-preview.67" />
                    
Directory.Packages.props
<PackageReference Include="Mythetech.Hermes" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Mythetech.Hermes --version 0.0.0-preview.67
                    
#r "nuget: Mythetech.Hermes, 0.0.0-preview.67"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Mythetech.Hermes@0.0.0-preview.67
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Mythetech.Hermes&version=0.0.0-preview.67&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Mythetech.Hermes&version=0.0.0-preview.67&prerelease
                    
Install as a Cake Tool

Hermes

A modern, AOT-compatible native desktop framework for .NET 10.

NuGet License

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 LibraryImport instead of DllImport
  • Blazor Integration — First-class support for Blazor applications via Hermes.Blazor
  • 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 Native Code
Windows CsWin32 source generators + WebView2 NuGet None
macOS Thin Objective-C shim with LibraryImport ~3,100 LOC
Linux Thin C shim with LibraryImport ~1,800 LOC

This architecture provides:

  • Easier maintenance — Most logic lives in C#, not platform-specific native code
  • AOT compatibilityLibraryImport generates 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

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Mythetech.Hermes:

Package Downloads
Mythetech.Framework.Desktop

Desktop-specific components for cross platform Blazor applications using Photino or Hermes

Mythetech.Hermes.Blazor

Blazor integration for Hermes desktop framework

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.0-preview.67 41 4/1/2026
0.0.0-preview.65 53 3/3/2026
0.0.0-preview.63 209 2/28/2026
0.0.0-preview.62 64 2/28/2026
0.0.0-preview.61 63 2/2/2026
0.0.0-preview.51 102 2/1/2026
0.0.0-preview.50 75 1/31/2026
0.0.0-preview.49 61 1/31/2026
0.0.0-preview.45 67 1/30/2026
0.0.0-preview.36 67 1/30/2026
0.0.0-preview.35 66 1/30/2026
0.0.0-preview.34 61 1/29/2026
0.0.0-preview.33 61 1/29/2026
0.0.0-preview.32 63 1/29/2026
0.0.0-preview.31 70 1/29/2026
0.0.0-preview.30 69 1/29/2026
0.0.0-preview.29 76 1/29/2026
0.0.0-preview.28 65 1/29/2026
0.0.0-preview.25 65 1/28/2026