Tutoriales de IA
Guías prácticas y probadas para autoalojar infraestructura de IA en una Instancia WEC: despliega agentes, conecta tus propios modelos, añade canales, evaluaciones y observabilidad. Cada guía se ejecuta desde cero en un servidor real, con los comandos, versiones y correcciones reales.
Endurecimiento de la infraestructura de IA autoalojada
Tu firewall te está mintiendo: endurecimiento de redes Docker para sistemas multi-agente
Una caja ejecutando cinco pilas de agentes, un firewall configurado para denegar todo, y servicios que aún responden desde Internet público. Investigamos un despliegue real, encontramos una base de datos sin contraseña, demostramos por qué UFW nunca ve el tráfico de Docker, y lo solucionamos de cuatro maneras — cada comando y resultado de una ejecución en vivo.
Leer más →Root por defecto: endurecimiento del privilegio del contenedor en una pila de IA autoalojada
Dos de los seis contenedores detrás de un despliegue en vivo de Langfuse estaban ejecutándose como root, sin razón aparente. Arreglarlo tomó una línea cada uno — y rompió un servicio que no tenía nada que ver con la solución. Una verdadera conversión, un verdadero fallo de coordinación, y cómo detectar ambos.
Leer más →Un solo inicio de sesión para todo: poniendo authentik delante de una app autoalojada
La Parte 2 arregló cómo se ejecutan los contenedores. Esta arregla quién puede iniciar sesión. Despliega authentik como tu propio proveedor de identidad, conecta Langfuse a él por OIDC, y entiende las piezas — proveedor, aplicación, URI de redirección, scopes — en lugar de copiar una configuración. Incluye los dos fallos que produjo una ejecución real: un archivo compose que se traga tus ajustes en silencio, y OAuthAccountNotLinked.
Leer más →La vinculación que no estaba: control de acceso por grupos, y lo que el SSO no protege
La Parte 3 publicó SSO con vinculaciones vacías. Cerrar ese hueco en el gateway LiteLLM destapó algo peor: el asistente de authentik nos dejó configurar las vinculaciones, las mostró en su propia tabla, y no guardó ninguna — sin error, sin aviso. Después, ya con el control de acceso funcionando, la API respondió a una petición desde un shell sin cuenta, sin sesión y sin pertenencia. Ambas cosas son el post.
Leer más →La clave que expira: darle a un agente su propia identidad en el gateway
La Parte 4 terminó con un shell, una clave estática y un modelo que respondió. Esto reemplaza esa clave por un token que emite tu proveedor de identidad, que lleva un scope, y que muere a los cinco minutos. authentik lo emite por client credentials, el gateway lo verifica en veinticinco líneas, y tres códigos de estado demuestran el límite. Incluye el requisito que authentik no documenta, y el muro de licencia con el que chocas si sigues la propia guía de LiteLLM.
Leer más →El token válido equivocado: autenticar un servidor de herramientas MCP con authentik
La parte 4 de orquestación de agentes recortó las herramientas en el cliente y admitió que el servidor seguía fiándose de quien alcanzara el puerto. Esto pone un verificador de JWT delante, con su propio cliente en authentik, de modo que el servidor de herramientas rechaza a quien llama sin identificarse — y rechaza también el token válido del gateway, porque un proveedor aparte significa un emisor aparte. Incluye el ayudante de client credentials que la documentación describe y que aquí no puede funcionar, y los cuatro 404 silenciosos que produce en lugar de decirlo.
Leer más →Limita la salida de un contenedor de agente para que solo alcance una API y nada más
Todas las partes anteriores de esta serie controlan qué puede llamar un agente. Ninguna controla adónde puede ir. Las mitigaciones de OWASP para Agencia Excesiva son tres reglas sobre herramientas y no dicen nada sobre la red. Esto pone una política de denegación por defecto delante de un contenedor, permite exactamente una API, y demuestra el límite con una resolución que funciona y un paquete que muere. Incluye la regla de conntrack que todo el mundo te dice que añadas y que esta no necesita, y una medición equivocada por tres órdenes de magnitud.
Leer más →Mueve el demonio de Docker fuera de root para que una fuga del contenedor caiga en un usuario común
Si puedes ejecutar docker sin sudo, ya puedes leer cualquier archivo de la máquina. No por un fallo — así está construido Docker. Un solo comando lo demuestra. En un host que ejecuta agentes que corren código generado, ese es el ataque completo, y los contenedores no-root de la Parte 2 no lo tocan. Esto mueve el propio demonio a una cuenta sin privilegios, con la aritmética de UID que puedes comprobar, cuatro puntos donde la instalación te lleva contra un muro en Ubuntu, y qué deja de funcionar después.
Leer más →Aísla el código que escribe tu agente y comprueba que cada límite se aplicó de verdad
OWASP nombra la ejecución de código generado por el modelo mediante exec o eval como una vulnerabilidad propia, te dice que trates al modelo como no confiable — y no dice nada sobre cómo contenerlo. Así que construimos la contención: sin red, 256 MB, 64 procesos, disco de solo lectura, sin capacidades. Todo eso funcionó. El límite de CPU fue rechazado de plano, y ocho bucles infinitos se llevaron el 605% del host. La causa es una línea de configuración de systemd que nadie menciona, y el arreglo no necesitó reiniciar pese a que la documentación insiste en lo contrario.
Leer más →Dale a cada herramienta MCP su propio ámbito y devuelve un rechazo sobre el que el cliente pueda actuar
La parte 6 protegió todo el servidor con un solo ámbito, lo que significaba que el token que dejaba a un agente consultar un cliente también le dejaba emitir reembolsos. Separarlo por herramienta es fácil. Hacer que el rechazo sea útil no lo es: la implementación obvia devuelve HTTP 200 con el error enterrado en el cuerpo, así que el cliente no tiene nada con lo que disparar una autorización escalada. Conseguir el 403 y el desafío WWW-Authenticate que define la especificación implica salir por completo de la abstracción del framework — y la versión que lo hace decodifica el token una segunda vez, sin verificar.
Leer más →Orquestación de agentes con LangGraph
Checkpoints de un agente LangGraph en una instancia WEC para que las caídas no te cuesten nada
Persiste el estado del agente en Postgres sobre una instancia WEC, llama a un modelo en la API de Inferencia de WEC, y luego mata el proceso a mitad de ejecución dos veces y reanuda ambas desde exactamente donde se detuvo — además de la pausa de aprobación humana, y la interrupción que dispara tus efectos secundarios dos veces en silencio.
Leer más →Pasar trabajo entre agentes LangGraph sin corromper el estado compartido
Un supervisor enruta trabajo a especialistas, un agente lo traspasa a mitad de tarea, y dos agentes escriben la misma clave de estado en el mismo paso. Uno de esos casos lanza un error en vez de elegir un ganador — y la decisión de enrutamiento cuesta 412 tokens de salida para decir una palabra.
Leer más →Reservar citas y reembolsar facturas desde un agente LangGraph con MCP
Los agentes de agenda y facturación de las Partes 1 y 2 nunca agendaron ni facturaron nada. Esto les da un calendario, una lista de clientes y un reembolso que ningún modelo puede emitir solo — por MCP, sobre la especificación sin sesiones, con el modelo en WEC Inference. Incluye tres cosas que nadie documenta: tu servidor sigue usando sesiones por defecto, ctx.elicit es la API vieja y su error de era va al modelo, no a ti, y cache=True no hace nada si el servidor no anuncia un TTL.
Leer más →Repartir una caja de herramientas MCP entre dos agentes para que el de agenda no pueda emitir reembolsos
La Parte 3 le dio a un solo agente las cinco herramientas y dejó que una pausa humana vigilara la peligrosa. Esa guarda depende de que el modelo pregunte. Esto reparte el mismo servidor MCP entre un agente de agenda y uno de facturación, de modo que el de agenda no puede reembolsar una factura por la razón más simple que existe: la herramienta nunca estuvo en su lista. Luego el supervisor vuelve encima, y resulta que el enrutado no es la garantía.
Leer más →Autoalojamiento de un gateway de LLMs
Un endpoint, muchos modelos: despliega un gateway LLM en una instancia WEC
Cada aplicación en una caja que tiene la misma clave API es un problema esperando a suceder. Un gateway soluciona eso: un endpoint, claves específicas por aplicación, presupuestos por clave y un registro de quién gastó qué. Desplegado de verdad en un host que ya ejecuta cinco otras pilas, incluyendo las partes que nos sorprendieron.
Leer más →Enrutamiento de complejidad de LiteLLM: el modelo adecuado para cada solicitud y su costo en latencia
Cómo el enrutador de complejidad de LiteLLM decide qué modelo responde a una solicitud: las siete dimensiones de puntuación, la aritmética en un prompt real y una comparación medida del puntuador de palabras clave gratuito frente a un clasificador LLM.
Leer más →Enmascarar PII en la puerta de enlace: configurar Presidio, además de la línea que los documentos omiten
Configura el enmascaramiento de PII en una puerta de enlace LLM autoalojada con Presidio. El enmascaramiento puede estar en tres lugares: antes del modelo, en la respuesta, o solo en el camino hacia tus registros, y solo uno mantiene tu aplicación funcionando. Sigue la configuración documentada y las respuestas de tu modelo regresan redactadas; aquí está el porqué y la única configuración que lo soluciona.
Leer más →Rastros limpios, respuestas intactas: enmascarando PII en los registros de LiteLLM sin corromper la respuesta
Enviar el tráfico de un gateway a Langfuse y la respuesta del modelo lleva la PII de vuelta a tus rastros. Ampliar el alcance de Presidio y enmascara la respuesta que reciben tus usuarios en su lugar. Ninguna de las configuraciones te da ambas cosas, así que aquí hay un callback de cuarenta líneas que lo hace — medido, y con el error que lo hace más lento.
Leer más →Prueba de carga en un gateway LLM: encuentra el atasco que la mediana esconde
La Parte 4 midió una llamada bloqueante dentro de un callback en 200-350ms y advirtió que el daño real solo aparece bajo concurrencia. Esto lo ejecuta: dieciséis peticiones a la vez, con un control contra el upstream para distinguir la culpa de tu gateway de la del modelo. Las medianas de las dos versiones son casi idénticas. Una versión descarta peticiones y deja de enmascarar en silencio.
Leer más →Autoalojamiento de Hermes
Autoalojar el Agente Hermes con memoria persistente
Despliega el Agente Hermes de código abierto de Nous Research en tu Instancia WEC — con memoria persistente respaldada por SQLite que sobrevive a un reinicio completo. Instalación real, configuración del modelo y una prueba de memoria que sobrevive al reinicio.
Leer más →Migrar el Bot de Telegram de OpenClaw a Hermes
Mover el mismo bot de Telegram de la serie OpenClaw a Hermes — mismo chat, mismos usuarios, un agente diferente respondiendo detrás. Un verdadero asistente de configuración, un verdadero problema de lista de permitidos, y prueba de que responde.
Leer más →Evaluaciones de IA y observabilidad
Evalúa tus modelos con Promptfoo en la API de Inferencia WEC
Deja de estimar la salida de LLM. Construye un verdadero arnés de evaluación con Promptfoo apuntando a la API de Inferencia WEC — afirmaciones, límites de latencia, verificaciones de esquema JSON, rúbricas calificadas por el modelo, una comparación de modelos totalmente WEC, y una puerta CI. Cada comando y resultado es real.
Leer más →JSON confiable: valida el esquema de la salida estructurada de tu modelo
Los LLM prometen JSON y entregan cercas de markdown y razonamiento. Construye una evaluación de Promptfoo que clasifique tickets de soporte en JSON validado por esquema en la API de Inferencia WEC — con transformaciones para recuperar salidas desordenadas, una matriz de fiabilidad del modelo y una puerta CI. Cada comando y resultado es real.
Leer más →Deja de escribir casos de prueba a mano: genera un conjunto de evaluación con la API de WEC
Dos casos de prueba escritos a mano no son una evaluación. Usa la API de Inferencia de WEC para generar un conjunto de datos de evaluación etiquetado — luego valídalo y curátalo, porque las etiquetas generadas no son automáticamente correctas. El resultado es datos de prueba reales a gran escala; aliméntalo a tu arnés y la cobertura revela las malas clasificaciones y las etiquetas debatibles que dos casos ocultarían. Cada comando y resultado es real.
Leer más →Captura lo que tus pruebas no ven: observa y evalúa tu aplicación WEC en producción con Langfuse
Las evaluaciones de CI pasan en un conjunto de pruebas fijo, pero la producción envía entradas que nunca probaste. Autoalojar Langfuse en una instancia WEC, rastrear cada llamada real, evaluar automáticamente el tráfico en vivo con un juez LLM, profundizar en el paso exacto que falló y retroalimentar los fallos para hacer tus evaluaciones más fuertes. Cada comando — y cada callejón sin salida — es real.
Leer más →El proyecto final: construye, evalúa y observa un asistente de documentación RAG en la API de WEC
Construye un servicio RAG con forma de producción en Docker: extrae un sitio de documentación real, genera embeddings localmente, genera texto en la API de Inferencia de WEC — y luego caza una alucinación real, encuentra su causa en tu propio scraper, la arregla y la fija con un test de regresión. Cada comando, número y error es real.
Leer más →Prueba de regresión de tu servicio RAG con DeepEval — y resuelve un debate sobre modelos con datos
Envuelve el asistente RAG de la parte 5 en una suite de DeepEval en contenedor juzgada por gemma4 en la API de Inferencia WEC — sin clave de OpenAI en ninguna parte. Luego úsalo para responder a una pregunta real: ¿deberíamos cambiar nuestro modelo de generación? La misma calidad, 5.5× los tokens: la evaluación dice que no. Cada comando, número y error es real.
Leer más →Trazado a nivel de componente: depuración de llamadas a herramientas del agente
El pensamiento de tu agente y sus acciones son dos capas diferentes. Construye un agente que llame a herramientas en WEC Inference, trázalo con Langfuse y luego depura dos fallos reales del trazado, incluyendo la respuesta incorrecta y confiada que nunca lanza un rastreo de pila.
Leer más →Agrega búsqueda web a tus llamadas de WEC Inference
Tu asistente RAG responde bien a partir de tus documentos, pero no sobre nada reciente. WEC Inference ahora tiene una herramienta de búsqueda web integrada: agrégala a una llamada de chat y el modelo obtiene información actual. Una prueba rápida antes/después.
Leer más →Automatización de WhatsApp en WEC
Autoalojamiento de OpenClaw
Desplegar OpenClaw en una instancia WEC a través de Docker Compose
Desde una instancia WEC nueva hasta un agente OpenClaw autoalojado que realmente responde — Docker Compose, tu propia clave de modelo y cada error real y solución de un despliegue en vivo.
Leer más →Asegurar OpenClaw con un proxy inverso Caddy + HTTPS
Coloca Caddy frente a OpenClaw para un verdadero HTTPS y autenticación emparejada por dispositivo, luego cierra los puertos del gateway para que el proxy sea la única forma de acceso — problemas y todo.
Leer más →Agregar un canal de Telegram a OpenClaw
Habla con tu agente OpenClaw autoalojado desde tu teléfono. Crea un bot de Telegram, conéctalo, limpia la puerta de emparejamiento y chatea — capturado de una ejecución real.
Leer más →Haz que OpenClaw sea privado con una VPN de malla NetBird
Coloca OpenClaw en una malla privada con NetBird, redirige tu nombre de host a la IP de la malla y cierra los puertos públicos — así la misma URL de chat funciona solo para tus dispositivos. Comandos reales y problemas de una ejecución en vivo.
Leer más →Ejecutar OpenClaw en Modelos WEC
Intercambia el proveedor cerrado por la propia inferencia de WiLine: apunta tu agente OpenClaw autoalojado a Modelos WEC — misma caja, un cambio de base-URL/clave/modelo, sin bloqueo por token.
Leer más →Agregar un canal de WhatsApp a OpenClaw
Coloca tu agente autoalojado en WhatsApp. Agrega el canal, confía en el plugin, escanea un QR — y entiende por qué un enlace de compañero hace que el agente actúe como tu cuenta. Cada comando y error de una ejecución real.
Leer más →