Racket framework · MIT · Cross-platform

Racket for logic. Web for UI. One native window.

Glaze is a Tauri-like framework for Racket: your app logic runs in Racket, your UI is HTML/CSS/JS, and everything ships inside a native desktop window backed by the OS WebView.

Glaze showcase — every capability in one window
Why Glaze

racket/gui works, but it's hard to style.

The full power of Racket

Macros, contracts, pattern matching — your domain logic lives in a real programming language.

Any web frontend

Tailwind, Svelte, React, or plain HTML/CSS/JS — the UI is just what the browser is already good at.

JSON API bridge

The page calls Racket with plain fetch("/api/...") — no IPC ceremony.

GUI-first, fail-fast

If the native WebView runtime is missing, startup fails with actionable guidance — never a silent browser-tab fallback.

Agent-friendly verification

webview-title, webview-url and webview-capture! are built in — CI can see what the window shows.

Real-window CI e2e

All three WebView backends pass the same real-window e2e in CI.

How it compares

A Tauri-shaped idea,

with a different native story: pure FFI, no Rust toolchain, tiny binaries, HTTP-JSON instead of invoke() IPC.

Glaze Tauri Electron
Backend language Racket Rust JS / Node
Native toolchain needed none (pure FFI) Rust + cargo none
Binary size tiny small 100 MB+
Frontend → backend HTTP JSON routes (fetch) invoke() IPC Node APIs
WebView WebView2 / WKWebView / WebKitGTK system WebView bundled Chromium
Agent UI verification built-in via WebDriver via CDP
Quick start

Three commands to a window.

terminal
# one package: library + raco glaze CLI + docs $ raco pkg install --auto glaze # scaffold a new app $ raco glaze init myapp && cd myapp # run it — a native desktop window opens $ racket main.rkt serving app on 127.0.0.1 · webview window opened
Requirements. Racket 7.0+ everywhere; WebView2 on Windows, WKWebView on macOS, WebKitGTK on Linux.