Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Augani/kael/llms.txt

Use this file to discover all available pages before exploring further.

Kael is a GPU-accelerated UI framework for building native desktop applications in Rust. Built on top of GPUI from Zed Industries, Kael extends it with webviews, media playback, system tray, form controls, rich text, Lottie animations, blur effects, gesture recognition, theming, and more — all while delivering 60fps with near-zero CPU usage at idle through dirty tracking and render-on-demand.

Quickstart

Build your first Kael application in minutes with a working counter example

Installation

Add Kael to your Cargo project and configure platform dependencies

Core Concepts

Learn the entity model, rendering lifecycle, and reactivity system

API Reference

Explore the full public API: App, Window, elements, themes, and plugins

Why Kael?

Kael targets macOS, Linux (X11 and Wayland), and Windows with platform-native rendering backends — Metal on macOS, Blade (Vulkan) on Linux, and DirectX 11 on Windows. The framework uses dirty tracking so the GPU is only invoked when the UI actually changes, resulting in idle CPU usage of 0%.

Rendering & Graphics

GPU-accelerated with per-platform shaders, canvas drawing, backdrop blur, Lottie animations, and SVG rendering

Layout & Elements

Flexbox and grid layout via Taffy, rich text, recycling lists, form controls, and spring animations

Platform Integration

System tray, global hotkeys, native dialogs, notifications, WebViews, media playback, and screen capture

Plugin System

Extension host with WASM sandboxing, process isolation, typed IPC, and capability-based security

Platform support

PlatformRendererStatus
macOSMetalFull support
Linux (X11)Blade (Vulkan)Full support
Linux (Wayland)Blade (Vulkan)Full support
WindowsDirectX 11Full support

Quick example

Cargo.toml
[dependencies]
kael = { git = "https://github.com/Augani/kael" }
main.rs
use kael::*;

struct Counter {
    count: i32,
}

impl Render for Counter {
    fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
        div()
            .flex()
            .flex_col()
            .gap_2()
            .child(format!("Count: {}", self.count))
            .child(
                div()
                    .cursor_pointer()
                    .child("Increment")
                    .on_click(cx.listener(|this, _, _, _| {
                        this.count += 1;
                    })),
            )
    }
}

fn main() {
    Application::new().run(|cx| {
        cx.open_window(WindowOptions::default(), |_, cx| {
            cx.new(|_| Counter { count: 0 })
        })
        .unwrap();
    });
}
Kael is built on GPUI, the UI framework created by Zed Industries for the Zed code editor. The original GPUI code is licensed under Apache-2.0. Kael itself is also Apache-2.0.

Build docs developers (and LLMs) love