ai exports
Tap. Paste.
Fixed.
Most debugging time isn't finding the bug — it's transcribing it. Sharingan's exports turn "can you describe what happened?" into a single structured paste that an AI agent (or a teammate) can act on immediately.
The workflow
Debugging with a user, a QA engineer, or your own device in hand:
- Open Sharingan (capture notification, debug drawer, or shake).
- Optionally open the failing event — the share sheet works from the list or the detail view.
- Share → Copy for AI agent.
- Paste into Claude, your agent harness, or the bug ticket.
That's the whole loop. The paste contains everything the agent needs to reason about the failure — no screenshots of JSON, no "what was the status code?" round trips.
What the agent receives
Structured Markdown with stable field labels, the body fenced and typed:
## HTTP 500 — GET /v1/streams/cam-12
host: api.iot-fleet.dev
duration: 10 214 ms (TTFB 10 180 · download 34)
request:
Authorization: ••••
Accept: application/json
response body:
```json
{ "error": "upstream_timeout",
"stream": "cam-12", "retry_after": 30 }
```
Why this beats a HAR file or a screenshot:
- Fenced, typed bodies —
```jsonblocks parse deterministically; models don't have to guess where the payload starts. - Stable labels —
host,duration,requestare the same in every export, so agent prompts and scripts can rely on them. - Whole-session export — share the full capture and the agent sees the 401 → refresh → retry → 500 sequence in order, across protocols.
Export API — every formatter is public
The share sheet has no private magic. Scripts, tests and agent harnesses can produce byte-identical output:
| Function | Produces |
|---|---|
SharinganExport.agentMarkdown(event) | One event as structured Markdown (the "Copy for AI agent" payload) |
SharinganExport.agentMarkdown(events) | Whole session with a counts header |
SharinganExport.curl(httpEvent) | Reproducible curl command — redactions stay masked |
SharinganExport.json(event) | Machine-readable single event |
SharinganExport.sessionJson(events) | Full session with tool metadata |
SharinganExport.summary(events) | Human digest, one line per event |
val report = SharinganExport.agentMarkdown(Sharingan.events.value)
bugTracker.attach("network-session.md", report)
AGENTS.md & llms.txt — for the agent's side
The repository ships a terse, complete API reference designed for machine
consumption: AGENTS.md,
mirrored at llms.txt. Point your coding agent at it and it knows the full
capture, control and export surface without reading source.
Privacy guarantees
- Redaction precedes storage. Header masking happens at capture time — exports can't leak what the buffer never held, and the curl export keeps masks in place.
- Memory only. The ring buffer (default 300 events) lives in process memory. Nothing touches disk; process death clears everything.
- Release builds carry nothing. The no-op artifact has no capture path, no UI, no notification — see release safety.