{"id":49360216,"url":"https://github.com/inledgroup/agent-tunnel","last_synced_at":"2026-04-27T16:00:42.861Z","repository":{"id":348009269,"uuid":"1195449152","full_name":"InledGroup/agent-tunnel","owner":"InledGroup","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-26T19:37:27.000Z","size":5798,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T21:25:32.002Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InledGroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-29T17:28:26.000Z","updated_at":"2026-04-26T19:37:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/InledGroup/agent-tunnel","commit_stats":null,"previous_names":["inledgroup/agent-tunnel"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/InledGroup/agent-tunnel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InledGroup%2Fagent-tunnel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InledGroup%2Fagent-tunnel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InledGroup%2Fagent-tunnel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InledGroup%2Fagent-tunnel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InledGroup","download_url":"https://codeload.github.com/InledGroup/agent-tunnel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InledGroup%2Fagent-tunnel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32343571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-27T16:00:36.135Z","updated_at":"2026-04-27T16:00:42.842Z","avatar_url":"https://github.com/InledGroup.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://hosted.inled.es/new-agent-tunnel.png\" alt=\"Agent Tunnel Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n# Agent Tunnel 🚀\n\n[Leer en Español](#agent-tunnel-es-🚀)\n\n**The ultimate bridge for your agent in remote environments.**\n\nAgent Tunnel allows your local instance of Gemini CLI, Claude Code, or any other agent to work transparently on any remote Linux server, router (OpenWrt/Entware), or Mac via SSH. Forget about manual file uploads or constant context switching: with Agent Tunnel, your local machine and the remote server become one.\n\n## ✨ Key Features\n\n- 🔄 **Real-time Sync**: Native integration with **Mutagen** for ultra-fast bi-directional synchronization.\n- ⚡ **Command Interception**: Execute commands like `npm install`, `ls`, or `mkdir` directly on the remote host from your local terminal.\n- 🌐 **Intuitive Web UI**: Configure your sessions, manage credentials, and monitor real-time logs at `http://localhost:3456`.\n- 🔑 **Automatic Key Management**: Automatic generation and injection of SSH keys for a frictionless connection.\n- 🛠️ **Direct Mode (SSH-Only)**: If the remote device doesn't support Mutagen (e.g., older architectures), Agent Tunnel automatically activates direct execution mode.\n\n## 📦 Dependencies and Requirements\n\n### Local Environment\n- **Node.js**: \u003e= 22.12.0\n- **Astro**: ^6.1.1 (For Frontend development)\n- **SSH2**: ^1.17.0 (SSH client for Node.js)\n- **Mutagen**: Required for real-time file synchronization.\n- **SSH Client**: Installed on the system.\n\n### Remote Environment\n- **SSH Server**: Compatible with public key authentication.\n- **SFTP Server**: (Optional) Recommended for Mutagen synchronization.\n\n## 🚀 Quick Start\n\n1. **Start the Bridge**:\n   ```bash\n   ./start-bridge.sh\n   ```\n2. **Configure your Session**:\n   Open `http://localhost:3456` in your browser.\n3. **Connect**:\n   Enter your remote host details, map your local folder, and click **Activate Sync**.\n4. **Work**:\n   Use Gemini CLI (or your preferred agent) in your local folder. All commands and file changes will be automatically reflected on the remote host.\n\n## 🛠️ Architecture and Operation\n\nAgent Tunnel injects smart files into your working directory to facilitate integration:\n- `activate.sh`: Sets up environment variables for the active session.\n- `GEMINI.md`: Provides direct instructions to the AI for using the tunnel.\n- `remote-exec.sh`: The engine that wraps and sends your commands to the remote server.\n\n## 🔧 Troubleshooting\n\n### 1. SSH Key Rejected\nIf automatic injection fails, authorize the key manually from your local terminal:\n```bash\nssh-copy-id -i ~/.ssh/id_rsa_bridge.pub [user]@[remote-ip]\n```\n\n### 2. SFTP / Mutagen Error (Routers and Embedded Systems)\nIf Mutagen fails to copy the agent or cannot find the SFTP server:\n\n**On OpenWrt:**\n```bash\nopkg update \u0026\u0026 opkg install openssh-sftp-server\n```\n\n**On Entware (ASUS, Padavan, etc.):**\n```bash\nopkg update \u0026\u0026 opkg install sftp-server\n```\n\n### 3. Linux Server Permissions\nEnsure the `.ssh` directory has the correct permissions:\n```bash\nmkdir -p ~/.ssh \u0026\u0026 chmod 700 ~/.ssh\ntouch ~/.ssh/authorized_keys \u0026\u0026 chmod 600 ~/.ssh/authorized_keys\n```\n\n### 4. Remote Login on macOS\nTo connect to a remote Mac, enable **Remote Login** in *System Settings \u003e General \u003e Sharing*.\n\n## 🔒 Security\n- All configurations are stored locally in `~/.gemini-bridge/configs/`.\n- Credentials never leave your local environment.\n- SSH keys are managed with standard Unix permissions (600/700).\n\n---\n*Developed with ❤️ by JaimeGH and Gemini.*\n\n---\n\n# Agent Tunnel (ES) 🚀\n\n[Read in English](#agent-tunnel-🚀)\n\n**El puente definitivo para tu agente en entornos remotos.**\n\nAgent Tunnel permite que tu instancia local de Gemini CLI o Claude Code o lo que sea trabaje de forma transparente en cualquier servidor Linux remoto, router (OpenWrt/Entware) o Mac a través de SSH. Olvida las subidas manuales de archivos o el cambio constante de contexto: con Agent Tunnel, tu máquina local y el servidor remoto se convierten en uno solo.\n\n## ✨ Características Principales\n\n- 🔄 **Sincronización en Tiempo Real**: Integración nativa con **Mutagen** para una sincronización bidireccional ultrarrápida.\n- ⚡ **Intercepción de Comandos**: Ejecuta comandos como `npm install`, `ls` o `mkdir` directamente en el remoto desde tu terminal local.\n- 🌐 **Web UI Intuitiva**: Configura tus sesiones, gestiona credenciales y monitoriza logs en tiempo real desde `http://localhost:3456`.\n- 🔑 **Gestión Automática de Llaves**: Generación e inyección automática de llaves SSH para una conexión sin fricción.\n- 🛠️ **Modo Directo (SSH-Only)**: Si el dispositivo remoto no soporta Mutagen (ej. arquitecturas antiguas), Agent Tunnel activa automáticamente el modo de ejecución directa.\n\n## 📦 Dependencias y Requisitos\n\n### Entorno Local\n- **Node.js**: \u003e= 22.12.0\n- **Astro**: ^6.1.1 (Para el desarrollo del Frontend)\n- **SSH2**: ^1.17.0 (Cliente SSH para Node.js)\n- **Mutagen**: Requerido para la sincronización de archivos en tiempo real.\n- **SSH Client**: Instalado en el sistema.\n\n### Entorno Remoto\n- **Servidor SSH**: Compatible con autenticación por llave pública.\n- **SFTP Server**: (Opcional) Recomendado para la sincronización con Mutagen.\n\n## 🚀 Inicio Rápido\n\n1. **Inicia el Bridge**:\n   ```bash\n   ./start-bridge.sh\n   ```\n2. **Configura tu Sesión**:\n   Abre `http://localhost:3456` en tu navegador.\n3. **Conecta**:\n   Introduce los datos de tu host remoto, mapea tu carpeta local y haz clic en **Activate Sync**.\n4. **Trabaja**:\n   Usa Gemini CLI en tu carpeta local. Todos los comandos y cambios de archivos se reflejarán automáticamente en el remoto.\n\n## 🛠️ Arquitectura y Funcionamiento\n\nAgent Tunnel inyecta archivos inteligentes en tu directorio de trabajo para facilitar la integración:\n- `activate.sh`: Configura las variables de entorno para la sesión activa.\n- `GEMINI.md`: Proporciona instrucciones directas a la IA para el uso del túnel.\n- `remote-exec.sh`: El motor que envuelve y envía tus comandos al servidor remoto.\n\n## 🔧 Solución de Problemas (Troubleshooting)\n\n### 1. Llave SSH Rechazada\nSi la inyección automática falla, autoriza la llave manualmente desde tu terminal local:\n```bash\nssh-copy-id -i ~/.ssh/id_rsa_bridge.pub [usuario]@[ip-remota]\n```\n\n### 2. Error de SFTP / Mutagen (Routers y Sistemas Embebidos)\nSi Mutagen falla al copiar el agente o no encuentra el servidor SFTP:\n\n**En OpenWrt:**\n```bash\nopkg update \u0026\u0026 opkg install openssh-sftp-server\n```\n\n**En Entware (ASUS, Padavan, etc.):**\n```bash\nopkg update \u0026\u0026 opkg install sftp-server\n```\n\n### 3. Permisos en el Servidor Linux\nAsegúrate de que el directorio `.ssh` tenga los permisos correctos:\n```bash\nmkdir -p ~/.ssh \u0026\u0026 chmod 700 ~/.ssh\ntouch ~/.ssh/authorized_keys \u0026\u0026 chmod 600 ~/.ssh/authorized_keys\n```\n\n### 4. Remote Login en macOS\nPara conectar con un Mac remoto, activa **Sesión remota** en *Ajustes del Sistema \u003e General \u003e Compartir*.\n\n## 🔒 Seguridad\n- Todas las configuraciones se almacenan localmente en `~/.gemini-bridge/configs/`.\n- Las credenciales nunca salen de tu entorno local.\n- Las llaves SSH se gestionan con permisos estándar de Unix (600/700).\n\n---\n*Developed with ❤️ by JaimeGH and Gemini.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finledgroup%2Fagent-tunnel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finledgroup%2Fagent-tunnel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finledgroup%2Fagent-tunnel/lists"}