SSE debugging tool — intercepts Server-Sent Events via mitmproxy, routes them through a relay server, and presents a browser UI (or native macOS app) to inspect, pause, edit, drop, inject, and delay individual events in real time.
Mobile/Browser ──WiFi proxy──► mitmproxy :28080
│
│ rewrites SSE requests to /relay?target=<url>
▼
relay server :29000 ◄──► WebSocket ◄──► Browser UI / Desktop App
│
│ upstream SSE fetch
▼
Real SSE Server
- Python 3.12+ with uv
- bun
- Rust (desktop app only)
bun run install:all # install all dependencies (uv + bun)
bun run dev:web # relay server + mitmproxy + Vite dev serverOpen http://localhost:5173 in your browser. On your mobile device, set WiFi proxy to <your-machine-ip>:28080.
bun run dev:desktop # relay server + mitmproxy + Tauri dev
bun run build:desktop # build .app + .dmg| Action | Description |
|---|---|
| Forward | Send the event as-is to the client |
| Edit | Modify the event data, then forward |
| Drop | Discard the event (client never sees it) |
| Inject | Send a synthetic event not from the real stream |
| Forward All | Flush all pending events without reviewing |
Auto-Forward: Toggle in the toolbar to let all events pass through automatically.
config.json controls which URLs mitmproxy intercepts. Editable from the Settings page in the UI.
{
"sse_patterns": ["*/sse*", "*/stream*", "*/events*"],
"relay_host": "127.0.0.1",
"relay_port": 29000
}Patterns use glob syntax. Changes are hot-reloaded on every request.
| Variable | Default | Description |
|---|---|---|
RELAY_PORT |
29000 |
Relay server port |
PROXY_PORT |
28080 |
mitmproxy port |
MOCKS_DIR |
./mocks |
Mock files directory |
