onda-engine
v0.3.0
Published
The source-available motion graphics engine — GPU-native, scene-graph-first, framework-agnostic. One install for the whole engine: React renderer, motion-language components, player, renderer, and the wasm core.
Maintainers
Readme
Motion graphics at GPU speed. No browser. No Chromium.
Author video in React → compile it to a scene graph → render it natively on the GPU.
One npm install for the entire engine.
Why ONDA · Install · What's in the box · Onda Studio · License · onda.video
ONDA turns a React composition into a renderer-agnostic scene graph, then rasterizes it with a native GPU renderer (Vello) — or a deterministic CPU reference renderer, or a WebAssembly path for live in-browser preview. No DOM. No headless browser. No screenshot round-trip. Just a scene graph, straight to the GPU.
onda-engine is the all-in-one package — the React renderer, the motion-language component library, the interactive player, the headless renderer, and the WASM cores — bundled into a single install, one version.
Pre-1.0. The Rust + WASM core already powers a production studio, but the public API isn't frozen — expect breaking changes before
1.0.
Why ONDA
Programmatic video today (e.g. Remotion) renders by driving a headless browser: correct, but heavy — a Chromium process per render, slow cold starts, high memory, painful to scale. ONDA keeps the React authoring model you already know, but compiles it to a scene graph and renders it natively. There is no browser anywhere in the pipeline.
It's faster because it does less. Measured on an Apple M4 Pro (1080p, Remotion's best case): ~4.5× faster per thread and ~9.3× higher machine throughput than Remotion — and the gap widens with scene complexity, GPU acceleration, and cold-start / memory pressure.
The scene graph is the universal language; the renderer is the platform. One composition drives them all — live browser preview (WebGPU / WASM), native GPU export, or a deterministic CPU reference render.
Beyond synthetic motion graphics, ONDA edits real footage — cut, trim, and retime video clips on a timeline, mix and trim audio, and finish with a cinematic effect chain (grade, bloom, grain, light-wrap). It also exposes measurement APIs — geometry lint, colour scopes (luma/RGB histograms + clipping), and audio loudness — so a tool or agent can judge a render by the numbers, not by eye.
Install
npm install onda-engine reactreact (v19) is a peer dependency you provide. Everything else — including the ~11 MB of WASM cores — ships in the box. No runtime downloads, no extra registry to configure, no Rust toolchain on your machine.
What's in the box
| Import | What it is |
| --- | --- |
| onda-engine | The Onda motion language — choreography + component library (the main authoring surface) |
| onda-engine/react | The React → scene-graph renderer (renderToScene, primitives, hooks) |
| onda-engine/player | Interactive <Player> — real-time canvas / WebGPU preview |
| onda-engine/render | Node-only headless render to video / still (no Chromium) |
| onda-engine/cinema | Render a timeline composition payload to an engine element |
| onda-engine/components/manifest | Per-component prop manifest (semantic roles) |
| onda-engine/wasm · /wasm-audio · /wasm-vello | The renderer, audio FFT, and Vello GPU cores, compiled to WebAssembly |
Usage
import { TitleCard } from 'onda-engine'
import { renderToScene } from 'onda-engine/react'
const scene = renderToScene(<TitleCard title="Hello, motion" />)The WASM loads itself. Under a bundler that supports the new URL(..., import.meta.url) asset convention (Vite, modern webpack), each .wasm ships next to its glue and is fetched automatically — nothing to wire up:
import { preloadTextMetrics, measureText } from 'onda-engine'
await preloadTextMetrics() // locates + instantiates the wasm core
measureText('Hello', 48) // real shaped glyph metrics
onda-engine/renderis Node-only — it usesfs,child_process, and ffmpeg. Don't import it into browser code; use it from a server or CLI.
Onda Studio
ONDA is the engine; Onda Studio is the director.
Studio is an AI motion-graphics studio — "Lovable for video." Describe a scene in plain language and an agent composes, renders, and ships it — frame-accurate, on this exact engine. The engine stands on its own as a programmatic-video toolkit; Studio is what it makes possible.
Requirements
- React 19 (peer dependency)
- A bundler that handles
.wasmassets for browser use (Vite recommended), or Node ≥ 20 for server-side rendering - WebGPU for the GPU (
wasm-vello) path; the CPU core (wasm) is the always-available fallback
License — read this first
Source-available — not open source. onda-engine is licensed under the Functional Source License (FSL-1.1-Apache-2.0):
- ✅ You may read, run, self-host, modify, and build non-competing products with it — freely, no fee.
- 🚫 You may not use it to make a product that competes with ONDA.
- ⏳ It turns into Apache-2.0: each release automatically converts to full Apache-2.0 two years after it ships.
If you need terms beyond the FSL grant, get in touch via onda.video.
