← m0saic.io

Where this goes

m0 is the addressing system for programmable visual composition.

Automated composition: programs that generate, test, and render layouts without human intervention
Template libraries: parameterized layout generators that produce valid m0 from structured inputs
Cross-platform rendering: the same m0 string driving output in web, native, video, and print contexts
Programmable video: deterministic tile-mapped composition where layout, timing, and content are fully separable

The v1.0.0 language spec is frozen. Everything above builds on it without changing it.

// the rendering engine

m0saic compiles m0 layout strings into deterministic ffmpeg render plans. Templates are parameterized generators — they accept props (data, media, configuration), produce a valid m0 layout, and render it to video in a single CLI command.

The template ecosystem ships with the engine later this year. Templates are code — developers write them in TypeScript, publish them to the registry, and anyone can render them with a single CLI command. Categories span media utilities, data visualization, branded content, and social formats. Every template works at any resolution. Every render is reproducible.

CLI-first — render from the terminal, script it, schedule it
Open template SDK — write templates in TypeScript, publish to the registry, share with anyone
Data-driven — connect to any API, generate video from structured data
Zero manual editing — build the template once, run it forever
SVG-to-m0 — convert any rectilinear vector art into a valid m0 layout automatically

Screencap Grid

@m0saic/media/screencap_grid_mp4/v1

One template, any video, any resolution. Generates a visual summary with ffprobe metadata in a top pane and a rows × cols grid of animated screencaps below. Each cell has an overlay layer where the timestamp renders. Gutters between cells are baked into the geometry itself, computed at render time from template parameters.

1920 × 10804 cols × 3 rows... sources · 12 cells · 6s · 30fps
single render
$ m0saic make \
  @m0saic/media/screencap_grid_mp4/v1 \
  -w 1920 -h 1080 \
  --props '{"rows":3,"cols":4, \
    "withInfoPane":true, \
    "withTileTimestamp":true, \
    "tileGap":0.001, \
    "sourceId":"big_buck_bunny_1080p.mov"}' \
  -o screencap_desktop.mp4
batch render
$ m0saic make \
  @m0saic/media/screencap_grid_mp4/v1 \
  --input-dir ./raw-footage/ \
  -w 1920 -h 1080 \
  --props '{"rows":3,"cols":4, \
    "withInfoPane":true, \
    "withTileTimestamp":true}' \
  -o ./screencaps/

Same template, different resolution parameter. The m0 layout adapts the grid arrangement to fit the target aspect ratio. Batch mode runs every file in a directory through the same template — hundreds of renders, zero manual work.

Athlete Spotlight

@m0saic/hero/athlete-spotlight/v1

Weekly performance summaries generated from live sports data. One template serves every league — connect to any sports API, pass the athlete and time period, and get a broadcast-ready video. Same structure, different data, every week, no human in the loop.

1080 × 19209:16Stephen Curry
$ m0saic make \
  @m0saic/hero/athlete-spotlight/v1 \
  -w 1080 -h 1920 \
  --props '{"league":"nba", \
    "athlete":"Stephen Curry", \
    "period":"week-12"}' \
  -o spotlight_nba.mp4

Same template, three leagues, three athletes. Swap the props, get a new video. Ideal for automated social media pipelines — a cron job generates this week's spotlight for every athlete in a roster, ready to post without manual editing.

GitHub Dashboard

@m0saic/hero/github-dashboard/v1

Animated project dashboard — commit activity, contributor stats, language breakdown, and repository metadata composed into a single video. Same template renders at any aspect ratio. Data-driven layout where every panel is an m0 tile.

1920 × 108016:9
$ m0saic make \
  @m0saic/hero/github-dashboard/v1 \
  -w 1920 -h 1080 \
  --props '{"repo":"https://github.com/ffmpeg/ffmpeg", \
    "branch":"master", \
    "period":"7d"}' \
  -o dashboard_desktop.mp4

Template pulls live data from the GitHub API. Layout, animation timing, and data presentation are all defined in the m0 composition layer — no manual editing required. Final output is under 1MB of HD video — small enough to embed in email, drop into a Slack thread, or present in a Teams meeting. Build the template once, run it forever.