narwal · browser extension

Point at it. Say it. Hand it to your agent.

narwal records one browser tab: the page, your voice and what you point at. It writes the session out as text an AI agent, or a colleague, can read in seconds. No video to scrub through. Nothing leaves your browser unless you choose.

Microsoft Edge and Google Chrome 116+ · loads from a folder, not in the stores yet

01 / what it recordsone tab, three tracks

A screen share nobody has to sit through.

Press Start on a tab and talk as you would to a colleague looking over your shoulder. Right-click one thing or right-drag an area to mark it. Press Stop. That is the whole workflow.

saidThese four numbers should line up
00:50.0
Illustrative replay of the sample recording below. Not a real product's UI.
page
What the browser reported.
Navigations, clicks, scrolls, what the pointer dwelled on, selected text, edits. Facts, with times, not a screen video.
voice
What you said, when you said it.
Your narration lines up with the page facts to the tenth of a second. Fix any word by hand; the correction is kept beside what was heard.
marks
What you explicitly pointed at.
Right-click one element or right-drag a box around many. A mark is deliberate, so the reader knows it is not a guess.
02 / what comes outtext, with times

Not a video. A walkthrough your agent can read.

Stop produces one zip. Inside, agent/walkthrough.md is the whole session as a timeline: one line per moment, narration beside the page facts and the marks. An agent reads it the way it reads any file.

dashboard-review.narwal.zip › agent/walkthrough.md
[00:42.1-00:44.8] said="This should collapse" | observed pointer over "Revenue" heading 2.1s | route=/dashboard
[00:45.0-00:47.9] said="and this total is wrong" | marked element "Total: $12,400" span | route=/dashboard
[00:50.0-00:56.0] said="These four numbers should line up" | observed pointer over "North 4,100" cell 1.0s | marked box 320x180 at (40,200) containing 4 cells | route=/dashboard
[01:00.4] | observed navigation to /reports?range=_ (link) | route=/reports?range=_
[01:01.0-01:04.5] said="The export button does nothing" | observed click on "Export" button | route=/reports?range=_
[01:06.0-01:09.0] said="This table needs a total row" | observed selected text "Region totals" | route=/reports?range=_
[01:10.3] | note="Same on mobile" (user-added, not spoken) | route=/reports?range=_

Lines from narwal's own sample bundle. The app and figures are made up; the format is exactly what ships.

inside the zip

  • AGENTS.mdhow to read it
  • agent/walkthrough.mdthe timeline
  • agent/walkthrough.jsonsame, as data
  • transcript/every revision
  • audio/narration.webmyour voice
  • observations.jsonlpage facts
  • documents.jsonpages visited
  • gaps.jsonlwhat was missed
  • rrweb/replay for humans
  • manifest.jsonidentity, privacy

Gaps are written down too. If the microphone dropped or a frame could not be captured, the walkthrough says so instead of guessing.

03 / hand it to your agentfrom "this is wrong" to a fix

Recording in. Ticket out. Fix landed.

Drop the zip on your AI agent, Claude Code, Codex or your own. It reads the walkthrough, files one ticket per thing you pointed at, and gets to work on the fix. Your colleagues can read the same file in a minute.

  1. 00 / record
    You talk and point
    "The export button does nothing." One minute twenty on the dashboard.
  2. 01 / hand over
    One zip, dropped on the agent
    dashboard-review.narwal.zip. No upload, no account, no viewer.
  3. 02 / read
    The agent reads the walkthrough
    Five things said, two marked, one note. It knows which is which, and when.
  4. 03 / ticket
    Tickets spun up
    new#214
    Export button does nothing on /reports
    from narwal 01:01.0–01:04.5 · observed click on "Export"
  5. 04 / fix
    Fix landed
    reports: wire Export to the download routemerged

What your agent does with the walkthrough is up to you and your agent. narwal writes the evidence; it never acts on your behalf.

04 / stays on your computerno network by default

Local by default. Every exception is your choice.

narwal has no server and no account. The recording lives in your browser and the zip goes nowhere until you hand it on.

Nothing is sent
The recording, the marks and the bundle are saved in your browser. No server, no account.
Typed text is masked
Anything you type into a field is recorded as masked, with the edit count, never the value.
Hide any area
Draw an excluded region and that part of the page is left out of the capture entirely.
URL values removed
Query values become _, so a report link never leaks the id it carried.
Transcript, your call
A speech model on this computer transcribes as you talk. Or choose OpenAI Whisper with your own key: pressing Stop sends the audio, nothing else.
Written down, not implied
manifest.json states what was masked, excluded and redacted, so the reader knows what the recording cannot show.

05 / start

Show the problem once.
Let the agent take it from there.

narwal runs in Microsoft Edge and Google Chrome 116 or later. It is not in the stores yet: you load it from a folder in a couple of minutes. Tell us about your team and we will send the build and the install steps.

Request early access info@prosoftip.com · no account, no card