Tu teléfono
Telegram
Agentower conecta tu teléfono con los agentes que corren en tu máquina: opencode, Claude Code, Kiro, GitHub Copilot, Codex y Antigravity. Seguí el progreso, respondé preguntas y retomá sesiones sin exponer ni un puerto a internet.
La app se firma ad-hoc (sin Developer ID), así que macOS pide confirmación la primera vez. Todo corre en tu máquina con tu propio bot de Telegram. Ver todos los releases
AgenTower
bot
✅ Tarea completada en opencode
Proyecto: astro-portfolio
Sesión: ses_f357ddb2cffe1pq0TCt4wP0lwf
Listo.
3:15 PM
Perfecto, seguí desde acá. ¿Qué falta para cerrar el deploy?
3:16 PM
❓ El agente pregunta
¿Qué estrategia de caché prefieres para las sesiones?
3:16 PM
Agentower detecta los CLIs instalados en tu PATH (y en los bundles de app) y sigue sus sesiones sin que tengas que elegir nada. Podés cambiar de agente por chat cuando quieras.
Sigue la TUI local por SQLite; HTTP solo para enviar prompts
$ opencode serve
Historial JSONL de todos los proyectos en ~/.claude
$ claude
Sesiones JSONL en ~/.kiro
$ kiro-cli acp
session-store de VS Code
$ copilot
Rollouts en ~/.codex
$ codex exec --json
Transcripts en ~/.gemini
$ agy -p
Ejecutá, monitoreá y guiá sesiones de tus agentes desde el teléfono mientras tu máquina hace el trabajo real.
Un solo bot maneja opencode, Claude Code, Kiro, Copilot, Codex y Antigravity. Cambiás de agente por chat sin reiniciar nada.
Sin puertos expuestos, sin túneles, sin webhooks. El bot solo hace llamadas salientes a la API de Telegram.
Solo el ALLOWED_CHAT_ID configurado puede usar el bot. Cualquier otro intento se descarta en silencio.
La navegación por carpetas nunca puede salir del WORKSPACE_ROOT, ni siquiera con symlinks o rutas relativas.
Workspace, proyecto, sesión y agente activo viven en SQLite y sobreviven a reinicios. Nunca guarda prompts.
Si te alejás de la máquina, a los 2 minutos recibís la tarea completada; al minuto, las preguntas del agente.
Cuando el agente pausa para pedir una decisión, te llega con botones. Tu respuesta vuelve al agente que corre local.
Barra de menús en macOS y bandeja del sistema en Windows: toggle, settings, auto-arranque y logs.
Todo el tráfico hacia Telegram es saliente (long polling). El bot no abre puertos a internet: las apps nativas hablan con él por un socket local en 127.0.0.1.
Tu teléfono
Telegram
remote-bot
Go · sin daemon
Tus agentes
locales · sin cambios
opencode · claude · kiro · copilot · codex · agy
Las apps nativas de macOS y Windows cierran el círculo: toggle, settings y auto-arranque.
Hablá con @BotFather para obtener el token y con @userinfobot para tu chat ID. Es gratis y toma un par de minutos.
Bajá la app para macOS o Windows (o compilá el binario Go) y pegá WORKSPACE_ROOT, TELEGRAM_BOT_TOKEN y ALLOWED_CHAT_ID en Settings.
El bot escanea el PATH y los bundles de app, y empieza a seguir las sesiones de los CLIs que tengas instalados.
Cuando el agente termina o pregunta algo, recibís el aviso. Respondés y la tarea sigue en tu máquina.
Agentower no necesita servidores ni cuentas: solo una máquina, un bot de Telegram y al menos un agente de IA instalado.
Al menos uno de los CLIs soportados, disponible en el PATH: opencode, claude, kiro, copilot, codex o agy.
Un bot propio creado con @BotFather. Es gratuito y el token se pega en Agentower, nunca en un servidor de terceros.
El ID numérico de tu usuario de Telegram, que te da @userinfobot. Es lo único que puede hablar con tu bot.
Para las apps nativas con interfaz. Si preferís el binario, también corre en versiones recientes de macOS y Windows.
Solo si compilás remote-bot desde el código. Bajando un release, el binario ya viene embebido.
Solo para compilar Agentower.exe por tu cuenta. El .exe publicado es self-contained y no pide .NET.
Las apps nativas escriben estas variables por vos en un .env con permisos 0600 dentro de tu carpeta de usuario. Si preferís el binario, podés exportarlas en el shell o apuntar ENV_FILE a tu propio archivo.
Todo arranca con dos conversaciones en Telegram: una para conseguir el token del bot y otra para saber tu chat ID. Son gratuitas y no necesitás nada más.
Es el bot oficial de Telegram para crear bots. Buscalo en la app y verificá el check azul junto al nombre: hay cuentas falsas con nombres parecidos.
Enviá /newbot, elegí un nombre y un username (tiene que terminar en bot). Al final te devuelve un token: esa es la credencial que Agentower usa para hablar con Telegram.

Vos › /newbot
BotFather › Alright, a new bot. How are we going to call it?
Vos › Agentower Bot
BotFather › Good. Now let's choose a username for your bot.
Vos › agentower_bot
BotFather › Done! Use this token to access the HTTP API:
1234567890:AA… ← tu token, guardalo
Agentower es de un solo usuario: solo el chat ID que configures puede hablarle al bot. Para obtenerlo, abrí @userinfobot (aparece como “User Info · Get ID · idbot”), enviá /start y te responde con tu ID numérico.
Ese número es tu ALLOWED_CHAT_ID. Cualquier otro chat queda descartado en silencio.

Vos › /start
idbot › Your user ID: 123456789
← ese número es tu ALLOWED_CHAT_ID
Con las dos credenciales listas, seguí la guía de instalación: la app las escribe en un .env local con permisos 0600 y nunca las manda a un servidor de terceros.
Ir a la instalaciónTratá el token como una contraseña. Quien lo tenga controla el bot. No lo subas a un repo público ni lo compartas; si se filtra, revocalo con /revoke en @BotFather y generá uno nuevo.
Elegí tu plataforma. Cada paso es copiable y no requiere permisos de administrador más allá de mover la app a Aplicaciones.
Bajá Agentower-MacOS.zip del último release. Es la build firmada ad-hoc para Apple Silicon (arm64) y requiere macOS 13.0 o superior.
Descomprimí el .zip y copiá el bundle a /Applications con el Finder o desde la terminal.
cp -R Agentower.app /Applications/La app no tiene Developer ID de Apple, así que macOS la bloquea la primera vez. Este comando elimina el atributo de cuarentena.
xattr -dr com.apple.quarantine /Applications/Agentower.appAbrí Agentower desde Aplicaciones. Aparece un ícono en la barra de menús: click izquierdo abre el popover, click derecho el menú. Entrá a Settings… y completá WORKSPACE_ROOT, TELEGRAM_BOT_TOKEN y ALLOWED_CHAT_ID.
En “Agentes de IA” vas a ver qué CLIs detectó; habilitá los que quieras y guardá. Después usá el toggle del popover. Si la configuración es válida, la app también arranca el bot sola al abrirla.
Escribí comandos en Telegram o usá los botones inline de cada notificación. El texto libre va directo a la sesión activa.
/start · /helpBienvenida y lista de comandos disponibles.
/statusQué agente y sesión está siguiendo el bot ahora mismo.
/continueRetoma la última tarea completada y la deja activa para responder.
/resumeDetecta la sesión viva en tu máquina y ofrece seguirla desde Telegram.
/agent · /agentsCambia el agente activo del chat sobre la marcha.
texto libreResponde a la sesión activa, o a la pregunta pendiente del agente.
Single-user y self-hosted: no hay backend compartido ni cuentas. Tu token, tus sesiones y tu código quedan en tu máquina; lo único que sale es el mensaje que viaja a Telegram.
El bot únicamente responde al ALLOWED_CHAT_ID configurado. Cualquier otro intento se descarta en silencio, sin llegar al handler.
Los botones inline se validan contra un registro de navegación efímero por chat. Otros chats reciben “menú expirado”.
Toda ruta que llega desde Telegram es relativa: se resuelve, se evalúan los symlinks y el resultado debe quedar dentro del WORKSPACE_ROOT.
SQLite solo guarda proyecto, sesión y estado efímero. Nunca el contenido de tus prompts ni el token.
No hay puertos abiertos, webhooks ni túneles. El long polling es saliente y los wrappers solo consultan un socket en 127.0.0.1.
El .env se escribe con permisos 0600 en macOS y vive bajo %APPDATA%\Agentower\ en Windows, accesible solo a tu cuenta.
Lo esencial para decidir si Agentower encaja con tu flujo de trabajo: qué soporta, cómo protege tus datos y qué necesitás para empezar.
Sí. Es open source bajo licencia MIT y no tiene backend ni cuentas: descargás o compilás el binario y lo corrés en tu propia máquina.
opencode, Claude Code, Kiro, GitHub Copilot, Codex y Antigravity. Detecta los que tengas instalados y te permite cambiar de agente por chat sin reiniciar nada.
No. El bot usa long polling saliente contra la API de Telegram: no expone puertos ni necesita túneles ni webhooks. Las apps nativas hablan con el bot por un socket local en 127.0.0.1.
Todo queda en tu máquina: el token en un archivo .env con permisos 0600 y el estado en SQLite. Nunca se guarda el contenido de tus prompts ni se manda a un servidor de terceros.
Sí. El binario Go (remote-bot) funciona solo en macOS, Linux y Windows. La app es opcional y aporta toggle, settings y auto-arranque.
Cada agente con locator tiene un observador que auto-sigue la sesión más reciente. Para opencode lee la TUI local por SQLite y para Claude escanea todos los proyectos: no tenés que elegir nada.
Sí. Hay apps nativas para macOS (barra de menús) y Windows (área de notificación), y el binario Go también corre en Linux.
Si te alejás de la máquina, a los 2 minutos te avisa de una tarea completada y al minuto una pregunta pendiente del agente, con botones para continuar desde Telegram.
Binarios del último release (v0.4.1). Es gratis y open source bajo licencia MIT.
Agentower-MacOS.zip
App de barra de menús firmada ad-hoc. Descomprimí, mové a /Applications y quitá la cuarentena de Gatekeeper.
Descargar para macOSAgentower-Windows.zip
App de bandeja self-contained: no requiere .NET instalado. Descomprimí el .zip y ejecutá Agentower.exe; se auto-instala y registra el arranque con Windows.
Descargar para Windows¿Preferís compilarlo vos? Podés construir el binario Go desde el código.
Los binarios los publica GitHub en cada release de gregoryoviedo/agentower. Verificá siempre la URL del release antes de ejecutar un archivo descargado.
No hay planes, licencias ni telemetría. Si la herramienta te sirve, una donación por Binance Pay ayuda a dedicarle tiempo al proyecto.
Binance Pay
Envialo desde tu app de Binance
ID de Binance Pay
371811579Si preferís no donar, una estrella en GitHub, un issue con feedback o un aporte de código también suman muchísimo.