Qué vas a montar
- relay (TypeScript): emparejamiento, mensajes, estado de las llamadas, avisos push y tokens de LiveKit. Corre en tu servidor detrás de Caddy.
- LiveKit: el audio de las llamadas, autoalojado en el mismo fichero de Docker Compose.
- daemon (Python): la CLI
agentring, el servidor MCP y la IA de voz. Corre junto a tus agentes; detrás de NAT no hay problema, porque solo abre conexiones salientes. - App de Android (Kotlin): emparejamiento por QR, la pantalla de llamada nativa y los mensajes.
your agent ──MCP/CLI──▶ daemon ──WSS (outbound only)──▶ relay ──FCM push──▶ Android app
▲ │ (your server) │
└── agents.yaml ◀── voice AI (realtime) ◀──────── LiveKit (call audio) ───────┘Qué necesitas
- Un sitio donde ejecutar el relay: un servidor Linux con Docker y un dominio, o tu propio ordenador con Docker (con el móvil en la misma Wi-Fi o desde cualquier sitio por Tailscale).
- Un proyecto de Firebase gratuito, que es lo que hace sonar un móvil bloqueado (guía).
- Una clave para la IA de voz: Gemini (con capa gratuita), OpenAI, xAI (Grok) o Phonic.
- Un móvil Android (8 o superior).
1. Arranca el relay
Clona el repo y levanta el relay con LiveKit:
git clone https://github.com/mutonby/agentring.git && cd agentring# En un servidor con dominio (puertos 80, 443, UDP 50000-50100 y TCP 7881 abiertos)
cd deploy && cp .env.example .env && $EDITOR .env
docker compose up -d --build
docker compose logs relay | grep -A2 "API key"O, sin servidor, en tu ordenador:
# En tu propio ordenador, en su IP de la LAN o de Tailscale
cd deploy && cp .env.local.example .env.local && $EDITOR .env.local
docker compose -f docker-compose.local.yml --env-file .env.local up -d --buildLa primera vez, el relay genera una clave de API (ak_…) y la escribe en el log.
2. Instala el daemon y empareja el móvil
En el ordenador donde corre tu agente. Instala la app desde Google Play (o el APK de las releases de GitHub) y escanea el QR que muestra agentring pair:
uv tool install './daemon[voice]'
agentring init --relay https://relay.example.com --api-key ak_...
agentring pair # escanea el QR con la app
agentring msg "hola" # el móvil recibe una notificación
echo GEMINI_API_KEY=... >> ~/.agentring/.env # u OPENAI_API_KEY / XAI_API_KEY / PHONIC_API_KEY
agentring call "Probando agentring" --ai # + --provider openai|grok|phonic3. Conecta tu agente
Con Claude Code es una línea; para el resto, mira la guía de cada agente:
claude mcp add agentring -- agentring mcpCodex · opencode · OpenClaw · Hermes · n8n y scripts
Elige la IA de voz
| IA de voz | --provider | Clave |
|---|---|---|
| Gemini Live (por defecto, capa gratuita) | gemini | GEMINI_API_KEY |
| OpenAI Realtime | openai | OPENAI_API_KEY |
| Grok Voice (xAI) | grok | XAI_API_KEY |
| Phonic | phonic | PHONIC_API_KEY |
Pon AGENTRING_VOICE_PROVIDER en ~/.agentring/.env para usar uno en todas las llamadas, desde la CLI y desde MCP. Comparamos su latencia en este artículo.
Privacidad cuando lo montas tú
Todo corre en tus servidores y tus cuentas. Los mensajes y metadatos de llamadas se guardan en tu relay. Los avisos push pasan por tu propio proyecto de Firebase: van firmados, no cifrados, así que FCM de Google puede leer el texto que envías. El audio pasa por tu LiveKit y, con la IA de voz, por el proveedor que elijas; en la capa gratuita de Google, Google puede usar esos datos para mejorar sus productos.
Limitaciones: solo Android por ahora, un usuario por relay, y la IA de voz necesita un modelo realtime en la nube (los locales se pueden enchufar con RealtimeBackend). Si el móvil no suena bloqueado, casi siempre es el ahorro de batería del fabricante: guía por marcas.
Preguntas frecuentes
¿Cuánto cuesta montarlo tú?
El software es gratis (Apache-2.0). Pagas, si acaso, tu servidor y el uso de la IA de voz con tu proveedor; Gemini Live tiene capa gratuita. Firebase Cloud Messaging no cuesta nada.
¿Necesito un dominio y un servidor público?
No necesariamente. Puedes ejecutar el relay en tu propio ordenador con Docker y conectar el móvil por la misma Wi-Fi o desde cualquier sitio con Tailscale. Con un servidor y un dominio, el móvil te encuentra desde cualquier red.
¿Para qué hace falta Firebase?
Para que un móvil bloqueado suene. Android solo despierta las apps con avisos push de alta prioridad, y esos llegan por Firebase Cloud Messaging. Creas un proyecto gratuito y el relay usa su configuración; la app la recibe al emparejarse, así que el mismo APK sirve para cualquiera. Pasos en docs/firebase.md.
¿Puedo pasar de agentring cloud a mi servidor más adelante?
Sí. Es el mismo software: montas tu relay, emparejas el móvil con él y cambias la URL MCP de tu agente. Puedes eliminar tu cuenta cloud cuando quieras.