Repository navigation
raea 0.1.0-canary.2
Pre-releaseThe second canary of the raea engine: the raea CLI that renders, plays and checks compositions and games written in React and TypeScript, with the SDK, the runtime and the agent skills beside it. It needs no account and talks to no raea server.
curl -fsSL https://raea.io/install | shThat installs into ~/.raea, links raea from ~/.local/bin, and adds the raea and raea-bevy skills to ~/.claude/skills, so a coding agent knows how to write, render and play with raea. Then:
mkdir my-video && cd my-video && raea init
raea render # a title card until you cut footage in with `raea cut`What changed since 0.1.0-canary.1
One CLI and one SDK, both called raea. The command is raea (it was raea-motion; the installer moves an old link over), and the SDK is the raea package (it was @raea/motion).
The SDK speaks Bevy. raea draws with Bevy 0.20, and its TypeScript now uses Bevy's names and shapes: Camera3d, StandardMaterial with Bevy's fields (textures with their samplers, the metallic-roughness map, fog, specular tint, anisotropy, parallax and the rest), ExtendedMaterial for custom shaders, and a material's animate track keyed by those same fields and checked by TypeScript. <Canvas3D> is no longer needed: a <Camera3d> can sit in any page element and draws its view in that element's box (a camera on the whole frame draws under the page, as before).
The page and the 3D world are one app. A React page (HTML and CSS, laid out and drawn by Blitz) and a Bevy world now share one App: events and input go both ways (a mesh takes onClick like any element), page elements can follow world objects, and CSS filters and backdrop-filter, gradients, blend modes and SVG filters (lighting among them) are drawn as Chrome draws them, each checked against Chrome. A Rust plugin can register its own page element, which TSX then uses as a tag.
Bevy's plugin ecosystem, from TypeScript. About fifty Bevy plugins are declared in one catalog, built into raea and reachable as raea/plugins/<name>, typed from their reflected types, or through raea's adapters and calls where a crate has none: physics (avian, rapier 2D and 3D), tilemaps and levels (tilemap, LDtk, Tiled, TrenchBroom), particles (hanabi, enoki), input (enhanced input, leafwing, a virtual gamepad and picking), audio (kira), cameras (pan, orbit), assets (OBJ, MagicaVoxel, Aseprite), easing, navigation and pathfinding (vleue_navigator, bevy_northstar), and more. raea/bevy's BevyApp runs a headless App with any of them from a script. Declaring a plugin in package.json's raea.plugins is the same for a Bevy crate, a Blitz extension or raea's own.
Characters move from goals. @raea/character/plugin runs raea's motion engine as an App system: give a character a goal and it performs it, frame by frame.
Shaders. A full-frame pass (FramePass) and material extensions over StandardMaterial, from TSX.
Linux. raea builds, renders and plays on Linux (x86_64, Vulkan, glibc 2.39 or newer, so Ubuntu 24.04 and later), and the same install line picks the Linux build. Install fonts-noto-cjk for CJK text. Rendering works on a CPU (llvmpipe); live play wants a GPU. Caches and logs follow XDG (~/.cache/raea, ~/.local/state/raea). raea song isn't in the Linux build yet. On a minimal system (a container image, say) raea needs libasound2t64 libfontconfig1 libvulkan1 mesa-vulkan-drivers (Debian and Ubuntu names).
A first run that shows something. raea init makes a project whose edit plays a title card until you cut footage in, so the first raea render is never black.
Windows (added 2026-11-05)
raea now runs on Windows 10 and 11 (x86_64): raea-0.1.0-canary.2-windows-x86_64.zip below, the same engine, SDK and skills as the macOS and Linux builds, built from canary.2 plus the Windows port's fixes. To install it, in PowerShell:
irm https://raea.io/install.ps1 | iexThe installer checks the zip's checksum, puts raea under ~\.raea, adds its bin to your PATH and installs the agent skills. To do the same by hand:
$v = "0.1.0-canary.2"; $zip = "raea-$v-windows-x86_64.zip"
$url = "https://github.com/shinyobjectz/raea/releases/download/v$v/$zip"
Invoke-WebRequest $url -OutFile $zip; Invoke-WebRequest "$url.sha256" -OutFile "$zip.sha256"
if ((Get-FileHash $zip -Algorithm SHA256).Hash -ne ((Get-Content "$zip.sha256") -split '\s+')[0]) { throw "checksum mismatch" }
$tmp = Join-Path $env:TEMP "raea-$v"; Expand-Archive $zip -DestinationPath $tmp -Force
Remove-Item "$HOME\.raea\bin", "$HOME\.raea\share" -Recurse -Force -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Force "$HOME\.raea" | Out-Null
Move-Item "$tmp\raea\bin", "$tmp\raea\share" "$HOME\.raea"
[Environment]::SetEnvironmentVariable("Path", "$HOME\.raea\bin;" + [Environment]::GetEnvironmentVariable("Path", "User"), "User")Open a new terminal, then mkdir my-video; cd my-video; raea init as on the other platforms. For a coding agent, copy the folders in ~\.raea\share\raea\skills into ~\.claude\skills.
- It needs the Microsoft Visual C++ Redistributable (x64), which most machines already have. If raea won't start, install it from https://aka.ms/vs/17/release/vc_redist.x64.exe (or
winget install Microsoft.VCRedist.2015+.x64). - It draws with a DirectX 12 or Vulkan GPU driver. With no GPU (a VM or a server), WARP, Windows' own software DirectX, crashes compiling one of Bevy's shaders, so use Mesa's lavapipe (software Vulkan) with
WGPU_BACKEND=vulkan. That is how the zip was checked on GitHub's Windows runners, where it rendered, ran the plugin catalog and installed from the zip alone. It hasn't been tested on a Windows machine with a real GPU yet: reports welcome. - Not in this build:
raea song(its beat model's runner is macOS only so far).
Known missing
- React parity is the next release. React apps render on the page (raea's own app passes all 15 of its review screens against Chrome, and 261 of the 265 parity cases pass; the four left draw video frames, seek video, read video back through a canvas and downscale an image), but most of the web platform isn't yet proved against Chrome item by item: 625 of the 3,812 most-used React, CSS, event, text, form, media, accessibility and platform features have a passing case.
- A composition that cuts between two 3D scenes draws a model's screens (a page shown on a mesh) only in the first one. Render each scene on its own and join them until this is fixed.
- Exports aren't signed. Content credentials come from raea's service, which this free build leaves out.
- Three plugins are compiled in without a TypeScript API yet: bevy_asset_loader, iyes_progress and moonshine-save, which are Rust-side libraries. Saving and loading from TypeScript is next.
- Next: a project layout by feature (
raea init --layout feature, with assets/ found from anywhere in the project). - macOS needs Apple Silicon; Windows needs x86_64 (no Arm build yet).
- Canary: it changes often, and parts of it are rough.