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 withinkly capture nav or inkly capture-html nav.
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)
Useinkly 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)
Useinkly 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:
inkly add --from from inside that hub:
How captures become assets
Captured media is stored as managed assets. Each binary lands inassets.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.
