Exhibit is a Chrome DevTools panel that records browser-visible network requests, explains what each one did in plain language, and lets you inspect the sanitized evidence. Everything stays on the machine: the extension has no backend, sends no telemetry, and declares no required host permissions. Optional access is requested for the inspected page’s origin only when interaction grouping starts. Chrome grants that origin access to the extension, not just one tab, and keeps the grant until the user revokes it or uninstalls the extension; Exhibit uses it only for the active inspected tab.
Install dependencies and build:
pnpm install
pnpm build
chrome://extensions and enable Developer mode..output/chrome-mv3.Chrome 120 or newer is required. Exhibit was built and manually checked against
Chrome 150 on macOS; 120 is the minimum declared from the platform features the
code uses, not a tested matrix. Chrome pages (chrome://, edge://, about:)
cannot be inspected; the panel says so instead of showing an empty ledger.
Recording also asks for interaction access to the inspected page’s origin. If Chrome declines, the panel keeps recording network evidence and says that interaction grouping is unavailable. Chrome’s grant is origin-wide and persistent, while Exhibit’s active collector remains scoped to the inspected tab and recording lease.
Select a request to open the detail workspace. It has two views:
Explain answers “what happened”:
Inspect shows the developer evidence in tabs: Overview, Request, Response, Timing, Initiator, and Evidence. Bodies render as Structured, Text, or Raw protocol (for React Flight payloads). Large bodies render only after their section is opened.
chrome.storage.session, which is browser-session
memory. It survives closing and reopening the panel, and is discarded when the
browser session ends. There is no setting to change this.Clear does not revoke an optional origin permission. Revoke it through Chrome’s extension permissions/site-access controls when it is no longer needed.
The command-bar Settings dialog adds custom sensitive field names. Mandatory authorization, cookie, credential-name, and token-pattern protection cannot be disabled. Stop and Clear before changing custom names; the setting then applies to later captures and persists locally. Theme choice also persists locally.
Recovered sessions are re-redacted, their request identifiers are reissued, and their stored analysis is discarded and recomputed rather than trusted.
| Context | Keys |
|---|---|
| Request ledger rows | ↑ ↓ Home End to move, Enter or Space to open |
| Tab lists (Explain/Inspect, evidence tabs, body modes) | ← → ↑ ↓ Home End |
| Column separators | ← → (8 px), Shift + ← → (32 px), Home, End |
| Dialogs and the filters drawer | Tab cycles inside, Esc closes, focus returns to the trigger |