ed78bdb81a
Backend Go (web/server.go) con SSE que por cada mensaje lanza claude_wire y reenvia su NDJSON (text_delta + result) al navegador. Frontend vanilla (web/index.html). Mensajes serializados (mutex: claude_wire usa puerto mitmproxy fijo). Validado end-to-end: la respuesta llega token a token del SSE real (O, K -> OK), sin parsear el render. ~9s por mensaje vs ~15s del chat de claude_pipe. Puerto 8100.
claude_wire — chat web (playground)
Chat en el navegador sobre claude_wire: el texto de la respuesta se obtiene
interceptando el SSE del modelo en la red (no parseando el render de la terminal).
Backend Go con SSE (web/server.go) que, por cada mensaje, lanza claude_wire
y reenvía su NDJSON (text_delta + result) al navegador. Frontend vanilla
(web/index.html), sin frameworks ni node_modules. No se indexa (playground del
padre).
Prerrequisitos
mitmproxyinstalado (mitmdumpen el PATH) + CA generada (~/.mitmproxy/mitmproxy-ca-cert.pem).- Binarios compilados:
apps/claude_pipe/claude_pipe(driver de la TUI).apps/claude_wire/claude_wire(runner que intercepta el SSE).
cd apps/claude_pipe && CGO_ENABLED=1 go build -tags fts5 -o claude_pipe .
cd ../claude_wire && go build -o claude_wire .
Lanzar
cd apps/claude_wire/playground
go run ./web # http://localhost:8100
# o con flags:
go run ./web --port 8100 --root /home/enmanuel/fn_registry --wire ../claude_wire
Abre http://localhost:8100 y escribe. Cada mensaje dirige la TUI interactiva de
claude por un mitmproxy y lee la respuesta del SSE de api.anthropic.com, token a
token, exacta. Corta en message_stop (sin idle ciego): ~9s por respuesta.
vs el chat de claude_pipe
claude_pipe chat (:8099) |
claude_wire chat (:8100) |
|
|---|---|---|
| Texto | parseado del render (heurístico) | exacto del SSE de la red |
| Streaming | snapshots del grid | token real |
| Latencia | ~15s | ~9s |
Notas
- Mensajes serializados (un
claude_wirea la vez: usa un puerto mitmproxy fijo). - Sin memoria entre turnos (cada mensaje es una sesión claude one-shot).