📈 GH Trending Explorer 🎲 Surprise me

← all repos

diggerhq / shipvideo

git clone https://github.com/diggerhq/shipvideo.git

Paste a URL or a prompt, get a launch video. Opus 5.5 writes HTML, an OpenComputer serverless agent renders it.

+3
stars, 24h · #8,210
+~28
stars, 7 days · #6,284
+366
stars, 30 days · #2,261
366
★ total · +8% this week
40
forks · 1 open issues

Star history (as recorded here)

2026-10-20 · 354 ★ 2026-10-23 · 366 ★
LanguageTypeScript
License—
Created2026-09-24 (29d ago)
Last push22d ago
Watchers1
OwnerOrganization

Links

README excerpt
# LaunchVideo (launchvideo.io)
Live: https://launchvideo.io
Paste a URL or a prompt, get a 20 to 40 second launch video. No video model:
Opus 5.5 writes a single HTML film and a serverless agent on OpenComputer
renders it frame by frame in headless Chromium, encodes it with ffmpeg, and
saves the MP4 to the session workspace so it can be downloaded straight away.
Same mechanism as the "Opus 5.5 is incredible at instructional video
generation" demo (Opus wrote JS, rendered via a headless browser + ffmpeg),
packaged behind a one-field form.
 [code] 
## Deploy the agent to your own OpenComputer account
One click: https://app.opencomputer.dev/new?repository-url=https%3A%2F%2Fgithub.com%2Fdiggerhq%2Fshipvideo
Or from a terminal:
 [code] 
The agent works on its own in the playground or the CLI: it writes the MP4 to
`/workspace/videos/ .mp4`, the session's shared workspace, and reports the
path. Download it from the session's workspace files in the dashboard, or with
`opencomputer session files download videos/ .mp4`. The
`web/` frontend adds the form and signs that same file for download.
## How a job flows
1. `POST /api/jobs` validates the input, mints a job id, creates an
 OpenComputer session, waits for `runtime.connected`, and sends one turn
 whose text is a `JOB` block (job id, mode, input).
2. The agent (url mode) fetches the page with `web_fetch`, which also extracts
 title, description, headings, the most used hex colors, and Google Fonts.
3. It writes the film as one HTML document (1920x1080, CSS keyframes or a
 rAF loop), runs `check_scene` (loads it under the virtual clock, reports JS
 errors and the visible text at several timestamps), fixes, then calls
 `render_video`.
4. `render_video` renders every frame with Playwright's arm64 headless shell
 under an injected virtual clock (rAF, timers, Date, and CSS/WAAPI animations
 are all driven by `__seek(t)`), pipes JPEG frames into a static ffmpeg
 (libx264, crf 18, yuv420p, faststart), and copies the finished MP4 to
 `/workspace/videos/ .mp4` in the session workspace.
5. `GET /api/jobs/ ?session= ` reads the session's events to derive a
 phase, and reports `done` with a signed download URL as soon as
 `POST /sessions/ /workspace/download` finds the MP4.
The runtime is a fresh Amazon Linux 2023 arm64 microVM per session (node 22,
dnf, no browser), so the first tool call installs playwright-core, ffmpeg-static,
the Chromium shared libs, and Noto fonts into ~/.shipvideo on the local disk
(about a minute). Rendering runs at roughly real time: a 30 s film takes 30-40 s.
## Run it
 [code] 
That is the whole setup: the web app needs nothing but the OpenComputer API
key. No object storage, no tokens to hand the agent — the video lives in the
session workspace and the API signs a download for it.
## Gotchas
- Turns carry a plain string (`POST /sessions/:id/turns {input}`), so the job
 fields ride in the prompt text and the model copies the job id into
 `render_video`.
- No ` `, ` `, ` `, CSS transitions,