@LinearUncle: After building the open-source harness Waku in Rust, I don't know what suffering the chatwise dev endured with Rust, because they've now quickly open-sourced a desktop GUI framework written entirely in Go — MyGo. https://github.com/egoist/my…
Summary
egoist has open-sourced MyGo, a desktop application framework written entirely in Go. It supports both system WebView-based web interfaces and native UI drawn with pure Go on the GPU, requires no cgo, ships as a single binary only a few MB in size, and comes with built-in typed IPC plus a complete packaging, signing, and release pipeline.
View Cached Full Text
Cached at: 10/04/26, 09:19 PM
After finishing Waku — an open-source harness he built in Rust — the big shot over at Chatwise evidently ran into some hard lessons with Rust, and quickly turned around to open-source a desktop GUI framework written in pure Go: MyGo. It supports both flavors of desktop app, letting you run a web UI inside the system webview or write a native UI in pure Go — all in just a few MB. Recommended!
egoist/mygo
Source: https://github.com/egoist/mygo
MyGo
Desktop apps in Go, with a web frontend or a native UI.
Each MyGo window shows one of two kinds of interface, and one app can mix them:
- A web page, in the webview the OS already has: WKWebView on macOS, WebKitGTK on Linux, WebView2 on Windows. Build the frontend with any web tools; it calls your Go code through a TypeScript client generated from it.
- Native UI, written in Go alone with package
uiand drawn by MyGo itself on the GPU: no HTML, no JavaScript and no webview, so the window opens at once and takes little memory.
Either way, an app is a single Go binary of a few megabytes, focused on low memory and CPU use.
- Pure Go, no cgo: build for every platform from any machine.
- Typed IPC for pages: bind Go services, stream values through channels and send typed events; the TypeScript client is generated from your Go code.
- A Go UI toolkit for native UI: flexbox and grid layout, widgets, text editing with input methods, virtualized lists, SVG icons, animations, screen reader support, and views you test without a window.
- Desktop APIs for both: windows, menus, tray, dialogs, notifications, global shortcuts, deep links, file associations and more.
- Ready to ship: app bundles and disk images, Windows installers, Debian packages and a Linux install script, code signing, notarization, and signed auto-updates with delta updates and an update window in the manner of Sparkle.
A window with a web page, whose frontend calls Go:
``go type Greeter struct{}
// Greet returns a greeting. func (Greeter) Greet(name string) string { return “Hello, “ + name }
func main() { mygo.Bind(Greeter{}) mygo.App.WhenReady(func() { mygo.NewWindow(mygo.WindowOptions{Title: “Hello”, URL: “/”}) }) if err := mygo.App.Run(); err != nil { log.Fatal(err) } } ``
``ts import { Greeter } from “./mygo”; // generated
document.body.textContent = await Greeter.greet(“Ada”); ``
A window with native UI, whose view is a Go function of the app’s state:
``go type counter struct{ n int }
func (s *counter) view(c *ui.Context) { ui.Column(c).Fill().Center().Gap(12).Children(func() { ui.Text(c, fmt.Sprint(s.n)).FontSize(40).Bold() if ui.PrimaryButton(c, “Increment”).Clicked() { s.n++ } }) }
func main() { s := &counter{} mygo.App.WhenReady(func() { mygo.NewWindow(mygo.WindowOptions{ Title: “Counter”, Content: ui.View(s.view), }) }) if err := mygo.App.Run(); err != nil { log.Fatal(err) } } ``
Getting started
With Go (https://go.dev/dl/) 1.27+ and Bun (https://bun.sh), create an app with a web frontend:
sh bunx mygo-cli init my-app # or: npx mygo-cli init my-app cd my-app bun run dev
An app of native UI needs Go alone:
sh go run github.com/egoist/mygo/cmd/mygo@latest init -template native my-app cd my-app go tool mygo dev
Read the documentation.
License
MIT
EGOIST (@localhost_5173): Introducing MyGo, a pure Go framework for building desktop app in webview or native UI, it’s like GPUI and Tauri had a baby, but made in Go so it compiles fast
Similar Articles
@geekbb: A Tauri (Rust + Svelte) desktop app that integrates a programming AI agent, API client, SQL/NoSQL editor, SSH terminal, remote file browser, and project management kanban board into a single interface — developers don't need to switch between multiple apps. https://gith…
Clauge is a Tauri (Rust + Svelte) desktop app that combines a programming AI agent, API client, SQL/NoSQL editor, SSH terminal, remote file browser, and project management kanban board into one interface, so developers don't have to switch between multiple applications.
@wsl8297: While browsing GitHub, I stumbled upon a real powerhouse: niri. It directly bypasses the age-old desktop problem of "windows getting squished when there are too many" and completely reimagines window management. niri adopts a scrollable tiling approach: windows are arranged in columns on an "infinitely extending" horizontal strip. When you open a new window, it doesn't forcefully compress existing ones; on multi-monitor setups, each screen has its own independent workspaces and window strips, clean and efficient.
This article introduces the open-source project niri, a new Wayland-based desktop compositor that avoids traditional window crowding issues through a scrollable tiling layout, and supports features such as dynamic workspaces, independent multi-monitor management, and custom shader animations.
@yff666: Recently built Keel, a pure Go desktop UI framework. Based on Gio, no HTML/CSS/JS/WebView required. Supports macOS, Win…
A developer announced Keel, a pure Go desktop UI framework built on Gio that requires no HTML/CSS/JS/WebView, supporting macOS, Windows, and Linux with a component library, packaging tools, and MCP-based agent testing capabilities.
Show HN: I built a native app for coding agents with Rust and GPUI
Waku is a native application built with Rust and GPUI that unifies the management of coding agent CLIs, offering local-first storage, keyboard-driven control, and checkpointing features for seamless developer workflows.
@Ryrenz: Explosive! gpui-kit has all 75 components you need for desktop apps ready to go, so you don't have to hand-code the UI …
gpui-kit, a Rust desktop UI framework built on Zed's GPUI engine, ships 75+ production-ready components with WebAssembly support and AccessKit accessibility, reaching 15.7k GitHub stars and moving rapidly from v0.6.0 to v0.7.0 in September.