Leakdown

Run it

A pass or fail for every deploy, with exit codes CI can read.

--goal gives every prospect the same goal and turns the run into a pass or fail. The exit code tells CI whether your site stopped someone or the run itself broke.

Run a goal test

One flag turns any run into a test.

zsh
leakdown your-site.com --goal "log in and get an API key" --steps 15 --yes --headless  3 prospect(s) queued, one at a time: cold, warm, hot | claude, headless
  [------------------------] 0/3 agents finished
  ...
  goal FAIL: 2/3 session(s) completed "log in and get an API key"

That run exits 1: one prospect did not get the key. --steps (1 to 50) caps each session. Everything else stays the same: same personas, same reports, same recordings.

Exit codes

The exit code separates a broken site from a broken run.

CodeMeaningWhat to do
0Every session completed the goal.Ship.
1A session walked out or hit a guardrail. The site failed someone.Open the report.
2Nothing failed, but a session could not run: unreachable URL, model down, setup error.Check the runner, not the site.

Check values with --expect

Add --expect "label=value", as many times as you need. A completion only counts when the page shows every value. The check is a plain text match that ignores whitespace, and the report's Assertions section quotes what it found.

zsh
leakdown your-site.com --goal "apply SAVE20" --expect "total=$96.00" --yes
report.md
Assertions
  expected total=$96.00, found 'Total: $120.00'

In a CI job

With no terminal attached nothing is ever asked, so pass the brain, model and effort explicitly to keep runs reproducible.

.github/workflows/signup.yml
name: signup
on: [deployment_status]
jobs:
  goal:
    if: github.event.deployment_status.state == 'success'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { repository: 0xSarnavo/leakdown-cli }
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci && npm run build && npx playwright install --with-deps chromium
      # log in your AI CLI here (see the note below)
      - run: >
          node dist/cli.js ${{ github.event.deployment_status.target_url }}
          --goal "sign up and get an API key" --steps 15
          --brain claude --model sonnet --yes --headless

Tips

  • Point it at a preview or staging deploy, never production checkout.
  • Treat exit 2 as a retry, not a failed build.
  • Keep runs/ as a build artifact so the video is there when a check fails.
Ask the docsalpha
Open full page ↗

This is alpha. It does not write answers — it finds the paragraph of the docs that answers you and shows it word for word, or tells you the docs do not cover it. It can still pick the wrong paragraph, so check the page it links to before you rely on it.

Ask a question about the Leakdown CLI.

Answers are copied from the docs, never written. Type /help for commands.