oxframe-sdk
Health Warn
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Motion graphics as Rust code, made for AI agents. A scene is an async fn; oxframe check returns a storyboard and a report that points to the line to fix. Native, deterministic rendering to MP4, WebM, ProRes or PNG — no browser, no Node. Text, code, charts, matrices, formulas, 3D, sound.
oxframe-sdk
The reel on oxframe.dev, made by examples/src/showreel.rs.
Status: oxframe is under very active development. The API is not stable yet and may change from version to version. Pin the exact version in your Cargo.toml and check the changelog before upgrading.
The Rust SDK of oxframe.
Procedural animation in Rust, modelled after Motion Canvas: a scene is anasync fn, and every .await on an animation is a frame boundary.
use oxframe::prelude::*;
#[oxframe::scene]
async fn intro(view: View) {
let square = view.add(Rect::new().size(200.0).x(-300.0).fill(color!("#e13238")));
all((
square.x().to(300.0, 1.0),
square.radius().to(100.0, 1.0),
))
.await;
}
fn main() {
Project::new("intro").scene(intro()).main();
}
Install the CLI and create a project; its src/main.rs starts from a scene
like this one:

Made by examples/src/quickstart.rs (scripts/readme-gif.sh); the command output is oxframe-cli 0.21.0's.
cargo install oxframe-cli # needs Rust; rendering needs ffmpeg on PATH
oxframe init my-video
cd my-video
oxframe dev # live editor — or:
oxframe render # writes out/my-video.mp4
Or skip the install and open the playground.
(cargo run -p oxframe-examples --bin <name> runs the bundled examples from a
clone of this repo.)
With an AI agent
oxframe is made for agents that write the video and check their own
frames (oxframe check).
npx skills add oxygenframe/oxframe-sdk # Cursor, Copilot, Codex, Claude Code and others
In Claude Code, the plugin adds the skill and the oxframe mcp server:
/plugin marketplace add oxygenframe/oxframe-sdk
/plugin install oxframe@oxframe
The same plugin works in Cursor (.cursor-plugin/): the skills and theoxframe mcp server. Until it is listed in the Cursor Marketplace, load it
locally:
git clone https://github.com/oxygenframe/oxframe-sdk
cp -r oxframe-sdk/plugins/oxframe ~/.cursor/plugins/local/oxframe # then reload Cursor
In Codex:
codex plugin marketplace add oxygenframe/oxframe-sdk
codex plugin add oxframe@oxframe
All of them need the CLI: cargo install oxframe-cli (or the
install script). Every release
gets a video of its notes from
release-video-action,
made with oxframe.
Crates
| Crate | Purpose | wasm32 |
|---|---|---|
oxframe-core |
signals, tweens, Ease, Lerp (incl. path morphing, gradients), deterministic executor, all / sequence / spawn / wait_for / wait_until, seeded random |
yes |
oxframe-2d |
scene graph: Rect, Circle (arcs, pies), Polygon, Star, Path, Line (smooth, arrows), Txt (rich spans, glyph morph), Code (highlighting, focus), Img (PNG/JPEG/SVG), Layout (flexbox/grid via taffy), Grid, Group; gradients, dashes, clip, blend modes, blur, shadow, z-index, anchor |
yes |
oxframe-text |
text layout (parley) and glyph outlines (skrifa), embedded Inter and JetBrains Mono, syntax highlighter | yes |
oxframe-render |
Renderer trait; tiny-skia CPU backend; vello GPU backend (native and WebGPU into an OffscreenCanvas) |
yes |
oxframe-export |
ffmpeg pipe (mp4, webm, ProRes 4444, PNG), audio muxing, waveform | no |
oxframe-preview |
protocol session; native WebSocket server | session only |
oxframe-protocol |
Command / Event, meta.json schema, TS types via ts-rs |
yes |
oxframe-macros |
#[oxframe::scene], color!, ease!, tune! |
— |
oxframe-components |
ready-made blocks: TitleCard, BulletList, CodeExplainer, FlowDiagram, Callout, LowerThird, EndCard; Axes with plots, bars and vectors; Matrix, Table |
yes |
oxframe-3d |
Scene3d, meshes (cube, sphere, plane, cylinder, .glb models), lights, camera; deterministic software rasterizer shown through View3d (feature 3d) |
yes |
oxframe-icons |
icon!("lucide:server"): Lucide, Tabler and Simple Icons; only the named icons go into the binary (feature icons) |
— |
oxframe-math |
Math::new("x^2"): formulas set by Typst with a bundled math font (feature math, not in the playground) |
not used |
oxframe |
facade: prelude, Project, Engine, project CLI (render, preview, check, inspect, snapshot, info), browser API (wasm feature); features gpu, 3d, icons, math, video, unstable-node-api |
yes |
Examples
cargo run --release -p oxframe-examples --bin <name> -- render|preview|info
with intro, text, morph, layout, chart, particles, showcase,effects, shapes, typography, benchmark.
Guarantees
- Deterministic. The same code and
meta.jsongive byte-identical frames:
fixeddt = 1/fps, single-threaded executor, no wall clock, ordered maps only. - Exact timing. A tween that ends between frames hands its exact end time
to the next one, so chains of non-frame-aligned durations do not drift. meta.jsonis the source of truth for markers (wait_until), named
eases (ease!) and tunables (tune!); code only supplies defaults, which are
recorded on first run. Unknown keys are preserved; output is sorted and
2-space indented.
Development
cargo test --workspace
cargo test --release -p oxframe-examples --test acceptance # M0 acceptance, seek budget
cargo bench -p oxframe-examples --bench seek
cargo test -p oxframe-protocol --features ts # writes crates/oxframe-protocol/bindings
cargo test -p oxframe-render --features gpu --test golden # CPU and GPU against golden frames
OXFRAME_UPDATE_GOLDEN=1 cargo test -p oxframe-render --test golden # regenerate references (CPU)
License
Licensed under either of MIT or Apache-2.0 at your option.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found
