Desktop apps in Go.Tiny, fast, fully typed.
One small binary for macOS, Windows and Linux, cross-compiled from any machine. Type-safe calls from TypeScript to Go, installers and auto-updates included.
- Binary
- ~7MB
- Memory, webview included
- ~62MB
- CPU at idle
- 0%
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)
}
}import { Greeter } from "./mygo"; // generated
document.body.textContent = await Greeter.greet("Ada");./mygo is generated from main.go, with the types of your structs and the docs of your methods.
Pure Go, no cgo
Build for every platform from any machine.
Typed IPC
Bind Go services, stream values through channels and send typed events. The TypeScript client is generated from your Go code.
Desktop APIs
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, code signing, notarization and signed auto-updates.