ppainto.ai
Built on HyperFrames — open-source, Apache 2.0

The vibe coder for motion and presentation

Describe what you want. An agent writes real HyperFrames code. Watch it play on a seekable canvas. Ship a deterministic, brand-exact video — the code is always yours.

Paste a URLPaste a PRDescribe an idea
northwind-launch.painto.ai
Chat
a 30s launch video for Northwind — punchy, dark, ends on "Try free"
6 scenes, 30s, dark theme — building now
2 changes title ease → back.out(1.7), intro −0.4s
▶ seekable canvas — scrub any frame

The insight

Every tool forces a trade. painto.ai doesn't.

A HyperFrames composition is a plain HTML file with a paused, seekable timeline. That one primitive is what an agent can emit and repair, what a browser can scrub instantly, and what a render farm can turn into a deterministic MP4 — no trade-offs.

Sora, Runway, Pika
Natural-language authoring
but an opaque output you can't precisely edit.
Remotion, After Effects
A real, editable artifact
but no prompt-driven authoring — you're back to keyframes.
Gamma, Tome, Canva
Fast text-to-layout decks
but no motion video, and no code substrate underneath.
Every tool above
One output modality
video or slides — never one engine for both.

How it works

Prompt in. Real, seekable composition out.

01
Describe it

“A 30-second launch video for Northwind — punchy, dark, ends on 'Try free.'” Or paste a URL, or a PR.

02
Watch it play

An agent streams real HyperFrames HTML — clips, tracks, GSAP timings. The canvas plays within ~15 seconds.

03
Chat to refine

“Make the title land harder, cut a beat off the intro.” The agent edits the ease and duration; a diff card shows exactly what changed.

04
Ship real code

Render a deterministic MP4, or grab the actual HTML/GSAP any time. Nothing is locked away — export runs under the open CLI.

Magic moments

The party tricks no gen-video tool can match.

Paste a URL → launch video

The agent reads your site, pulls brand tokens into frame.md, and composes an on-brand launch video in about 60 seconds.

Paste a PR → changelog video

/pr-to-video turns a GitHub diff into a scene-by-scene changelog clip your team actually ships weekly.

"Make it match our brand"

One phrase re-skins every scene to your exact palette, type scale, and motion rules — frame.md, injected into every turn.

Scrub to any frame, instantly

The timeline is paused and driven, not wall-clock. Drag anywhere — the canvas snaps there with zero buffering.

Batch-render 40 variants

One template, deterministically rendered into dozens of localized, branded variants. This is where self-hosting gives up.

Who it's for

Built for people who ship on-brand motion, on a deadline, forever.

DevRel / product marketer
Job to be done
Ship an on-brand changelog or launch video every week — without a video team.
Today
Briefs a contractor, or loses a day to CapCut.
The aha
Pastes a PR URL, watches a branded video assemble, chats “slow the code-diff scene,” hits Render.
Founder / solo operator
Job to be done
Tell one story — a demo video now, a board deck later.
Today
Gamma for slides, a separate tool for video, brand drift between them.
The aha
The same composition flips from video to a navigable deck. Same source, two deliverables.
Agency / frontend designer
Job to be done
Deliver client motion at scale without hand-keyframing every variant.
Today
Remotion is too much boilerplate; After Effects isn't programmatic.
The aha
Vibe-codes one template, batch-renders 40 localized branded variants, deterministically.

The escape hatch

The code is real. Always one click away.

Every project is genuine HyperFrames HTML/GSAP, not an opaque pixel blob. Open the code view, hand-edit, and the agent understands the change next time you chat. Export to a plain folder that runs under the open-source CLI — no build step, no lock-in.

  • Deterministic — identical frames on every render, CI-testable.
  • Portable — a plain folder, no database lock-in.
  • Brand-exact — frame.md is injected into every agent turn.
// index.html — the actual composition
<div id="stage" data-width="1920" data-height="1080">
<div class="clip" data-start="0" data-duration="2.4" data-track-index="0">
Try free.
</div>
</div>
// seek-safe — bound to window.__timelines, never Date.now()

Pricing

Free to start. Pay for render minutes, not editability.

The chat-and-preview loop is free. You pay for the managed render fabric, brand memory, and batch rendering — the things open source can't give away.

See full pricing →

Describe it. Watch it play. Ship real video.