Skip to content

docs: add real terminal screenshots for the scanner and the shield - #36

Merged
higagan merged 1 commit into
mainfrom
docs/readme-screenshots
Jul 30, 2026
Merged

docs: add real terminal screenshots for the scanner and the shield#36
higagan merged 1 commit into
mainfrom
docs/readme-screenshots

Conversation

@higagan

@higagan higagan commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Adds two premium terminal-window screenshots to the README, plus the demo behind one of them.

Images

scan_demo.png β€” in the Red-Team Scanner section, above the text output block. A live modelfuzz scan of openai/gpt-4o-mini through OpenRouter: 3/3 seeds break through on the first probe.

shield_demo.png β€” in The Demo section. defense_demo.py running a URLAllowList that blocks an http_post to http://evil.com before the tool body executes.

These are real, not mockups

Given how much this project has cared about not shipping fabricated terminal output, worth being explicit: both images are faithful renders of genuine runs. The commands were executed for real (the scan actually hit gpt-4o-mini and cost ~$0.01), captured under a PTY to preserve ANSI colors, and rendered to PNG via headless Chrome. What each image shows is exactly what the command printed β€” I didn't hand-edit a single line.

Files

  • defense_demo.py β€” new, referenced from the README, added to the sdist allowlist next to demo.py.
  • Image links use absolute raw.githubusercontent.com/.../main/... URLs. Relative paths (scan_demo.png) render on GitHub but show a broken image on PyPI, since the README is the PyPI long-description β€” the same class of issue already tracked for the CONTRIBUTING link. The absolute URLs resolve once this merges to main.

One caveat

The raw.githubusercontent.com/.../main/... URLs 404 until this is merged, so the images won't preview inside this PR's own diff. They'll resolve the moment it lands on main. If you'd rather see them render in the PR first, I can switch to relative paths for review and flip them to absolute before merge β€” say the word.

Note

defense_demo.py silences the modelfuzz logger's default stderr output with a NullHandler, so the demo's stdout stays clean for the screenshot (the block is still shown prominently on stdout). A real app would route that audit log to its sink; the comment in the file says so.

Two premium terminal-window images rendered from actual captured output:

- scan_demo.png β€” a live `modelfuzz scan` of openai/gpt-4o-mini through
  OpenRouter, all three seeds breaking through on the first probe (3/3).
- shield_demo.png β€” defense_demo.py, a URLAllowList blocking an http_post to
  http://evil.com before the tool body runs.

Both are faithful renders of genuine runs, not hand-drawn mockups: the output
was captured under a PTY (to preserve colors) and rendered to PNG, so what the
image shows is exactly what the commands print.

Adds defense_demo.py (referenced from the README, and included in the sdist
alongside demo.py). Image URLs are absolute raw.githubusercontent links so they
render on the PyPI project page too, not only on GitHub β€” a relative path would
show a broken image on PyPI, the same issue already tracked for the CONTRIBUTING
link.
@higagan
higagan merged commit 6d3dc71 into main Jul 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant