Skip to main content
Inkly turns a product session into a demo by capturing what a browser shows. The CLI opens Chrome, gives an agent a navigation harness, records each committed step, and writes a demo folder. There are two capture commands. They share the same start / stop / cancel surface and differ in what each step records.
Both commands print JSON for every subcommand. Neither command plans the demo story for you. An external agent drives the page through inkly capture nav.

How a capture session works

Each command exposes the same session lifecycle:
  • start — launch Chrome, open --url, and arm recording. Returns immediately with a session id.
  • status — inspect a running session and see recorded steps.
  • nav <verb> — drive the captured browser from an agent.
  • undo — drop the last recorded step before you stop.
  • stop — finish the session, build the demo, and write it to --out.
  • cancel — abandon the session and clean up.
  • profiles — list the persistent Chrome profiles the CLI knows about.
  • ask-user-to-log-in — open a headed login flow for a persistent profile.
start returns right away while recording continues in the background until you stop.

Agent navigation

Agents drive the browser with inkly capture nav or inkly capture-html nav.
Use nav snapshot first. It returns an accessibility tree with stable refs like @0-5, which agents can use for clicks, fills, selections, uploads, and assertions. Common verbs include snapshot, refs, click, fill, type, press, select, upload, get, is, wait, back, forward, reload, scroll, and mouse.

inkly capture (screenshots and video)

Use inkly capture when you want to show exactly what the page renders. Still steps become screenshots. Scrolls and other motion become short webm clips with poster frames. Click zoom and pan are applied to screenshot steps by default.

Key flags

Inkly prefers real installed Google Chrome over Chrome for Testing, because bot-gated sites (Cloudflare, SSO providers) pass headed real Chrome but block the automation build. For an interactive login you need to watch, run the first capture with --headed.

inkly capture-html (self-contained HTML)

Use inkly capture-html when text crispness and layout matter. Each step is a self-contained HTML snapshot with the markup, styles, inlined assets, and scroll position needed to replay that screen. Because it is real HTML, it stays sharp at any zoom.
inkly capture-html accepts every common capture flag, plus one HTML-specific flag:
inkly capture is for screenshot and video steps. inkly capture-html is for HTML snapshots. Keep the two capture formats separate and choose the one you want before starting the session.

What a capture produces

stop --out <dir> writes a .zip and unpacks a demo folder beside it unless you pass --no-unpack. The folder is a standard Inkly demo:
You can preview a bare exported demo folder directly:
To add it to a hub, run inkly add --from from inside that hub:

How captures become assets

Captured media is stored as managed assets. Each binary lands in assets.json with a stable id, content type, and size. Inside demo.config.json, steps reference those entries with the asset:<id> URI scheme, such as asset:cap-001 for a screenshot. Video steps can also reference a poster asset. The runtime resolves each asset:<id> through assets.json. When you preview a hub locally, inkly dev serves the captured files from your machine. inkly sync is optional and helps keep large captured assets out of GitHub. inkly snapshot can publish one demo as a standalone link. See Publish a demo. For the manifest shape and the resolution rules, see Assets and Demo config.