No description
  • Rust 81%
  • WebAssembly 15.6%
  • Metal 1.4%
  • Cuda 0.5%
  • C++ 0.4%
  • Other 0.9%
Find a file
2026-10-26 10:57:38 +00:00
.cargo relax campaign batch (verified tree dfc07c6f08: Mac land set + x64 diff_fast o1/base/o3 29/29): inline assembler on by default (--no-asm), --allow-c; deadlock fix (owner never serves background work in a wait); x64 float register file (xmm16-31, in-place EVEX, xmm0/1 allocatable; box3d 0.67x); web target 32/64-bit layouts; warm-cache stale-slot fix; O3 offset-base folding; wasm export size work; host builds use target-cpu=native (shipping-rustc baselines pinned) 2026-10-22 00:21:11 +02:00
apps Desk Link: native macOS Dock app (tools/desklink/install-mac.sh: Desk Link.app, own icon, single instance, keeps its Dock icon when windows close) 2026-10-26 11:10:40 +01:00
code_editor draw and widgets: app-drawn captions, kept render targets, lazy CJK and emoji fonts 2026-10-14 07:24:22 +02:00
docs/agents ai: CUDA kernels behind a cuda feature that only the AI Hub enables (apps stay CPU-only; no CUDA rebuild ping-pong between hub and app launches) 2026-10-26 09:47:27 +01:00
draw work: Desk Link capture rasterises the desktop at the window's dpi (no dpi-1 render stretched x2 on the panel and in the stream) 2026-10-25 15:10:53 +01:00
examples Preserve fork binary assets when migrating work to upstream history 2026-10-26 10:57:38 +00:00
libs Preserve fork binary assets when migrating work to upstream history 2026-10-26 10:57:38 +00:00
platform Desk Link: native macOS Dock app (tools/desklink/install-mac.sh: Desk Link.app, own icon, single instance, keeps its Dock icon when windows close) 2026-10-26 11:10:40 +01:00
tools Preserve fork binary assets when migrating work to upstream history 2026-10-26 10:57:38 +00:00
widgets work: zero compiler warnings across CI targets (CI denies warnings; per-app platforms; cross rows without host RUSTFLAGS); Desk Link rate uncapped (adaptive only) + one-line viewer stats 2026-10-25 21:57:09 +01:00
xr stage-player: deterministic cut/deck/Motion player (tracer entry), arm64 select-chain fix, JIT corner loader, video colour reporting 2026-10-21 11:07:31 +02:00
.gitattributes platform: a Windows host passes its tests and builds without warnings -- three faults that show only on a Windows checkout or build. The frozen font-manifest fixtures are compared byte for byte (include_bytes!) but * text=auto with core.autocrlf checked them out with CRLF, so frozen_manifest_fixture_matches_policy_assets failed; .gitattributes now keeps platform/tests/fixtures/*.txt LF on every checkout. normalize_manifest_join (tests and wasm) promised a /-separated path but a Windows host's PathBuf joins with \ again, so windows_built_manifest_paths_resolve_to_web_dependency_paths failed there; its result now uses / wherever it runs (wasm already did). raw_grab_order and raw_grab_origin serve deliver_grab_pixels, Metal's raw grab path, and ReadbackOrigin::TopLeft is built only there, so a Windows build warned they were unused; they and their imports now carry deliver_grab_pixels's own cfg. Checked: cargo check -p makepad-platform --tests on Windows and cargo check -p makepad-platform for x86_64-apple-darwin, no warnings; cargo test -p makepad-platform --lib on Windows (325 passed, none failed) 2026-10-03 14:41:21 +02:00
.gitignore tools, libs and the rest 2026-10-13 12:26:21 +02:00
AGENTS.md AGENTS.md: clean up after work is merged; workspace: rwbench is a member again 2026-10-19 18:14:01 +02:00
Cargo.toml Desk Link: Desk Host is a tray app on Windows and macOS; the viewer has a menu-bar desktop list 2026-10-26 10:25:39 +01:00
ci.splash work: zero compiler warnings across CI targets (CI denies warnings; per-app platforms; cross rows without host RUSTFLAGS); Desk Link rate uncapped (adaptive only) + one-line viewer stats 2026-10-25 21:57:09 +01:00
clippy.toml widgets, platform, script, draw: clean builds 7-9 s faster -- rare widgets leave widgets-core, the tweaker leaves the front crate, network and math_aot leave the build chain, and less generated code 2026-09-29 01:55:14 +02:00
LICENSE Initial commit 2025-05-06 10:11:37 +02:00
makepad.splash work: Play together (fleet LAN rooms + shared AI builds), hub Claude backend tool-call relay + normal login, widget lookup cache fix, inspect derived-name fix + deterministic A/B harness, RACE8 warm-run caching, remote desktop (Desk Link: hw H.264 WM server, Mac client, GPU fault fix, device-loss recovery, zero-copy decode, taskbar indicator), relax contributor readiness (proc-macro trust by entry point, KNOWN_GAPS, CONTRIBUTING), PR #1326 proc-macro derives 2026-10-24 19:25:22 +02:00
README.md readme: how to build and run the widget catalogue, beside the desktop 2026-10-02 08:54:28 +02:00
rustfmt.toml Add glass_panel widget example; restore rustfmt guard 2026-06-25 16:11:42 +02:00
splash.md tools, libs and the rest 2026-10-13 12:26:21 +02:00

Makepad

Socials

Makepad is an AI-accelerated application and game development environment for Rust. It combines a high-performance UI runtime, a live-editable design language, and a fast iteration loop so you can build native and web apps with a tight feedback cycle.

It also has a large set of AI backends integrated for embedding llms or generative AI models inside applications or run them easily on local hardware

This repository contains the core engine, widgets, tools, and examples.

What Makepad Is

  • A cross-platform UI runtime for native and web targets.
  • A Rust-first framework with a scriptable UI DSL.
  • A studio app for running, inspecting, and iterating on examples and projects.
  • An AI-accelerated workflow: structure and tooling aimed at making code generation, refactoring, and iteration faster and safer.
  • Simple forward 3D renderer for making games on Quest and all other supported platforms

Features

  • Streaming Splash: fast, animated, streaming UI example.
  • Script Engine: live-editable UI DSL and runtime script integration.
  • 3D Rendering: glTF example with GPU rendering.
  • Maps: built-in map rendering with downloadable tiles.
  • Voice Analysis: built-in voice support with Whisper model downloads.
  • GPU-accelerated 2D and 3D rendering.
  • AI automation inside Studio to control and inspect UI.

Prerequisites

  • Rust toolchain (stable works for native).
  • For non-standard targets (iOS, tvOS, Android, wasm), install the Makepad build tool:
cargo install --path=./tools/cargo_makepad

Then install target toolchains as needed:

cargo makepad wasm install-toolchain
cargo makepad apple ios install-toolchain
cargo makepad apple tvos install-toolchain
cargo makepad android --abi=all install-toolchain

Linux Dependencies

Linux build/runtime dependencies are listed in ./tools/linux_deps.sh: Use the apt-get command below, or run the script on Ubuntu/WSL2:

sudo apt-get update && sudo apt-get install -y --no-install-recommends build-essential pkg-config clang ca-certificates libssl-dev libx11-dev libxcursor-dev libxkbcommon-dev libxrandr-dev libxi-dev libxinerama-dev libasound2-dev libpulse-dev libwayland-dev wayland-protocols libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglx-dev libdrm-dev libgbm-dev libgl1-mesa-dri mesa-vulkan-drivers mesa-utils mesa-utils-extra x11-apps gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-gl gstreamer1.0-alsa gstreamer1.0-pipewire libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0

Build And Run The Makepad Desktop

The Makepad desktop (window manager) is the main entry point for exploring the apps in this repository.

cargo run -p makepad-app-wm --release

Build And Run The Widget Catalogue

The widget catalogue shows every widget in the library, organised, documented and previewed live.

cargo run -p makepad-app-storybook --release

Examples

Run a few representative apps directly from the repo:

# Splash (simple animated demo)
cargo run -p makepad-example-splash --release

# 3D rendering (glTF)
cargo run -p makepad-example-gltf --release

# Maps
cargo run -p makepad-example-map --release

Maps And Voice Assets

For built-in maps and voice support, download the assets first:

./tools/download_map.sh
./tools/download_voice.sh

Run A WASM App

  1. Install toolchain:
cargo makepad wasm install-toolchain
  1. Run an example:
cargo makepad wasm run -p makepad-example-splash --release

For smaller shipped wasm output, use the shipping-size optimization pass. It keeps the post-link size reduction behavior and pairs well with the existing small profile:

cargo makepad wasm build -p makepad-example-splash --profile=small --strip

To split the wasm payloads, add --split. Bare --split uses an automatic cold-first policy: it first moves defer-safe cold functions into a secondary wasm so startup can begin on the primary first, and if there are no useful cold candidates it falls back to the normal function split. To override the function-splitting threshold directly:

cargo makepad wasm build -p makepad-example-splash --release --strip --split=200

For maximum size reduction, combine --wasm-opt (Binaryen IR optimization) and --brotli (compression). Install Binaryen for --wasm-opt (e.g. brew install binaryen or apt install binaryen):

cargo makepad wasm build -p makepad-example-splash --release --wasm-opt --strip --split --brotli

Notes:

  • --strip strips custom sections (names, producers, etc.) for smaller binaries.
  • --strip-custom-sections preserves the old behavior when you only want to remove custom sections.
  • --wasm-opt runs Binaryen wasm-opt -Os for IR-level optimization (optional; requires Binaryen).
  • --brotli compresses .wasm and assets with Brotli for delivery.
  • --profile=small uses smaller fonts and pairs well with --strip.
  • --no-threads trims the web thread bridge and thread exports when threading is disabled.
  • The wasm linker packs relocations before the post-link size and split passes.
  • --split emits a primary wasm plus secondary payloads (.secondary.wasm, .data.bin) and implies function splitting.
  • Bare --split uses an automatic cold-first split policy.
  • Auto mode defers the secondary when it finds defer-safe cold functions, otherwise falls back to the normal startup-path split.
  • --split=200 switches to an explicit function-body threshold (bytes).
  1. Open:
http://127.0.0.1:8010

Run An Android App

Plug in a device with developer mode enabled, then:

  1. Install toolchain:
cargo run -p cargo-makepad --release -- android --target=all toolchain-install
  1. Run an example:
cargo run -p cargo-makepad --release -- android run -p makepad-example-ironfish

Notes

  • Studio uses cargo-makepad internally for non-standard targets.