Understand a pull request before you read it.

Witness turns any diff into a narrated one-minute short, a map of what changed, and proof it still works.

Get Witness
PR #2209 of brocoders/nestjs-boilerplate, explained by Witness: email verification for social sign-in, and auth hardened.
  1. 298 lines across 19 files. Where do you start?

    A diff is ordered by file name, not by what matters. Reviews start at line one and run out of attention long before the change that counts.

  2. Witness reads it first.

    It indexes the PR into modules, entry points and call paths, so you review the shape of the change before its lines.

  3. Then points at the line that matters.

    Your Claude Code reads the code and picks the one changed line that is the change. Witness shows the real hunk around it, never a paraphrase.

  4. And explains it in a minute.

    Before and after, how it works, where the change lives. Narrated, captioned word by word, made once for the whole team.

Every PR, scrolled like a feed.

Shorts and animations live with their PR. Up and down through PRs, left and right through each one's videos. The one in view plays as it streams.

Short

Social sign-in needs a verified email

nestjs-boilerplate #2209 · 1 min

How it works

From sign-up to a verified email

nestjs-boilerplate #2209 · 2.5 min

The Reels feed in Witness: a PR's short playing, its animations one swipe away, and the steps of an animation to jump to
In the app

Reels, inside Witness

Press S on any PR.

Proof, not a summary.

A Witness module page: the module's functions, where calls come in, and the modules it calls into, with new calls marked

A map of the change

Modules, ways in and new calls, in reading order. Mark functions reviewed as you go.

Intents you can check

What the PR promises, written as checks and run against the old and the new code. Small bugs get planted in the changed lines to see whether the evidence notices.

# drafted by Claude Code for #2209
social-login-requires-verified-email
social-login-claims-unconfirmed-account
reset-links-single-use
uniform-login-errors
production-refuses-placeholder-secrets
+ 2 more

Ask from your terminal

Your own Claude Code sees what you're looking at and moves Witness for you.

$ witness show AuthService.validateSocialLogin
showing function AuthService.validateSocialLogin()
(src/auth/auth.service.ts) in graph
$ witness now
PR #2209 › Review › module auth › centred on
AuthService.validateSocialLogin() (modified, :99)

Made once. Watched by everyone.

One teammate's Claude Code explains a PR. Your team server keeps it next to the PR. Everyone else streams it the moment they open the PR.

  1. Your Claude Codereads the PR and writes the board, on your subscription
  2. Witnessdraws it and narrates it in your team's voice
  3. Your team serverkeeps every video with its PR and commit
  4. Your teammatesstream it instantly, nobody makes it twice

Runs on your Mac, with your Claude Code.

No API keys
Witness uses the Claude Code you already log in to. Nothing to provision, nothing to leak.
Read-only runs
Claude works on a separate checkout of the PR and writes only its own folder. No push, no web.
Nothing posts for you
A review goes to GitHub only after you have read the full payload and said yes.
Your server, your data
Videos, voice and comments live on a team server you host. The voice key never leaves it.

Your next review starts with a minute of video.

Get Witness

For macOS on Apple silicon. Teams connect at app.witnessdiff.com.