Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cadence

Cadence

Programmatic video from Lua. No browser. No React scaffold.
One .lua file → headless LÖVE → ffmpeg → mp4.

GitHub · Verification · Agent skill · npx skills add shinyobjectz/cadence


Cadence is a seek-not-playback motion framework: compositions are pure functions of time. Agents author .lua files; the renderer evaluates any frame in any order; verification runs in milliseconds before you ever encode.

Quick start

git clone https://github.com/shinyobjectz/cadence.git && cd cadence
cd desktop && pnpm install && cd ..

# environment check
bin/cadence doctor

# instant compile (wasmoon, ~30ms)
cd evals/projects/launch-spot
../../bin/cadence verify comps/launch.lua --wasm-only

# render
../../bin/cadence render comps/launch.lua -o out.mp4

Install the agent skill (Cursor, Claude Code, Codex, Copilot, …):

npx skills add shinyobjectz/cadence

CLI

Command What it does
cadence verify comp.lua --json Compile → lint → check pipeline
cadence verify … --wasm-only Instant tier-0 compile feedback
cadence doctor Probe love, ffmpeg, wasmoon, project layout
cadence feedback comp.lua Agent-readable summary + next steps
cadence lint / check Static + pixel verification (--json)
cadence render Offline encode to mp4

All verification commands emit cadence.result/v1 JSON — structured findings agents can parse without reading stack traces.

Terminal

cadence doctor

cadence verify

cadence feedback

Composition sketch

local e = require("cadence")

return e.comp {
  width = 1080, height = 1920, duration = 6, fps = 30,
  background = "#0B0D12",

  scene = function(s)
    local title = s:text { x = 540, y = 960, text = "cadence", size = 120,
                           color = "#5EEAD4", anchor = "center", opacity = 0 }
    s:script(function(t)
      t:tween(title, 0.8, { opacity = 1, size = 140 }, "backOut")
    end)
  end,
}

Why Cadence

  • Deterministic by construction — no clocks, no I/O in comps; RNG seeded
  • Agent-first — lint/check/verify JSON, skill on skills.sh
  • ~10MB engine — vendored LÖVE fork, not headless Chrome
  • Three hosts, one API — native encode, wasmoon preview, Rust helpers

Layout

Path Purpose
bin/cadence CLI entry (render, verify, doctor, …)
lib/cadence/ Host-free authoring API
runtime/ LÖVE offline host
desktop/ Tauri + React editor (optional)
skills/cadence/ Official agent skill
evals/ Public visual suite

Ellua → Cadence

This project was formerly ellua. The Lua module alias require("ellua") remains for compatibility; new work should use cadence naming. The archived repo: github.com/shinyobjectz/ellua.

License

MIT — see LICENSE if present, otherwise check repo root.

About

Programmatic video from Lua — seek-not-playback motion graphics without a browser.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages