Seatbelt logoSeatbeltGet Seatbelt

Docs

Everything you need from install to your first green run, and beyond.

Install

Add Seatbelt to your project. Requires Node 18+.

npm
$ npm install getseatbelt   # Add Seatbelt to your project

The package is getseatbelt; the command is seatbelt. Works with pnpm, yarn, and bun too.

First run

$ npx seatbelt init   # Set up Seatbelt and map your app’s critical flows

Run this once in your repo. Seatbelt writes its config, maps your critical flows, and at the end of setup offers to start the first browser replay for you — so you don’t have to remember a second command. You never paste a token.

Running Seatbelt

$ npx seatbelt run   # Replay your QA flows in a visible browser

Use this whenever AI changed your app, or any time you want confidence before you commit or merge. Seatbelt replays your current flow map in a visible browser and opens the report with a merge verdict when it finishes. If a step needs your Seatbelt account, login is handled automatically (see Logging in).

Logging in

Login is handled automatically. When a command needs your Seatbelt account, the CLI opens your browser and connects the account for you.

You can also manage it manually:

$ seatbelt login   # Connect your account in the browser$ seatbelt status   # Show your plan and connection$ seatbelt logout   # Sign out on this machine

Seatbelt stores access in your user config directory, not your repo.

Clean test user (reset)

So each run starts from a known state, Seatbelt uses a reset command that makes a fresh test user. During seatbelt init, Seatbelt can offer this setup. If you say yes, it generates a coding-agent prompt that adds a safe reset script to your app and automatically wires it into your Seatbelt config.

If you skip it during init, run it later:

$ seatbelt setup-reset   # Generate a reset-hook prompt for your coding agent

Paste the prompt into Claude, Cursor, or Codex. After that, every run starts from a clean test user.

Flow config

Flows live as simple YAML in qa-flows/. Seatbelt generates and maintains them, and you can edit them by hand. Each flow lists steps (goto, fill, click, expect…) for one critical path — login, checkout, billing, entitlements, onboarding, uploads, or whatever matters in your app. Seatbelt keeps the map in sync as your app changes.

Reports

Every run writes a self-contained report — video, screenshots, trace, console, and network — with a verdict (MERGE, MERGE WITH CAUTION, or DO NOT MERGE) and an LLM fix prompt for your coding agent. Reopen the latest report any time:

$ seatbelt report   # Reopen the latest report

Seatbelt runs against your current local code. Pull or rebase first if you want the verdict to reflect the latest changes on your main branch.

Account & billing

See your connection, plan, and access, or manage your subscription (cancel, update payment, view invoices) in the Stripe portal:

$ seatbelt status   # Your connection, plan, and access$ seatbelt billing   # Open the Stripe billing portal

Advanced: CI tokens

For CI or scripted runs where a browser login isn’t possible, set an API token in the environment. It takes precedence over a browser login. This is a fallback — normal local use never needs it.

$ SEATBELT_API_TOKEN=sk_seatbelt_... seatbelt run   # CI: authenticate via env, no browser login

Point the CLI at a non-production backend with SEATBELT_WEB_URL.

Privacy

Browser QA runs on your machine, against your local app. When Seatbelt uses AI to generate or maintain flows, it sends a sanitized summary of your app — framework, scripts, routes, redacted code snippets, and environment variable names only. It never sends your .env secret values. You can keep everything offline with --local-only — that turns off AI flow generation and refresh, so Seatbelt won’t keep your flows up to date automatically.