Cómo construyo agentes

Arquitectura de referencia · septiembre 2026

Cómo construyo agentes.

Un ecosistema local-first en un Mac mini: agentes especializados, un mission control que los vigila, una sola puerta a los modelos y una sola memoria. Lo dirijo desde el móvil, y desde el iPad controlo el Mac entero.

Capa 1 · Entrada

Un humano. Sus canales y su trabajo.

El sistema viene a donde ya estoy. Además de mis canales, Thio lee mis sesiones de código en cmux para saber en qué ando, sin que se lo pida.

Telegram

canal principal

Teléfono

llamadas reales, in y out

WhatsApp

bridge al mismo cerebro

Email

Gmail + Resend

cmux

lee tus sesiones de código

Foco

ve tus pantallas de cmux e infiere en qué andas

Fireflies

transcribe tus reuniones

Calendar

agenda y eventos

Drive

documentos y archivos

lo mantienen al día

Capa 2 · El hub

Thio. La visión de todo.

Mi asistente personal, con su propia personalidad. Centraliza todo lo que hago: 114 herramientas (74 propias y 40 por MCP), memoria de cada conversación y contexto de cada proyecto. De las propias, el modelo arranca con 29 y carga las otras 45 cuando las necesita. Los demás agentes son especialistas; Thio es quien tiene el mapa.

🎩

Thio

asistente personal · 114 tools

coordina y delega en

Capa 3 · Especialistas

Un agente por dominio.

Procesos independientes, cada uno con su repo y su misión. Se hablan por HTTP a través del Agent Hub, nunca por imports: cada agente publica sus funciones y Thio las llama con call_agent.

Yarbis

voz · ElevenLabs + SIP

Elena

turismo rural · La Paredita

CMO Agent

marketing gaming

Inner Coach

hábitos y foco

Fin. Advisor

fiscalidad canaria · MCP

HealthAgent

salud · datos de Apple Salud

orquestados y vigilados por

Capa 4 · Orquestación

PMC. Mission control.

Puntúa proyectos, despacha trabajo autónomo, audita las normas, reinicia lo que se cae y despliega lo que entra en main. Con cmux, varios agentes Claude trabajan en paralelo en worktrees aislados, y cada tarea lleva un identificador que sigo desde Telegram.

PMC autopilot

detecta y despacha trabajo

Claude Code

el motor de self-coding

cmux

varios agentes en paralelo, aislados

Auditorías

cada 12 h · normas LLM y memoria

Watchdogs

caído → restart + aviso

Deploy continuo

instala, verifica y espera a que el bot esté libre

toda inferencia pasa por

Capa 5 · LLM Gateway

LiteLLM. Una sola puerta.

Proxy local. Ningún agente llama a un proveedor directo: failover automático, prompt caching y tope de gasto mensual. Cada agente tiene su propia clave virtual, así que cada llamada tiene dueño y queda trazada en Langfuse. Las sesiones de código y los lotes nocturnos van aparte, por la suscripción de Claude.

Claude

Anthropic · primario

Gemini

Google · fallback

OpenAI

+ OpenRouter · fallback

Ollama

modelos locales · último recurso

leen y escriben en

Capa 6 · Memoria

Obsidian. Una sola memoria.

Lo que un agente aprende, lo ven todos. La memoria es mi vault: Markdown plano que yo también leo y edito. Cada noche un proceso destila mis sesiones de código en notas pendientes de revisar.

Thio/

contexto curado · solo lectura

Agents/

inbox y outputs · aquí escriben

Personal/

acceso con propósito · zonas vetadas

SQLite + STATE.md

estado operacional por repo

sobre una base de

Base · Fundamentos

La fontanería que no se ve.

1Password

único gestor de secretos

pm2

pm2

46 procesos supervisados

Cloudflare

webhooks sin abrir puertos

GitHub + CI

typecheck · tests · guardianes

restic

backup cifrado de la memoria

Tailscale

VPN privada · malla de dispositivos

Screens

control del Mac desde iPad/iPhone

iPhone

el agente prueba y opera apps en el teléfono real

En directo

Mira una petición viajar por Thio.

Elige un escenario y dale a reproducir.


Tres reglas de oro.

01

Todo LLM pasa por el proxy.

Prohibido llamar a un proveedor directo, y cada agente usa su propia clave. Un cron audita los repos cada 12 horas y avisa si alguien se salta la norma.

02

Toda memoria vive en Obsidian.

Cero memorias paralelas en JSON o SQLite para cosas que un humano querría leer.

03

Todo secreto vive en 1Password.

Los .env solo contienen referencias op:// que se resuelven al arrancar.

De prototipo a agente autónomo.

Ninguna función nace corriendo sola. Sube de etapa cuando demuestra que aguanta, y cada tarea lleva el comando que la verifica.

Prototipo

Primero busco si ya existe en GitHub, en la documentación o en un paquete. Si no, lo ejecuto a mano hasta que funciona una vez.

Skill

Si el patrón se repite tres veces, lo capturo como skill que cualquier sesión puede invocar.

Servicio

Entra en el repo con tests y typecheck, y no cuenta como hecho hasta que arranca limpio en el proceso real.

Autónomo

Pasa a correr programado tras 7 días estable y con 80 % de cobertura. Cualquier cambio reabre esa ventana.

¿Por qué sin framework de agentes?

Los agentes están hechos a mano sobre el SDK de Anthropic, sin LangChain ni CrewAI, a propósito.

El loop es una función

  • ~1 archivoprefetch → llamada → tools → respuesta. Se lee entero en 10 minutos.
  • Cero magiasi algo falla a las 3 de la madrugada, es mi código y lo leo entero.

El SDK ya trae el 90 %

  • Tool use nativoel loop de herramientas viene en la API
  • Streaming + cachingbreakpoints de caché a mano: ~90 % de ahorro real
  • MCPel estándar sí lo adopto: integro sin acoplarme

Los frameworks cobran peaje

  • Abstracciónesconden prompt, caché y errores, que es justo lo que necesito ver
  • ChurnAPIs que rompen cada trimestre; el SDK es estable
  • Lo transversal, en paquetesrouting, tagging, caching y memoria en 2 paquetes propios

Donde sí uso bases ajenas

  • Langfusela observabilidad tampoco la construyo
  • Claude Codeel harness de self-coding no lo reinvento
  • LiteLLMel proxy multi-proveedor tampoco

Piezas destacables.

Lo que más rendimiento da del stack, por categoría.

MCP servers

  • GitHubPRs, issues y code search desde el agente
  • Google WorkspaceSheets · Gmail · Drive · Calendar
  • Playwrightel agente navega la web de verdad
  • Context7docs de librerías siempre al día
  • Firefliestranscripciones de reuniones
  • Magnificgeneración de imagen y vídeo

CLI

  • claudeClaude Code, el motor de self-coding
  • ghGitHub sin salir de la terminal
  • opsecretos bajo demanda (1Password)
  • pm2supervisión de procesos
  • wranglerdeploy a Cloudflare en segundos

Skills

  • /shiptypecheck → verify → commit → push
  • /improveel agente elige tarea y la ejecuta
  • /prior-artbuscar lo resuelto antes de codear
  • /board-de-direcciondirijo imágenes dibujando encima

Convenciones

  • STATE.mdcada repo informa al siguiente agente
  • verifyCommandninguna tarea sin comprobación
  • 3 strikestres fallos → parar y preguntar
  • Confirmaciónlo destructivo pide OK humano

Observabilidad

  • Langfusetraza y coste de cada llamada, por agente
  • Health monitorping a LiteLLM · auto-heal de ABI
  • Budget guardtope mensual · alerta al 75 %

Fiabilidad

Lo difícil no es la IA. Es que no falle a las 3 de la madrugada.

La IA es la parte fácil. Lo que separa una demo de algo que uso a diario es la ingeniería clásica de fiabilidad que la rodea.

Sentinel

Once sondas sintéticas recorren el camino crítico cada seis horas, ejercitando el sistema real. Detectan lo que deja de pasar, no solo los errores.

11 sondas · verde ahora mismo

Registro de eventos

Un diario que solo crece anota cada hecho (llamadas, herramientas, sondas) con su hora. Sirve para depurar y para detectar ausencias.

cada llamada · cada tool

Evals

Escenarios de referencia puntúan al agente de voz antes de tocar producción. Cada cambio de modelo o de prompt se mide; no se adivina.

5 escenarios golden

Runbook + simulacros

Cada incidente real se convierte en receta. Un simulacro trimestral reinicia la máquina y cronometra qué revive solo.

síntoma → receta

Un webhook estuvo dos meses caído en silencio. Nadie lo supo porque el fallo era una ausencia y no un error. Hoy una sonda sintética lo detecta el mismo día.

El 13 de septiembre, una reinstalación de dependencias dejó producción sin el intérprete del bot. El gate de verificación paró el despliegue, el bot siguió atendiendo y la causa quedó corregida en el vigilante esa misma tarde.

11
sondas del golden path
4.735
tests automáticos en Thio
4
proveedores en failover
0
secretos en el código

Caso real

Una llamada de teléfono que trabaja sola.

01

Le pido a Thio por Telegram que llame a alguien con un objetivo.

02

Yarbis marca desde un número español real y conversa con voz expresiva.

03

En mitad de la llamada consulta mi calendario, crea recordatorios y me avisa por Telegram.

04

Al colgar llegan a Telegram el transcript, el audio y el análisis, y el agente decide las próximas acciones.