Point your AI Agent at your app.
Get a narrated demo video.

Ultrademo is a capture-and-render pipeline for demo videos of any website or SaaS application, driven by a Claude Code skill (an AGENTS.md brings Codex, Cursor, and other coding agents along). Point it at a URL or your codebase, review the script it drafts, and get a finished MP4 with high quality narration. It all runs on your machine: your credentials and app data never leave your environment.

Apache-2.0 · runs locally · bring your own ElevenLabs key or use free offline voices

acmedemo.twenty.com/objects/companies
Built end to end by the pipeline: scouted, scripted, captured through a signed-in session, narrated, rendered. Watch the full video with narration →

A launch video costs $2,000 to $15,000 with an agency, or an entire weekend with a video editing software. And it becomes stale the moment your UI changes.

Showcase

Different apps. Zero editors.

The hero video above and every video below came straight out of the pipeline: scouted, scripted, captured, narrated, and rendered by the skill. No timeline, no post-production, no retouching.

Narration: ElevenLabs · captions burned in · 1080p MP4, with vertical and GIF cuts from the same capture.

How it works

You direct. Claude does the shoot.

01

Brief it

"Make a 2-minute walkthrough of our onboarding flow." Point it at a URL or your codebase, hand it test credentials, add context if you want.

02

Approve the script

Claude scouts your app and drafts a scene-by-scene outline: what's on screen, what the voiceover says. You edit it inline before anything gets recorded. Nothing ships without your sign-off.

03

It captures and renders

A browser agent walks through your live app: real clicks, real typing, real screens. TTS then voices every line. Remotion cuts it together with zooms, cursor motion, and captions.

04

Publish, then re-run

Your UI changed next month? Same project, one command, fresh video. Unchanged narration is cached, so a visual refresh costs nothing extra.

The storyboard is the single source of truth. Edit one narration line and re-render in minutes. Re-capture only the affected scenes when your UI changes. Reprompt, not reshoot.

The skill · available now

Free and open source.
Yours in five minutes.

The full pipeline is on GitHub under Apache-2.0. Not a trial, not a crippled tier: the same code we use for all our own demos.

  • Real screen recordings, not slideshows. Demo-paced clicks and typing, jump-cuts over loading spinners, freeze-frames timed to the narration.
  • Human-grade narration with ElevenLabs, cached per line so re-renders never re-bill.
  • One capture, every format: finalized 16:9 MP4, vertical 9:16 cut, GIF for your README, editor stems (clean video, narration.mp3, SRT).
  • In-page redaction: blur emails, names, and account numbers live in the page, in stills and clips alike.
  • Signed-in capture: authenticate once in a real browser window, capture headlessly afterwards.
  • Re-runnable projects: previous renders auto-archive, so every re-run leaves a before and after.
  ultrademo-workspace
# get it
git clone https://github.com/new-xp/ultrademo ultrademo-workspace
cd ultrademo-workspace && npm install
npx playwright install chromium
npm run doctor        # checks node, ffmpeg, voices

# optional, for premium narration
echo 'ELEVENLABS_API_KEY=sk_...' > .env

# then, in Claude Code:
 make a 2-minute demo of our onboarding flow

With Claude Code recommended

Open the folder in Claude Code and ask for a demo video. The bundled skill scouts your app, drafts the script for your sign-off, writes the capture flow, records, narrates, and renders.

With another coding agent

The repo ships an AGENTS.md that hands Codex, OpenCode, Cursor, Gemini CLI, and other coding agents the same playbook. Built and tested with Claude Code; any capable agent can follow it.

Manually advanced

Copy the flow template, describe your scenes, then npm run capture · tts · render. Every video is a self-contained project folder you can re-run any time.

Local-first

Shot on your machine.
Private by default.

Demo tools that host your capture also host your credentials and your customers' data. Ultrademo doesn't. The browser runs on your laptop, the frames render on your laptop, and in-page redaction blurs sensitive content before a single frame is saved. Unredacted pixels never exist anywhere but your screen.

The skill also runs a secrets sweep on the final frames (URL tokens, keys in forms) before anything is presented back to you.

// blur sensitive data live, in stills and clips alike
redactScript: `(() => {
  const RE = /@yourcompany\.com|ACC-\d+/;
  const sweep = () => { ... el.style.filter = 'blur(6px)' ... };
  new MutationObserver(sweep).observe(document.body, ...);
  sweep();
})();`

Blur by pattern or selector. Emails, account numbers, a whole customer-name column. It survives scrolling and navigation, and never modifies your app or its data.

Re-runs

You shipped new features. Your UI changed.
Your video shouldn't go stale.

Every video is a stored project in your machine: the flow, the script, the voice, the settings. When you ship an update, just re-run the skill. Cosmetic refresh? One command, done. A selector broke? The skill re-scouts just that surface and patches the flow. Feature changed? Edit the narration and only the edited lines get re-synthesized. And if you work in the repo, the skill reads your diff since the last capture to know which scenes need repair before it re-runs anything.

Today · free

Re-run with the skill

One command whenever you ship. Renders archive automatically, so every re-run leaves a before and after pair.

Free recipe

Wire it into CI

A deploy triggers a fresh capture. Your demo updates itself on the same pipeline that ships your code.

Coming in the app

Managed regen

We watch for changes, repair broken selectors, verify the new video is faithful, and hand you the diff. You just approve.

Coming soon · join the waitlist

The Web App: everything the CLI can't be.

The skill is for builders. The app is for everyone who'd rather click than type, plus the things that only work in a hosted environment.

🎬

Scene editor

Every video as an editable filmstrip. Reword a narration line, reorder scenes, re-voice, re-capture one shot, re-render. No timeline, no keyframes, no editor skills.

🧭

Guided creation

Paste a URL, add a one-paragraph brief, approve the script. Watch the video assemble itself scene by scene, live.

🎙️

Studio voices included

No API keys. Metered studio-grade narration out of the box, with voice cloning so the founder can narrate without recording a take.

🔗

Share pages

Every render gets a branded, embeddable page. Send a link instead of a 60 MB file.

🔄

Auto-regen

Connect GitHub or Linear. When a feature ships, Ultrademo re-captures, re-renders, and tells you exactly which scenes changed.

📦

Import from the skill

Started local? Open the same project in the app. One format end to end, nothing to migrate.

The scene editor

app preview
ultrademo / acme-onboarding / storyboard 10 scenes · 1:42Re-render
s1 · Intro0:07
s2 · Sign up0:11
s3 · Invite team0:12
s4 · First project0:09
s5 · Dashboard0:10
ZOOM · invite modal
Invite your teammates by email, and pick their role right here. Everyone lands in the same workspace, no setup on their end.
0:04 / 0:12 · Voice: Harper
▶ Preview scene ↻ Re-voice line 📷 Re-capture ↑↓ Reorder

Guided creation, live

app preview
ultrademo / acme-onboarding / run #3   capturing
scene 6 of 10est. 4 min remaining
s1
s2
s3
s4
s5·
14:02:11 s3 clip captured (4.2s) · cursor track saved
14:02:14 s4: opening Projects, clicking "New project"
14:02:15  typing "Q3 launch plan" at demo pace…
14:02:19  skipWhile: waiting out the loading spinner (jump-cut)
14:02:21 narration queued: "Create your first project and…"
Narration credits
14 of 120 used this run
Capture cost warnings
0 paid actions in this flow
Script
Approved by you · rev 2
edits locked during capture

Auto-regen, with a diff you approve

app preview
ultrademo / acme-onboarding / regen re-capture passed
🔔

Your UI changed. Scene 3 was re-captured.

Triggered by deploy #214 · main · the invite modal moved to the top bar. The flow selector was repaired automatically and the new take matches your approved script. 9 scenes unchanged, narration untouched (nothing re-billed).

BEFORE · 2026-06-30s3 · Invite team
AFTER · todays3 · Invite team
✓ Approve & publish ▶ Review side by side share page updates on approve

Web App · Early Access

Be the first in line for our web app.

Early access rolls out in order, and early users lock in exclusive launch discounts and founding-member perks. Skill users get bumped up the list: include your GitHub handle and we'll find your star.

You're on the list, with early-access pricing locked in. We'll be in touch, and the skill is free while you wait. Just plug it into Claude Code.

We promise to never spam you. You'll just get the notification when it's your turn.

FAQ

Questions, answered straight.

Is the skill really free?

Yes. Apache-2.0, full pipeline, no watermark, no time limit. Our Web App will be a paid product (coming soon) with visual editing, included voices, share pages, and automatic re-generation. Local and DIY through the skill stays free forever.

Do I need an ElevenLabs account?

For the best narration, yes, bring your own key (when re-generating scenes, unchanged lines are cached, so re-renders don't re-bill). If you don't want to use ElevenLabs, Piper TTS gives you free offline narration, and if you're a macOS user, you can fall back to macOS's built-in voice.

What does it cost to run?

The pipeline itself costs nothing. Your only spend is narration: ElevenLabs usage on your own key, with per-line caching keeping re-runs close to zero, or nothing at all with Piper or the macOS voice.

Does it work on my app?

If a browser can reach it, yes: production apps, staging, localhost - works on all. You provide the URL and test credentials; a one-time login command handles signed-in sessions. Web apps only for now, no native apps.

Is it safe to point at production?

The skill scouts read-only, never saves settings on camera, warns you before actions that cost money, and redacts sensitive data in-page before frames are saved. And it all runs on your machine, so nothing sensitive is uploaded anywhere.

What about my customers' data on screen?

In-page redaction blurs it live during capture, by pattern (emails, account numbers) or by selector (a whole column). It applies to screenshots and video clips alike, and survives scrolling and navigation.

Is Claude Code required?

No. It's the recommended way to run the skill and what we build and test with, but the repo ships an AGENTS.md that gives Codex, OpenCode, Cursor, Gemini CLI, and other coding agents the same playbook. The pipeline itself is plain Node and works fully standalone too. The web app (waitlist above) will need none of this.

Does it need access to my codebase?

No. A URL, test credentials, and a one-line brief are enough; that's how we produce videos of third-party apps. But if your code is available, the skill puts it to work: stable selectors straight from source, feature flags and empty states accounted for, demo data seeded against the real schema, and on re-runs it reads your diff to know which scenes need re-capturing.

Shipped something this week?

It deserves a demo video. Try the Ultrademo skill for free.