Your agent ships the video too.

Paste one line where your agent works on your app. It records the app, cuts the video, and hands you a link.

Hand it to your agent

Read https://vos.so/agent.md, do what it says, and give me the link.

Already have a video? Put it on vos.so →
~/tweakcn

> Read https://vos.so/agent.md, do what it says, and give me the link.

  • Installed @vosjs/cli and ran vos setup
  • Found the app: pnpm dev → localhost:3000
  • Scripted the walk: pick a preset, tune a colour, copy the CSS
  • Recorded a 29 s take, zooms planned from the clicks
  • Pushed it to vos.so
  • Here is your link: vos.so/vos/995a0b5d

tweakcn: tune a preset, copy the CSS

vos.so/vos/995a0b5d

Data, not pixels

Every decision lives in a document your agent can read, patch and hand back.

take/doc.jsonv3 → v4
  "zoom": [
-   { "at": 2.1, "level": 2.2 }+   { "at": 2.1, "level": 1.8 }  ]

Edits are patches. A value changes; nothing re-records.

CLAUDE.mdwritten by vos setup
## Product videos (vosso)
- Skill: product-video (npx skills add vosjs/skills) records the real product from actions.json
- Look before you cut: vos frames take --at-zooms; edit take/doc.json and re-render, never re-record
- Hand back: vos open take serves the take into the studio at vos.so, doc.json intact
- Local by default: vos push only when asked for a link, the shelf or a cloud render

Rules in one file. vos setup writes them for you.

Claude Code
$ vos open take
✓ doc.json opened in the studio
→ vos.so/studio

A person takes over. The studio opens on the same take.

On every pull request

The Action records the product in CI and comments with the video.

.github/workflows/media.yml
name: release media
on:
  pull_request:
  push:
    tags: ['v*']
permissions:
  contents: read
  pull-requests: write
jobs:
  media:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - uses: vosjs/action@v1
        with:
          key: ${{ secrets.VOS_API_KEY }}

Questions

Can an AI agent make videos with vosso?

Yes. The vos CLI runs the whole pipeline headless: vos record drives a page from an actions.json script and records it, the take’s doc.json holds every editable decision as plain JSON, and vos render produces the final video. Logs go to stderr, results to stdout, and --json streams NDJSON events, so no TTY is needed.

How does an agent edit a vosso video?

By patching JSON, not regenerating code. A take’s doc.json contains zoom spans, trims, speed ramps, and styling as data; the rendering program is constant. An agent changes a number and re-renders: the browser flow never re-runs, and manual edits survive re-planning.

Is the output deterministic?

Yes, by construction: the engine owns the master clock and its own tween sampler, so a given take and doc.json render the same frames every time, on the agent’s machine, in CI, or on a server. That makes video diffs reviewable the way code diffs are.

Can my agent put a video it already made on vos.so?

Yes. Paste the host line to it: it rewrites a Remotion or HyperFrames composition, an HTML page or a script so the words and colours are data, pushes it, and hands you a link that plays and keeps every version. Without a credential the push is claimable, and you claim it with a free account.

Is there machine-readable documentation?

vos.so/llms.txt carries the CLI commands, config schemas, and pipeline description in plain text. The @vosjs/cli README documents the take format and exit codes. Both are written to be pasted into an agent’s context.

Something else? hello@vos.so

Ship the video with the release.

Free. Export up to 4K with no watermark, ever, and record takes up to 30 minutes.