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/motion.
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/motion";
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-motion render hello.tsx -o hello.mp4void is the Mac app built on raea: a black window you talk to. Describe a reel, a promo or a game; its agent writes the composition, renders it, checks the frames and the sound, and plays it on its stage.
Requirements: 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-react --bin raea-motion
target/release/raea-motion render sdk/react/bench/games/pong/edit.tsx -o pong.mp4
# void, the Mac app
cargo build --release -p raea-void && target/release/voidvoid'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 void running,
claude mcp add --transport http void http://127.0.0.1:7457/mcpgives an agent void's tools:state,screenshot,send,act,wait,logs,hear,say.
| Folder | What |
|---|---|
engine/html/ |
The core crate (raea): HTML and CSS rendering without a browser (Blitz, Stylo, Vello), the compositor, fonts, a C API |
engine/rdb/ |
An edit as typed tables on Bevy's World, and the Bevy renderer that draws it |
engine/kgpu/ |
K on the GPU: a small array language compiled to WGSL, bit-exact with its interpreter |
engine/media/ |
Decode and encode behind one seam: VideoToolbox, software codecs, AV1, a muxer |
engine/mixer/, engine/seedling/ |
One mixer core for live play and offline render, and bevy_seedling on it |
engine/animate/, engine/bevy-plugins/ |
Frame-pure animation (easing, tweens, springs), and Bevy plugins compiled into the engine |
engine/native/, engine/modules/ |
The native-call layer on JavaScriptCore, and the in-process TypeScript loader |
engine/browser/, engine/bundle/ |
The agent's browser, and the in-process TypeScript bundler (Rolldown) |
engine/sandbox/ |
A WASI sandbox for command-line tools on the iPhone (experimental) |
engine/gputrace/ |
GPU telemetry |
sdk/motion/ |
@raea/motion, the TypeScript SDK: its spec, conformance suite and source |
sdk/react/ |
raea-motion: runs @raea/motion compositions in Bevy; render, play, run, test; the iPhone build |
sdk/shell/, sdk/data/ |
The agent's shell; a project's record, and a brief's facts and checks, as data |
sdk/brief/ |
The .brief plan format |
sdk/skills/ |
Agent skills for working in raea |
apps/void/ |
void, the Mac app: the window, the stage, the agent, voice, its MCP server, evals |
apps/cli/ |
The agent's raea command |
ai/agent/ |
The agent loop, its multi-provider model layer, a Gherkin parser, traces |
ai/perception/, ai/meaning/ |
Reading footage the way an editor does; frame embeddings (SigLIP 2) as columns, searched with K kernels |
ai/ml/, ai/score/ |
Models on ONNX Runtime; the compiler from a .brief to a composition |
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.