Render Anything Engine (for Anyone)
One GPU engine for video, motion, games, 3D and documents, written as React and TypeScript,
rendered faster than it plays, on the device you already own.
raea.io · Why we built it · How it works · Settings · Agent skill
Canary. raea is in active development and changes daily. It builds and renders on a Mac with Apple Silicon, and parts of it are rough. Expect breaking changes, missing docs, and things that only work the way we use them.
raea renders compositions: React components that draw a frame for a given moment, written with raea.
The engine runs them inside Bevy on the GPU, composites video with fused compute kernels,
encodes in hardware, and keeps everything it drew as data you can query. The same file renders to an MP4, plays live
as a game, or renders one frame for an agent to look at.
import { AbsoluteFill, Composition, interpolate, registerRoot, useCurrentFrame } from "raea";
function Hello() {
const f = useCurrentFrame();
return <AbsoluteFill style={{ background: "#000", color: "#fff", fontSize: 120, opacity: interpolate(f, [0, 20], [0, 1]) }}>Hello</AbsoluteFill>;
}
registerRoot(() => <Composition id="hello" component={Hello} width={1920} height={1080} fps={30} durationInFrames={90} />);raea render hello.tsx -o hello.mp4Requirements: macOS on Apple Silicon, Rust (stable), bun, Xcode command-line tools.
git clone https://github.com/shinyobjectz/raea && cd raea
# the CLI: render, play, run and test compositions (one Cargo workspace, one target/)
cargo build --release -p raea-cli
target/release/raea render sdk/react/bench/games/pong/edit.tsx -o pong.mp4The raea app's agent needs a model. Put a key in ~/.raea/env; OpenRouter is the default, and Anthropic, Z.ai, DeepSeek,
Moonshot or any Anthropic-compatible endpoint work through RAEA_LLM_PROVIDER:
mkdir -p ~/.raea && echo "OPENROUTER_API_KEY=sk-or-..." >> ~/.raea/envEverything else is optional; docs/settings.md lists every setting, and how to run the small API behind generated music and speech yourself.
- Agent skill.
sdk/skills/raea/SKILL.mdteaches any agent to write, render and check raea compositions.sdk/skills/raea-bevycovers 3D and games drawn by Bevy. - Claude Code plugin.
/plugin marketplace add shinyobjectz/raea, then/plugin install raea@raea. - MCP. With the raea app running,
claude mcp add --transport http raea-app http://127.0.0.1:7457/mcpgives an agent its tools:state,screenshot,send,act,wait,logs,hear,say.
| Folder | What |
|---|---|
engine/render/ |
raea-render: the Bevy renderer an edit's rows draw through, the GPU encode path, the media verbs |
runtime/js/ |
React and HTML on bevy_ui: the page a composition's 2D draws on, tested against Chrome |
core/k/, systems/k/ |
The render path's kernels in a small K dialect: interpreted on the CPU, compiled to WGSL, bit-exact |
io/media/ |
Decode and encode behind one seam: VideoToolbox, software codecs, AV1, a muxer |
systems/mix/, systems/tone/, engine/seedling/ |
One mixer core for live play and offline render, Tone's instruments and effects on it, and bevy_seedling on it |
core/animate/, engine/bevy-plugins/ |
Frame-pure animation (easing, tweens, springs), and Bevy plugins compiled into the engine |
core/calls/, engine/native/, io/shell/, engine/modules/ |
The native-call registry, its JavaScriptCore binding, the shell's natives, and the in-process TypeScript loader |
engine/bundle/ |
The in-process TypeScript bundler (Rolldown) |
engine/sandbox/ |
A WASI sandbox for command-line tools on the iPhone (experimental) |
gpu/device/, io/trace/ |
The one shared GPU device and its telemetry, and the flight recorder each run leaves |
sdk/raea/ |
raea, the TypeScript SDK: its spec, conformance suite and source |
sdk/react/ |
raea: runs raea compositions in Bevy; render, play, run, test; the iPhone build |
sdk/shell/ |
The agent's shell |
sdk/skills/ |
Agent skills for working in raea |
engine/cli/ |
The agent's raea command |
systems/footage/ |
Reading footage the way an editor does |
systems/ml/, systems/speech/ |
Models on ONNX Runtime, and Pocket TTS speech on it |
tools/ |
Build helpers: the JIT-signing linker wrapper, setup scripts |
docs/ |
Cross-cutting docs and settings |
Each folder has a README saying what it is and what it depends on. Behaviour specs written in Gherkin (.feature)
sit beside the code they specify.
raea is under the Functional Source License 1.1, ALv2 Future License (FSL-1.1-ALv2), copyright Shane Murphy: use it, change it, build on it and pass it on for anything except a product that competes with raea. Each version becomes Apache-2.0 two years after its release. Third-party parts keep their own licences; see NOTICE.