Grok Build siempre usa streaming. El upstream (OpenCode Zen)
envía chunks no-estándar (inference-cost sin id, cost tras
[DONE]) que rompen el deserializador serde de Rust con
'missing field id'. streamResponse ahora filtra eventos SSE
que no tengan campo id y deja de forwardear después de [DONE].
Refactor from monolithic proxy to multi-backend architecture
(Backend interface: OpenCode Zen + Kilo gateway).
- Add auto rate-limit jailing: models returning HTTP 429 are
hidden from /v1/models immediately and re-probed every 30 min
- Backend interface supports model aliases, custom headers, and
per-backend routing
- Full Anthropic Messages API support with OpenAI format conversion
- 9 free models across two backends with Claude name aliases
Proxy translating OpenAI/Anthropic Messages API to OpenCode Zen's free models.
Pure stdlib Go 1.22, no external dependencies.
- OpenAI Chat Completions (/v1/chat/completions) with streaming
- Anthropic Messages API (/v1/messages) with streaming
- Model aliases for 5 free models
- Auth middleware support
- Session rotation (30min per user key)