Obtiene el texto del modelo interceptando el stream SSE de api.anthropic.com
/v1/messages con un mitmproxy, en vez de parsear el render de la terminal.
Dirige la TUI interactiva real (NUNCA claude -p) por el proxy con claude_pipe,
y emite el texto exacto token a token como NDJSON.
Compone tee_anthropic_sse_py_cybersecurity (addon mitmproxy). Corta por
message_stop (sin idle ciego): ~9s vs ~15s de parsear la TUI, y texto exacto
sin artefactos. Validado end-to-end contra claude real.
Obtiene la respuesta de claude interceptando el stream SSE del modelo en la red (api.anthropic.com /v1/messages) en vez de parsear el render de la terminal. Dirige la TUI interactiva real (NUNCA claude -p) a traves de un mitmproxy que teea el SSE, y emite el texto exacto del modelo token a token como NDJSON. Mas rapido que parsear la TUI (corta por message_stop, sin idle ciego) y exacto (sin artefactos del render).
cli
claude
mitmproxy
sse
streaming
wire
web-proxy
tee_anthropic_sse_py_cybersecurity
main.go
apps/claude_wire
phosphor
accent
wifi-high
#10b981
id
cmd
timeout_s
build
go build -o claude_wire .
60
id
cmd
expect_stdout_contains
timeout_s
needs_prompt
./claude_wire 2>&1 || true
no prompt
10
claude_wire
Que hace
Devuelve la respuesta de claudeinterceptando el stream del modelo en la red, no parseando
el render de la terminal. Dirige la TUI interactiva real de claude (jamas claude -p) a traves
de un mitmproxy que captura el SSE de POST api.anthropic.com/v1/messages, y emite el texto
exacto del modelo, token a token, como NDJSON.
Es la culminacion de la exploracion: parsear el render (claude_pipe) es heuristico y lento
(warmup + idle ciegos, artefactos del spinner, truncacion por scroll). Interceptar la red da el
texto exacto del modelo, en streaming real, y sabe exactamente cuando termina
(message_stop), eliminando el idle ciego.
Como funciona
mitmdump + tee_anthropic_sse ── captura el SSE de /v1/messages → NDJSON
claude_pipe (PTY, dirige la TUI) ── lanza claude interactivo y teclea el prompt
claude_wire (este runner) ── lee el NDJSON del proxy, emite text_delta + result,
mata todo en cuanto llega message_stop
Arranca mitmdump con el addon tee_anthropic_sse_py_cybersecurity (FN_WIRE_ONLY_TOOLS=1
para aislar la respuesta principal de las llamadas auxiliares de titulo/clasificador).
Dirige la TUI interactiva con claude_pipe por el proxy (HTTPS_PROXY + NODE_EXTRA_CA_CERTS
apuntando a la CA de mitmproxy). El output parseado de claude_pipe se ignora — solo se usa
para lanzar claude y teclear el prompt.
Lee el NDJSON que emite el addon, sigue el primer stream con has_tools, emite cada
text_delta, y al message_stop emite el result y mata mitmdump + claude_pipe.
El texto sale del cable, no de la pantalla.
Prerrequisitos
mitmproxy instalado (mitmdump en el PATH): uv tool install mitmproxy.
La CA de mitmproxy generada y confiada: arrancar mitmdump una vez crea
~/.mitmproxy/mitmproxy-ca-cert.pem. claude la acepta via NODE_EXTRA_CA_CERTS.
El binario claude_pipe compilado (driver de la TUI): apps/claude_pipe/claude_pipe.
Ejemplo
cd apps/claude_wire
go build -o claude_wire .
./claude_wire --prompt "di tres palabras: uno dos tres" --cwd /home/enmanuel/fn_registry
# {"type":"text_delta","text":"T"}# {"type":"text_delta","text":"res palabras: uno dos tres."}# {"type":"result","subtype":"success","result":"Tres palabras: uno dos tres."}
Flags
Flag
Default
Que hace
--prompt
—
Prompt a enviar (o arg posicional al final).
--cwd
~/fn_registry
Directorio donde corre claude (MCP aprobados → sin dialogo de arranque).
--port
8901
Puerto del mitmproxy.
--root
~/fn_registry
Raiz del registry (para localizar el addon por defecto).
Espera de claude_pipe para que cargue la TUI antes de teclear.
--max
120s
Timeout duro.
Comparativa (por que existe)
claude_pipe (parsear TUI)
claude_wire (interceptar red)
Texto
heuristico, artefactos
exacto, byte a byte
Streaming
snapshots ~150ms
token real (content_block_delta)
Fin de respuesta
idle ciego (4s)
message_stop exacto
Latencia medida
~15s
~9s
Robustez
fragil (UI cambia)
protocolo API estable
Cuando usarla
Cuando quieras el texto exacto del modelo desde la TUI interactiva, en streaming real, sin
parsear el render ni pagar el idle ciego.
Como backend de un chat: emite el mismo NDJSON que claude_pipe --stream, mas rapido y exacto.
Gotchas
Requiere mitmproxy + CA confiada (NODE_EXTRA_CA_CERTS). Si claude empezara a hacer TLS
pinning, dejaria de funcionar (hoy no lo hace).
Depende de claude_pipe como driver de la TUI (el PTY). No reimplementa el pilotaje.
Sigue heredando el warmup de claude_pipe (esperar a que la TUI cargue antes de teclear);
ahi esta el grueso de la latencia restante. Una deteccion de "TUI lista" lo reduciria mas.
Una interaccion dispara varias /v1/messages (respuesta + titulo/clasificador en haiku); el
addon filtra por has_tools para seguir solo la principal.
Es trafico de tu propia cuenta y maquina — observabilidad local, no acceso remoto.