Diagnóstico de puruto-gateway
This content is not available in your language yet.
Qué cubre esta página
- Flujo rápido de diagnóstico de
puruto-gateway - Checks de
.env, API key, imports y arranque - Validación de discovery (
registry.py) - Pruebas HTTP mínimas con
curl - Limitación conocida del endpoint de invocación (
POST /purutos/{name}/{command})
Alcance
Fuente de verdad:
- skills scaffold
initystatusdepuruto-gateway - templates
gateway/*.pydel generador
Principio de diagnóstico
En puruto-gateway, separa siempre estos fallos:
- Entorno/arranque (dependencias, imports,
.env) - Auth (
X-API-Key, env vars) - Discovery (qué Purutos ve
registry.py) - Invocación (endpoint
POST, hoy experimental en el scaffold)
Paso 1. Validar estructura del repo
python3 /Users/pepetox/Documents/01-code/puruto/.claude/skills/validate/scripts/validate.py /ruta/a/puruto-gateway --jsonRevisa:
kind = "puruto-gateway"errors = 0
Paso 2. Checks base del scaffold (init)
La skill /init del scaffold sugiere este orden:
2.1 Verificar .env
python3 -c "from pathlib import Path; print('OK: .env existe' if Path('.env').exists() else 'WARN: falta .env (copia .env.example)')"2.2 Instalar dependencias mínimas
pip install fastapi uvicorn python-dotenv --quiet2.3 Validar imports
python3 -c "import app; print('OK: app FastAPI cargada')"Si falla este paso, revisa:
- entorno virtual activo
- dependencias instaladas
- sintaxis rota en
app.py,routes.py,auth.py,registry.py,invoker.py
Paso 3. Verificar configuración de auth
El scaffold exige:
PURUTO_GATEWAY_API_KEY
Comprobación rápida:
python3 -c "import os; print('OK' if os.getenv('PURUTO_GATEWAY_API_KEY') else 'FALTA PURUTO_GATEWAY_API_KEY')"Sin esa variable:
/healthpuede responder/purutos*devolverán error (503) al pasar porrequire_api_key
Paso 4. Verificar discovery local (status/registry.py)
La skill /status del scaffold hace:
python3 -c "import osfrom registry import list_purutos
api_key = os.getenv('PURUTO_GATEWAY_API_KEY', '')items = list_purutos()print('── puruto-gateway status ──')print(' API key:', 'configurada' if api_key else 'FALTA')print(f' Purutos descubiertos: {len(items)}')print(' Nombres:', [i['name'] for i in items])"Qué valida este paso:
- imports de
registry.py - lectura de
PURUTO_DATA_PATH(si aplica) - fallback a discovery en directorio padre
Paso 5. Arrancar el servidor y probar endpoints
5.1 Arranque local
uvicorn app:app --reload --host 127.0.0.1 --port 87875.2 GET /health (sin auth)
curl http://127.0.0.1:8787/healthEsperado:
{"status":"ok","service":"puruto-gateway"}5.3 GET /purutos (con auth)
curl -H "X-API-Key: $PURUTO_GATEWAY_API_KEY" http://127.0.0.1:8787/purutosPruebas negativas útiles:
- sin header
X-API-Key->401(o503si falta env) - API key incorrecta ->
401
5.4 GET /purutos/{name}
curl -H "X-API-Key: $PURUTO_GATEWAY_API_KEY" http://127.0.0.1:8787/purutos/puruto-dataSi no existe:
404condetail = "Puruto no encontrado"
Paso 6. Endpoint de invocación (estado actual)
Qué sí puedes diagnosticar mientras tanto:
- validación de allowlist de
command - resolución de Puruto por nombre (
get_puruto)
Diagnóstico por síntomas
/health OK pero /purutos falla
Revisa en este orden:
PURUTO_GATEWAY_API_KEY- header
X-API-Key - import/ejecución de
registry.py
/purutos responde vacío
Causas comunes:
- no hay repos
puruto-*en el directorio padre PURUTO_DATA_PATHapunta a unregistry.jsoninexistente o inválidoregistry.jsonexiste pero sin entries enpurutos[]
El gateway descubre Purutos con path: null
Causa típica:
registry.jsondepuruto-datacon entries mínimas (name,folder,registered_at) sinpath
Referencia:
Checklist de diagnóstico rápido
validate.pydel repopuruto-gateway✅import app✅PURUTO_GATEWAY_API_KEYconfigurada ✅python3 -c "from registry import list_purutos; print(list_purutos())"✅GET /health✅GET /purutoscon API key ✅
Referencias relacionadas
Última verificación
Runbook contrastado con gateway/init.SKILL.md.tpl, gateway/status.SKILL.md.tpl y templates gateway/*.py del generador el 25 de febrero de 2026.