Agent-native interactive demos, open source

Your agent records, writes and ships interactive demos of your real product, and keeps them current. They live as plain files in your repo.

npx @inkly-org/interactive-demo-cli init my-demos

Ask your agent for a demo

The repo ships an agent skill that teaches Claude Code, Codex or another agent the whole loop: scaffold, capture, write the copy, validate, publish. Add it to your project (this is the Claude Code location), then tell your agent what to record. You review what comes back.

mkdir -p .claude/skills/interactive-demo && curl -fsSL https://raw.githubusercontent.com/inkly-ai/interactive-demo/main/skills/interactive-demo/SKILL.md -o .claude/skills/interactive-demo/SKILL.md
Make an interactive demo of our onboarding flow at <your app's URL>
  1. The capture command recording four steps from a product in Chrome

    Capture

    npx interactive-demo capture start https://app.example.com --name "Onboarding"

    Your agent drives Chrome from the terminal, or you click through yourself: every click becomes a step, with the pointer where you clicked. Prefer your own browser? Record with the Chrome extension and import the zip.

  2. The local editor: filmstrip of steps, the preview, and the annotation toolbar

    Polish

    npm run dev

    A demo is a demo.config.json and an assets folder. Your agent writes the copy and fixes it like any other file, and the diff is reviewable. Prefer a UI? The local editor writes straight back to the same files.

  3. The share dialog with the login and publish commands

    Ship

    npx interactive-demo publish

    One command puts the demo online and prints its URL. Publish again and it updates the same link, so every embed keeps working.

One set of demos, everywhere the product is shown

When the product changes, your agent re-captures the screens and fixes the copy.

  • Product marketing

    A clickable product on the homepage, the launch post and every feature page.

  • Pre-sales

    Send a prospect the part of the product they asked about, before the call.

  • Onboarding

    Walk new users through their first win, step by step.

  • Training

    Turn a how-to into something people click through instead of read.

  • Enablement

    Keep the field's demos matching the product as it ships.

One command to a link, or host it yourself

Two ways to put a demo online. The embed snippets are identical either way — only the origin differs.

Publish

Nothing to deploy, nothing to configure

npx interactive-demo login && npx interactive-demo publish

Uploads the demo’s media and prints its URL and an iframe snippet. Publishing again replaces the same deployment, so every embed picks up the new version. Free to start; see pricing.

Self-host

A folder that runs on any static host

npx interactive-demo build

Writes dist/<slug>/ — index.html, player.js, player.css and your assets. Deploy it anywhere static files are served. Nothing in it phones home.

Put it in front of someone

Send the link, frame the page, or render it inside your own React app.

Link

Send the link

The simplest way to show a demo: give someone its URL. It opens as its own page, and the viewer clicks through the product themselves.

npx interactive-demo publish
→ prints the link and an iframe snippet
The share dialog, Send the link tab
Inline

Frame it in the page

Drop the demo into a landing page, a docs article or a launch post with a plain iframe.

<iframe src="https://your-site.com/demos/onboarding/"
        width="960" height="600" loading="lazy"
        allow="fullscreen" style="border:0; max-width:100%"></iframe>
A demo embedded inline on a product page
Pop-up

Open it from any button

Add embed.js once, then open the demo over your page from any button or link.

<script src="https://your-site.com/demos/embed.js" async></script>
<button onclick="InteractiveDemo.open('https://your-site.com/demos/onboarding/')">
  Try the demo
</button>
A demo opened as a pop-up over a product page
React

Render it in your React app

Skip the built page entirely: the component fetches demo.config.json from the folder and loads the media next to it.

import { Demo } from '@inkly-org/interactive-demo';
import '@inkly-org/interactive-demo/styles.css';

<Demo src="/demos/onboarding/" />
A demo rendered inside a page

Questions

interactive-demo, answered

An open-source tool for agent-native interactive product demos. Each step is a screenshot or a short clip of your real product, with hotspots and captions on top, and the viewer drives it themselves. A demo is plain files in your repo, so your coding agent can record it, write it up, ship it as a link or a folder, and update it when the product changes.

Yes. The code is MIT licensed and lives at github.com/inkly-ai/interactive-demo: the React player, the CLI and the local editor. The "Inkly" name is a trademark and isn't covered by the license.

Node.js 20 or newer, and Google Chrome or Chromium for capture — it's found automatically, or you can pass --browser. ffmpeg on your PATH is only needed for video steps; without it every step is a still.

Two ways. From the terminal, run capture start with your app's URL and click through the product in the Chrome window that opens (or let your agent drive it). Every click becomes a step, with the pointer where you clicked; scroll or type before a click and that step is recorded as a short video instead. Or record in your own browser with the Chrome extension and import the zip.

Either. publish uploads the demo and prints a link — publishing again updates the same link, so embeds keep working. build writes a self-contained folder (index.html, player.js, player.css and your media) that runs on any static host, and nothing in it phones home. The embed snippets are identical either way; only the origin differs.

Send the link, frame the page with an iframe, or add embed.js and open the demo as a pop-up from any button. If your site is React, render it with the <Demo> or <DemoModal> component from @inkly-org/interactive-demo and point it at the demo folder.

Yes, that is what it is built for. The repo ships an agent skill (skills/interactive-demo/SKILL.md) that teaches Claude Code, Codex or another agent the whole loop: scaffold, capture, write the copy, validate and publish. Ask for a demo of a flow and review what comes back.

The tool is free and MIT licensed, and self-hosting a built demo costs whatever your static host costs. Publishing to the hosted app is free too: up to 25 published demos, with the editor, sharing, embeds and viewer analytics included.

A small "Built with Inkly" badge is on by default. Set chrome.branding to false in the demo's config to hide it.