# Estado de migración EQUIPITELLO → Servidor IA `.16`

> Corte verificado: **8–9 de agosto de 2026**.  
> Hosts: EQUIPITELLO `100.78.198.98` · Lab IA `192.168.1.16` / Tailscale `100.69.11.89`.  
> Codex Suite: Control → **Lab IA** (`GET /api/codex/lab/status`) observa el fabric sin migrar el bridge.

## 1. Veredicto ejecutivo

**La migración NO está completa.** Está **parcial y coherente con el diseño**:

- Inferencia Ollama pesada, Supervisor multiagent y Qdrant **sí viven en `.16`** (puertos comprobados).
- Bridge `:8095`, XAMPP/htdocs, FCC `:8082`, IDEs y systrays **deben quedarse en EQUIPITELLO**.
- FCC ya apunta `OLLAMA_BASE_URL` a `.16`, pero **el proceso FCC sigue en EQUIPITELLO**.
- Codex Suite por defecto usa aún `freemodel`/`gpt-5.6-sol`, no el default FCC.

No se ha movido a ciegas el bridge ni Docker a EQUIPITELLO (política documentada: sin Docker en el PC de desarrollo).

---

## 2. Pruebas de red ejecutadas (hechos)

| Destino | Puerto | Resultado |
|---|---|---|
| `192.168.1.16` | 11434 (Ollama) | **Abierto** |
| `192.168.1.16` | 8787 (Supervisor) | **Abierto** · health `ok`, RAG `ready`, provider `ollama` |
| `192.168.1.16` | 6333 (Qdrant típico) | **Abierto** |
| `192.168.1.16` | 8090 | **Abierto** |
| `192.168.1.16` | 3030 (Baileys) | **Cerrado** en este corte |
| `100.69.11.89` | 8787 | **Abierto** (Tailscale) |
| `127.0.0.1` | 8082 (FCC admin) | **200** |
| `127.0.0.1` | 8095 (Bridge) | **healthy** |

Ollama en `.16` reportó modelos (muestra): `qwen2.5:3b`, `llava:7b`, `nomic-embed-text`, `qwen2.5-coder:7b`, `qwen2.5:7b`.

---

## 3. Matriz: qué está dónde

| Carga | Ubicación actual | ¿Correcto? | Notas |
|---|---|---|---|
| Cursor / VS Code / Serena | EQUIPITELLO | Sí | UI + disco local |
| Bridge Codex Suite `:8095` | EQUIPITELLO | Sí | Lee htdocs + `.codex` + `.fcc` |
| FCC proxy `:8082` + `.fcc/.env` | EQUIPITELLO | Sí (proxy local) | Catálogo ~775 KB; `MODEL=nvidia_nim/...` |
| Ollama inferencia | **`.16`** | Sí | FCC `OLLAMA_BASE_URL=http://192.168.1.16:11434` |
| LM Studio | EQUIPITELLO `localhost:1234` | Local opcional | No migrar UI |
| Supervisor multiagent `:8787` | **`.16`** | Sí | Health OK |
| Qdrant / RAG | **`.16`** | Sí | Puerto 6333 abierto; supervisor rag ready |
| XAMPP htdocs / lab :9080 | EQUIPITELLO | Sí | Desarrollo |
| CaptaJaus / ALimpiezas OCR | EQUIPITELLO (parcial) | Sí negocio local | OCR/servicios pueden coexistir |
| Evolution / Baileys WhatsApp | `.16` esperado | **3030 cerrado ahora** | Revisar compose en servidor |
| Codex App Server + sessions | EQUIPITELLO `.codex` | Sí | No mover sesiones a `.16` |
| Proveedor Codex activo | EQUIPITELLO `config.toml` | — | `freemodel` / `gpt-5.6-sol` |

---

## 4. FCC (`.fcc`) — qué es y qué no es

Ruta: `C:\Users\Paterna\.fcc\`

| Archivo | Rol |
|---|---|
| `.env` | Claves de proveedores, proxies, `HOST/PORT=0.0.0.0:8082`, `OLLAMA_BASE_URL`, `MODEL` default FCC |
| `codex-model-catalog.json` | Metadatos de slugs para el router de Codex Suite |
| `logs/` | Logs del proxy |

Codex Suite (`lib/codex-model-router.js`) lee:

1. Salud/admin de `http://127.0.0.1:8082` (`/health`, `/admin/api/models`, …).  
2. Catálogo local JSON.  
3. Credencial proxy desde `ANTHROPIC_AUTH_TOKEN` del `.env` (mapeada a `FCC_PROXY_TOKEN` en proceso; **nunca al navegador**).

Admin UI: `http://127.0.0.1:8082/admin` (verificado HTTP 200).

**Migrar FCC entero a `.16`:** posible a medio plazo, pero implica:

- proceso + `.env` + secretos en el servidor,
- abrir `:8082` solo por Tailscale,
- cambiar `fcc_local.base_url` en Codex a `http://100.69.11.89:8082/v1`,
- y decidir si EQUIPITELLO mantiene un FCC local de fallback.

**No hecho en este corte** (requiere despliegue operador en `.16` + rotación de secretos).

---

## 5. Matriz de las 47 apps del launcher

Fuente canónica: [APPS-MIGRATION-MATRIX-2026-08-08.md](APPS-MIGRATION-MATRIX-2026-08-08.md)  
Regenerar: `node tools/classify-apps-migration.mjs`

| Decisión | # | Qué implica |
|---|---:|---|
| **stay** | 21 | No migrar (Bridge, XAMPP negocio, Royal Broker, System Manager…) |
| **already_remote** | 16 | Ya son destinos lab IA (Ollama, Supervisor, Qdrant, n8n, Baileys *slot*, …) |
| **migrate_candidate** | 1 | **ALimpiezas IA `:8090`** — única candidata clara a runtime Docker en `.16` |
| **hybrid** | 8 | CaptaJaus×3, Chatbot IA, ALimpiezas Agente, xzonas lab/HACS — front/local + IA `.16` |
| **unknown** | 1 | Equipitello IDE local `:4180` |

**CaptaJaus no se “migra entero”:** dashboard/BD en EQUIPITELLO; workers/RAG → supervisor `.16`.

**Fuera del launcher pero migrable:** FCC `:8082` (plan B abajo).

### Ya migrado o correctamente remoto

- Ollama → `.16` (FCC ya lo usa).  
- Supervisor + RAG → `.16`.  
- Tailscale mesh operativa.

### Debe quedarse en EQUIPITELLO

- Bridge `:8095`, Hub, Codex Suite PWA.  
- IDEs y transcripts.  
- XAMPP / proyectos htdocs en desarrollo.  
- Systrays / AnyDesk.  
- CaptaJaus Node `:3000` (app de negocio).  
- FCC local mientras no exista despliegue endurecido en `.16`.

### Pendiente (oleadas)

1. Watchdog del bridge lanzado **desde** `.16` (cron health a `100.78.198.98:8095`).  
2. Mirror F6 htdocs ejecutado en `.16` (si SMB/ZIP listo).  
3. **(A)** Evolution `:8080` / Baileys `:3030` — timeout desde EQUIPITELLO el 8 ago; hace falta RDP + `docker compose` en `.16` (`tools/deploy-evolution-server16.ps1`).  
4. Ingest RAG de chats bridge → supervisor (pipeline).  
5. **(B)** FCC remoto en `.16` (plan concreto §5.1).  
6. Contenerizar **ALimpiezas IA** si se confirma independencia de FS XAMPP.

Referencias previas:  
`docs/AUDITORIA_EQUIPITELLO_VS_SERVER_16.md`,  
`docs/_organizado/01-equipitello-optimizacion/TAREAS_PROGRAMADAS_MIGRACION_IA.md`,  
`docs/_organizado/02-bridge-movil/EQUIPITELLO-LAB-IA.md`.

### 5.1 Plan B · FCC remoto en `.16` (sin romper local)

| Paso | Acción | Estado |
|---|---|---|
| B1 | Clonar runtime FCC + `.env` (secretos rotados) en `.16` | No ejecutado |
| B2 | Bind `0.0.0.0:8082` solo vía Tailscale / firewall Windows | No ejecutado |
| B3 | Health: `http://100.69.11.89:8082/health` y `/admin` | Pendiente B1 |
| B4 | En EQUIPITELLO: apuntar `fcc_local.base_url` a Tailscale **o** mantener FCC local como fallback | Decisión operador |
| B5 | No borrar FCC local hasta smoke Control → Modelos OK contra remoto | — |
| B6 | Suite: `FCC_BASE_URL` (router/evals/Providers8082) hacia el host remoto; smoke motor Providers8082 | Preparado en código (default local) |

Riesgo: alto (API keys NVIDIA/OpenAI en servidor). No automatizar sin RDP y backup de `.fcc/.env`.

### 5.2 Plan A · Evolution / Baileys (corte 8 ago noche)

| Check | Resultado |
|---|---|
| `tools/deploy-evolution-server16.ps1` → manager `:8080` | **Timeout** (no accesible desde EQUIPITELLO) |
| Baileys `:3030` | **Cerrado** (corte anterior) |
| Acción requerida | RDP a `.16` → `docker compose -f docker-compose.evolution.yml up -d` → QR en `/manager` |

---

## 6. Acciones recomendadas (orden)

| # | Acción | Quién | Riesgo |
|---|---|---|---|
| 1 | Usar Control → Modelos sabiendo la diferencia freemodel vs FCC | Operador | Bajo |
| 2 | RDP `.16`: levantar Evolution/Baileys (A) | Operador RDP | Medio |
| 3 | Decidir B: clonar FCC a `.16` vs dejar proxy solo en EQUIPITELLO | Decisión | Alto |
| 4 | Valorar Docker ALimpiezas IA `:8090` en `.16` | Ops | Medio |
| 5 | Instalar cron watchdog bridge desde `.16` | Operador `.16` | Bajo |
| 6 | No apagar EQUIPITELLO esperando que Codex Suite “viva” solo en `.16` | — | — |

---

## 7. Cómo revalidar en 2 minutos

```powershell
Test-NetConnection 192.168.1.16 -Port 11434
Test-NetConnection 192.168.1.16 -Port 8787
Invoke-RestMethod http://192.168.1.16:8787/health
Invoke-RestMethod http://192.168.1.16:11434/api/tags
(Invoke-WebRequest http://127.0.0.1:8082/admin -UseBasicParsing).StatusCode
Invoke-RestMethod http://127.0.0.1:8095/health
Select-String C:\Users\Paterna\.codex\config.toml -Pattern '^(model_provider|model)\s*='
Select-String C:\Users\Paterna\.fcc\.env -Pattern '^(OLLAMA_BASE_URL|MODEL|PORT)='
```
