Experience your product and talk naturally — “this button does nothing”. Witness welds every word to the causal evidence of that exact second, then hands the package to your AI coding agent.
A human notices “the button fades weirdly when I scroll” in two seconds. Writing that up for an AI agent takes ten minutes of screenshots, element selectors and prompt crafting — and the result still loses the why. Voice is the cheapest annotation channel there is; it just never had a recorder.
This is a real recorded session — speech, marking, the dead click, the save. The Pay button below produces nothing, and that absence is captured as fact.
wit start <dev-url> opens a managed browser. From that moment, three streams run in parallel — zero manual work:
Each spoken fragment becomes a block on a timeline with the causal facts of that moment attached — the “causal burst”. Click a quote:
wit mcp — evidence as an API.Instead of a static dump, the session becomes a stdio MCP server. Point any MCP-capable agent at it and it queries exactly the evidence it needs:
list_saysevents_aroundget_dom_stateget_errorsget_shot / get_bodysession_mdget_asr / set_asrwit config asr). No API key needed; LLM polish is an optional layer, never the pipeline.WIT_NO_BODIES for sensitive apps.You give instructions; your agent runs the commands. Witness is a CLI (wit) that agents drive — it opens a managed browser, records, and hands back a local evidence package: review.html for you, session.md/PROMPT.md/wit mcp for the agent. Node 18+, system Edge/Chrome, no cloud, no keys.
you → "install witness" agent → npm i -g github:wookat/witness ✓ you → "record http://localhost:5173 for me" agent → wit start ✓ managed browser opens you → use the product, talk out loud, mark problems — press ■ you → "fix the issues from that recording" agent → reads session.md → fixes → cites evidence