AI-assisted CLI

Describe a demo. The CLI records it.

Tell an AI agent the flow you want to show. It inspects the page, picks stable selectors, and writes your config. Then the open-source Stepshots CLI drives headless Chrome and captures a screenshot for every step — no manual scripting.

Open source (MIT) — free for unlimited local recording
macOS & Linux — needs Chrome or Chromium
~/my-app
$ stepshots record -t signup-flow
Launching headless Chrome…
  • Get startedscreenshot
  • Enter emailscreenshot
  • Submitscreenshot
  • Dashboardcapturing…
→ output/signup-flow.stepshot · 4 steps
A demo recorder for your terminal

Your demo is a config file the CLI can replay.

Describe the flow once and let an AI agent write the steps, or author them by hand. Either way you end up with a small JSON file that the CLI turns into a screenshot-backed demo — repeatable, reviewable, and version-controlled.

AI writes the config

Describe the flow in plain language to Claude Code or Codex with the Stepshots skill. The agent inspects the page, picks stable selectors, and produces stepshots.config.json for you.

Headless capture

The CLI drives headless Chrome over the DevTools Protocol, runs each step, and captures a full-page screenshot — so the demo shows exactly what a user would see.

Config as code

Your demo lives in a JSON file you can diff, review in pull requests, and keep next to the product it documents. No opaque binary recording to maintain.

Re-run when things change

When the UI moves on, re-run the same config to refresh every screenshot at once. Keep demos current without clicking through the flow by hand again.

Preview before you record

stepshots preview opens the flow in a visible browser so you can watch each step run and catch selector issues before committing a recording.

Direct upload

Set an API token once, then stepshots upload pushes the .stepshot bundle straight to your workspace — or replace an existing demo in place with --demo-id.

Scriptable

It's a single binary driven by flags and environment variables, so it drops cleanly into shell scripts and CI jobs when you want demos to refresh themselves.

One-command install

Grab a prebuilt binary for macOS (Apple Silicon) and Linux (x86_64, aarch64) with the install script, or cargo install stepshots-cli on any platform with Rust.

Open source

The CLI is MIT-licensed and free. Record unlimited demos locally; pay for hosted demos and analytics only when you want to share and track them.

Describe, record, ship

From a sentence to a shareable demo.

The CLI handles capture from start to finish. Once you upload, the Stepshots editor takes it the rest of the way.

Describe

Say what to show.

Tell an AI agent the flow — "sign up, create a project, invite a teammate." It explores the page, chooses stable selectors, and writes the config. Or write the steps yourself; it's just JSON.

Record

Capture it headlessly.

stepshots record launches headless Chrome, runs each step, and grabs a full-page screenshot. Preview first in a visible browser to confirm every selector resolves.

Ship

Upload and polish.

Push the bundle to your workspace with stepshots upload, then open it in the editor to add callouts, blur sensitive UI, and publish a viewer link for your team or customers.

CLI or extension

Script it, or click through it. Same polished result.

The CLI is the best fit for stable, predictable flows — docs, marketing pages, and controlled product demos you want to keep current as the code evolves. Define it once, keep it in your repo, and re-run it whenever the product changes.

The browser extension is its counterpart: open the side panel and click through a real walkthrough by hand — ideal for exploratory flows or anything easier to show than to describe. Different entry points, but both end up as the same editable, shareable demo in your workspace.

Lives in your repo

The demo is a JSON config you commit alongside the code it documents. Review it in pull requests and track changes like any other source file.

Repeatable and automatable

Re-run the same config to regenerate every screenshot, or wire it into a script or CI job so demos refresh themselves when the product ships.

Built for AI agents

Plain-language descriptions become working configs through the Stepshots skill, so an agent can draft and update demos while you stay in control of the result.

Lands in the same place

Uploads to the same workspace as extension recordings and feeds the same editor and analytics. The CLI is just one more way in.

Get started

Three steps to your first recorded demo.

$curl -sSL https://raw.githubusercontent.com/hauju/stepshots/main/install.sh | sh
01

Install the CLI

Run the install script above for a prebuilt binary on macOS (Apple Silicon) and Linux, or cargo install stepshots-cli on any platform with Rust. You'll need Chrome or Chromium installed.

02

Create your config

Run stepshots init for a sample config, or describe the flow to an AI agent with the Stepshots skill and let it write stepshots.config.json for you. Tweak anything you want.

03

Record and upload

Preview the flow, run stepshots record to capture it, then stepshots upload to push it to your workspace and open the new demo in the editor.

FAQ

Common questions about the CLI

Is the Stepshots CLI free?

Yes. The CLI is open source under the MIT license and free to use. You can record unlimited demos locally; you only pay when you want to host, share, and track them on Stepshots.

How do I install it?

Run the install script (curl -sSL https://raw.githubusercontent.com/hauju/stepshots/main/install.sh | sh) for a prebuilt binary on macOS Apple Silicon and Linux x86_64/aarch64, or run cargo install stepshots-cli on any platform with a Rust toolchain. The CLI needs Chrome or Chromium installed.

What does "AI-assisted" actually mean?

Instead of hand-writing steps, you describe the flow in plain language to an AI coding agent — Claude Code or Codex — with the Stepshots skill installed. The agent inspects the page, picks stable selectors, and writes stepshots.config.json. You review it, then the CLI does the recording. No manual scripting from scratch.

Do I have to write JSON by hand?

No. stepshots init gives you a working sample config, and the AI skill can generate one from a description. The config is just JSON, so you can always open it and edit steps, selectors, or callouts directly.

How does the CLI record a demo?

It launches headless Chrome via the Chrome DevTools Protocol, sets the viewport from your config, navigates to the start URL, and for each step runs the action (click, type, navigate, wait, …) and captures a full-page screenshot. The screenshots and a manifest are bundled into a .stepshot file.

Should I use the CLI or the browser extension?

Use the CLI for stable, predictable flows you want under version control and able to re-run — docs, marketing pages, and controlled product demos. Use the extension when you'd rather click through a real walkthrough by hand, including exploratory flows and anything behind a login. Both produce the same editable demo.

Can I run it in CI?

Yes. It's a single binary driven by flags and environment variables (STEPSHOTS_TOKEN, STEPSHOTS_SERVER), so you can drop stepshots record and stepshots upload into a script or CI job to keep demos current as the product changes.

Which platforms are supported?

Prebuilt binaries are available for macOS (Apple Silicon) and Linux (x86_64 and aarch64). On any other platform with Rust installed, cargo install stepshots-cli builds it from source. Chrome or Chromium must be installed in all cases.

How does upload work?

Set an API token via the STEPSHOTS_TOKEN environment variable (or --token), then run stepshots upload output/my-demo.stepshot. Pass --demo-id to replace an existing demo in place, or --server to point at a self-hosted instance.

Get the CLI

Record your next demo from the terminal.

Open source and free for unlimited local recording. Describe a flow, let the CLI capture it, and publish a polished demo in minutes.