The open visual operating system — turn a function into deterministic, resolution-independent, mixed-media video, and render it anywhere.
A video is just inputs and a function, rendered. vos is a programmatic video engine for the web: it takes a JSON description of an animation — scenes, cameras, post-processing, GSAP timelines, and overlay elements — and compiles it into a self-contained template that renders identical motion graphics every time, anywhere a browser can run: the browser, Node, or a Cloudflare Worker. The core is pure (no DOM dependencies), and three / gsap stay optional peers you bring yourself.
vos — short for Visual Operating System, and Latin for you — is the open engine. vosso is the platform built on it: a visual operating system for generated video, where every app is powered by vos.
| Package | npm | Description |
|---|---|---|
@vosjs/core |
The engine: config compiler, validation schema (Zod), runtime template generator, addon registry, and types. | |
@vosjs/elements |
The element system: text / image / SVG / video / audio renderers for Three.js overlays, shipped as a typed ESM factory and an injectable IIFE bundle. | |
@vosjs/timeline |
Deterministic timeline math for video editing: keyframe sampling, GSAP-compatible pure easings, source-time remapping (trim/split). | |
@vosjs/editor |
Headless video-editor infrastructure: patch-based document store (undo/redo), live-edit classifier, editor bridge client, timeline view-model math. |
threeandgsapare optional peer dependencies — you bring your own versions, and the engine never bundles them.
pnpm add @vosjs/core three gsapimport { compileVosConfig, vosConfigJsonSchema } from '@vosjs/core'
const config = {
version: 2,
scene: { background: '#000' },
camera: { type: 'perspective', position: [0, 0, 5] },
// functions are authored as strings, compiled into executable code
createContent: '(ctx) => { /* build your Three.js scene with ctx.THREE */ }',
}
// validate, then compile to a runnable template string
vosConfigJsonSchema.parse(config)
const template = compileVosConfig(config)The compiled template is an HTML/JS document you can render in an iframe, capture to video, or snapshot to an image — the same template powers playback, export, and server rendering.
| Import | What it gives you |
|---|---|
@vosjs/core |
compileVosConfig, schemas, addon registry, types |
@vosjs/core/compiler |
The compiler and code generators |
@vosjs/core/runtime |
generateRenderTemplate, transformModuleCode, render limits |
@vosjs/core/schema |
Zod schemas, validators, config migrations |
@vosjs/core/addons |
Three.js addon / post-processing registry |
@vosjs/core/extract |
Config extraction from LLM/text output |
@vosjs/core/types |
Pure type definitions |
This is a pnpm + Turborepo monorepo.
pnpm install
pnpm build # build all packages
pnpm typecheck
pnpm test
pnpm lintReleases are managed with Changesets. To propose a release, run pnpm changeset and commit the generated file with your PR.
- Plugin SDK (
@vosjs/plugin-sdk) — a unifieddefinePlugin()contract so addons, element renderers, schema extensions, and codegen hooks can be contributed by third-party packages. - Browser adapter (
@vosjs/web) — a Vite-friendly dynamic addon loader whose import map is plugin-contributed. - CLI & scaffolding (
@vosjs/cli,create-vos).
MIT © vosso