№ 0472GitHub
muse-stack
A config (in Spanish) plus two helper proxies for using Muse Spark 1.2 Contributor from Claude Code and Hermes through routatic/proxy and an OpenCode Go subscription.
# muse-stack
Configuración para usar **Muse Spark 1.2 Contributor** (Meta) desde Claude Code y
Hermes, a través de [routatic/proxy](https://github.com/routatic/proxy) y una
suscripción de OpenCode Go.
No es un fork de routatic: routatic se instala tal cual desde upstream. Aquí solo
está la configuración y los dos proxies auxiliares que hacen falta para que la
cadena encaje.
## Qué necesitas
- Una suscripción de **OpenCode Go** con su clave (`sk-…`). La cuota va por cuenta:
cada persona necesita la suya.
- `routatic-proxy` instalado desde [upstream](https://github.com/routatic/proxy).
- Python 3 y `curl`.
- Opcional: [headroom](https://github.com/) para compresión de contexto, y Hermes.
## Instalación
```bash
git clone https://github.com/Solar2004/muse-stack.git
cd muse-stack
./install.sh
```
El script pide la clave, la valida contra OpenCode antes de tocar nada, hace copia
de seguridad de la config que ya tuvieras, y deja los servicios levantados.
## La cadena
```
Claude Code ──> headroom :8788 ──> cc-model-mask :3460 ──> routatic :3456 ──> OpenCode Go ──> Meta
Hermes ─────────────────────────────────────────────────> routatic :3456
cc-openai-bridge :3461 ──> routatic :3456
```
| Puerto | Proceso | Para qué |
|--------|---------|----------|
| `:3456` | routatic-proxy | Enruta por escenario. **Solo habla Anthropic Messages** (`/v1/messages`) |
| `:3460` | cc-model-mask | Traduce el nombre del modelo y aplica el suelo de `max_tokens` |
| `:3461` | cc-openai-bridge | Traduce OpenAI → Anthropic para herramientas que solo hablan OpenAI |
| `:8788` | headroom | Compresión de contexto (opcional) |
## Tres trampas que cuestan tiempo
### 1. Muse necesita presupuesto para pensar
Muse Spark es un modelo de razonamiento: gasta ~256 tokens razonando **antes** de
emitir la primera letra. Con un `max_tokens` pequeño devuelve una respuesta vacía,
y routatic interpreta ese vacío como error 400 → agota fallbacks → 502.
```
max_tokens=1 → respuesta sin 'choices'
max_tokens=16 → content=None, 16 tokens gastados razonando
max_tokens=512 → "¡Hola! 👋" (255 tokens usados)
```
Claude Code manda una petición de sondeo con `max_tokens=1` antes de la real, así
que esto se manifiesta como `API error · Retrying` nada más escribir. Por eso
`cc-model-mask.py` sube a `MIN_MAX_TOKENS` (1024) cualquier presupuesto menor.
Cualqui


ChatForm
Tgmlabs