[{"data":1,"prerenderedAt":191},["ShallowReactive",2],{"seo-verification":3,"blog-openhands-agente-de-ia-para-programacion-autonoma-en-tu-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-openhands-agente-de-ia-para-programacion-autonoma-en-tu-vps-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":134,"ctaBody":135,"ctaButton":136,"ctaUrl":137,"relatedPosts":138},375,"openhands-agente-de-ia-para-programacion-autonoma-en-tu-vps",{"fr":12,"en":13,"ar":14,"es":10},"openhands-agent-ia-codage-autonome-self-hosted","openhands-autonomous-ai-coding-agent-on-your-vps","openhands-وكيل-ذكاء-اصطناعي-للبرمجة-على-خادمك-الخاص","OpenHands: agente de IA para programación autónoma en tu VPS","Instala OpenHands v1.23 en tu VPS para que un agente de IA resuelva issues de GitHub de forma autónoma, sin enviar tu código fuente a un servicio en la nube externo.",11,0,false,"2026-09-24T00:00:00+00:00","2026-09-24T12:27:51+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},1,"Inteligencia Artificial","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fopenhands-agent-ia-codage-autonome-self-hosted-poster.svg","GitHub Copilot Workspace y Codex en la nube resuelven issues, escriben tests y envían pull requests — pero procesan tu código en servidores que tú no controlas. OpenHands (antes conocido como OpenDevin) hace lo mismo desde tu propia infraestructura: un agente de IA que toma una issue, clona el repositorio, escribe los cambios, ejecuta los tests y abre una PR — todo dentro de un sandbox Docker aislado en tu VPS. Con 89.000 estrellas en GitHub, una licencia MIT y la versión v1.23.0 publicada el 23 de septiembre de 2026, OpenHands se ha convertido en la referencia de código abierto en ingeniería de software agéntica. Esta guía cubre la instalación completa, la configuración del backend LLM, el hardening del socket Docker y los casos de uso concretos.",[35,39,49,52,80,83,86,89,92],{"type":36,"title":37,"body":38},"h2","OpenHands — el agente de IA que programa en el terminal por ti","OpenHands se basa en una arquitectura sencilla: un servidor web que orquesta uno o más agentes LLM, cada uno ejecutándose dentro de un sandbox Docker efímero aislado. El agente dispone de un shell, acceso al sistema de archivos del proyecto, una conexión a la API de GitHub y un bucle de razonamiento que alterna entre leer código, planificar y ejecutar.\n\nEl benchmark SWE-bench Verified mide la capacidad de un agente para resolver issues reales de GitHub sin asistencia humana. En abril de 2025, OpenHands emparejado con Claude Sonnet alcanzó el 60,6% en este benchmark con una sola trayectoria, y el 66,4% con cinco intentos y un modelo crítico. Bajo la licencia MIT, puedes alojarlo, modificarlo e integrarlo en tus herramientas internas sin restricciones comerciales. La v1.23.0 fue publicada el 23 de septiembre de 2026, con soporte para servidores MCP remotos y sincronización Git para administradores de organización.",{"type":40,"title":41,"items":42},"ul","Lo que OpenHands puede hacer solo",[43,44,45,46,47,48],"**Corregir un bug documentado**: el agente lee la issue de GitHub, localiza el código problemático, escribe la corrección, ejecuta los tests existentes y abre una PR con un mensaje de commit explicativo.","**Añadir una suite de tests**: partiendo de un módulo no cubierto, el agente genera tests unitarios o de integración alineados con el framework existente (pytest, PHPUnit, Jest…).","**Refactorizar código**: extraer una función, renombrar variables para seguir las convenciones, mover un módulo hacia una arquitectura más limpia.","**Completar la documentación**: generar o actualizar docstrings, archivos README y ejemplos de uso de la API a partir del código fuente.","**Analizar un repositorio desconocido**: producir un informe de estructura, identificar dependencias críticas, mapear flujos de datos entre módulos.","**Abrir y describir una pull request**: generar el título, el cuerpo de la PR con los cambios explicados, los tests que pasan e instrucciones de revisión para el equipo.",{"type":36,"title":50,"body":51},"Requisitos numéricos antes de la instalación","OpenHands es un orquestador ligero, pero lanza contenedores sandbox por cada tarea. Los requisitos varían según el backend LLM elegido.\n\n**Hardware mínimo (API en la nube — Claude, GPT-4, Gemini):**\n- RAM: 4 GB mínimo, 8 GB recomendados para tareas concurrentes\n- CPU: 2 vCPU mínimo, 4 vCPU para una experiencia fluida\n- Almacenamiento: 20 GB libres (imágenes Docker + espacios de trabajo de proyectos)\n- SO: Linux con Docker 24+ (Ubuntu 22.04 LTS o Debian 12 recomendados)\n\n**Hardware si se combina con Ollama (LLM local):**\n- RAM: 16 GB mínimo (8 GB para el modelo 7B cuantizado + 4 GB para el SO + margen)\n- VRAM GPU: opcional pero muy recomendable — sin GPU, la inferencia es 10–30× más lenta\n- Almacenamiento: 40 GB libres (modelos Ollama + Docker)\n\n**Versiones de software:**\n- Docker Engine 24.0 o posterior (verifica con `docker --version`)\n- Docker Compose v2 (incluido en Docker Desktop y Docker Engine 24+)\n- Linux kernel 5.4+ (requerido para el aislamiento del sandbox)\n\nEl puerto 3000 debe ser accesible desde tu navegador o VPN. Nunca lo expongas directamente a internet — usa un reverse proxy Nginx con HTTPS.",{"type":53,"title":54,"steps":55},"steps","Instalar OpenHands en un VPS en 8 pasos",[56,59,62,65,68,71,74,77],{"title":57,"body":58},"Instalar Docker Engine en tu VPS","En Ubuntu 22.04 o Debian 12, instala Docker con el script oficial:\n\n```bash\ncurl -fsSL https:\u002F\u002Fget.docker.com | sh\nsudo usermod -aG docker $USER\nnewgrp docker\n```\n\nVerifica la instalación:\n\n```bash\ndocker --version\ndocker compose version\n```",{"title":60,"body":61},"Crear el directorio de trabajo","Crea una carpeta dedicada para OpenHands y sus datos persistentes:\n\n```bash\nmkdir -p \u002Fopt\u002Fopenhands\u002F.openhands\ncd \u002Fopt\u002Fopenhands\n```\n\nLa carpeta `.openhands` almacena la configuración persistente: claves API, historial de conversaciones, ajustes del agente.",{"title":63,"body":64},"Lanzar OpenHands con Docker","Inicia OpenHands con el comando oficial:\n\n```bash\ndocker run -it --rm --pull=always \\\n  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev\u002Fall-hands-ai\u002Fruntime:latest \\\n  -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock \\\n  -v \u002Fopt\u002Fopenhands\u002F.openhands:\u002F.openhands \\\n  -p 127.0.0.1:3000:3000 \\\n  --add-host host.docker.internal:host-gateway \\\n  --name openhands-app \\\n  docker.all-hands.dev\u002Fall-hands-ai\u002Fopenhands:latest\n```\n\nEl flag `--pull=always` garantiza que ejecutas la última imagen estable. OpenHands está disponible en `http:\u002F\u002Flocalhost:3000`.",{"title":66,"body":67},"Alternativa: desplegar con Docker Compose","Para una gestión más sencilla, crea un archivo `compose.yml` en `\u002Fopt\u002Fopenhands`:\n\n```yaml\nservices:\n  openhands:\n    image: docker.all-hands.dev\u002Fall-hands-ai\u002Fopenhands:latest\n    container_name: openhands-app\n    pull_policy: always\n    ports:\n      - \"127.0.0.1:3000:3000\"\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - .\u002F.openhands:\u002F.openhands\n    extra_hosts:\n      - host.docker.internal:host-gateway\n    restart: unless-stopped\n```\n\nInicia la stack:\n\n```bash\ndocker compose up -d\ndocker compose logs -f\n```",{"title":69,"body":70},"Configurar el backend LLM en la interfaz","Abre `http:\u002F\u002Flocalhost:3000` (o tu dominio HTTPS). En el primer inicio, OpenHands solicita:\n\n1. **Proveedor LLM**: elige `Anthropic`, `OpenAI`, `Google` u `openai-compatible` para Ollama\n2. **Modelo**: `claude-sonnet-4-5` (mejor ratio calidad\u002Fcoste) o `claude-opus-4-5` para tareas complejas\n3. **Clave API**: pega tu clave de Anthropic u OpenAI\n\nEstos ajustes se guardan en `~\u002F.openhands\u002Fconfig.toml` y persisten entre reinicios.",{"title":72,"body":73},"Conectar OpenHands a GitHub","Para que OpenHands pueda clonar repos privados, leer issues y abrir PRs, configura un Personal Access Token de GitHub:\n\n1. En GitHub: **Configuración → Herramientas de desarrollador → Tokens de acceso personal → Tokens de grano fino**\n2. Otorga permisos: `Contents` (lectura\u002Fescritura), `Pull requests` (lectura\u002Fescritura), `Issues` (lectura)\n3. En la interfaz de OpenHands: **Ajustes → Git** → pega el token",{"title":75,"body":76},"Configurar el reverse proxy Nginx con HTTPS","Nunca expongas el puerto 3000 directamente. Usa Nginx como reverse proxy:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name openhands.tu-dominio.com;\n\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fopenhands.tu-dominio.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fopenhands.tu-dominio.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_http_version 1.1;\n        proxy_read_timeout 600s;\n    }\n}\n```\n\nObtén el certificado:\n\n```bash\ncertbot --nginx -d openhands.tu-dominio.com\n```",{"title":78,"body":79},"Probar con una primera tarea","Abre la interfaz, pega la URL de una issue de GitHub (ej. `https:\u002F\u002Fgithub.com\u002Ftu-org\u002Ftu-repo\u002Fissues\u002F42`) en el campo de tarea y haz clic en **Iniciar**.\n\nOpenHands hará lo siguiente:\n1. Leer la issue y planificar el enfoque\n2. Clonar el repositorio en el sandbox\n3. Explorar el código, escribir los cambios\n4. Ejecutar los tests (`pytest`, `npm test`, etc.)\n5. Mostrar un resumen y ofrecer abrir una PR",{"type":36,"title":81,"body":82},"Configurar el backend de IA: Claude, GPT-4 u Ollama","OpenHands admite cualquier proveedor compatible con la API de OpenAI, además de los proveedores nativos Anthropic, Google y Azure. La elección del modelo es el factor más determinante en la calidad de los resultados.\n\n**Claude Sonnet (Anthropic) — recomendado para producción**\n`claude-sonnet-4-5` ofrece la mejor relación calidad\u002Fcoste para la ingeniería de software agéntica. Su ventana de contexto de 200.000 tokens le permite analizar grandes bases de código sin paginación. Espera gastar entre $0,03 y $0,15 por tarea según la complejidad. Configura `LLM_MODEL=anthropic\u002Fclaude-sonnet-4-5`.\n\n**Claude Opus (Anthropic) — para tareas complejas**\n`claude-opus-4-5` ofrece mejor rendimiento en problemas arquitectónicos y refactorizaciones a gran escala, pero a un coste 5–10× superior al de Sonnet. Resérvalo para tareas que superen las capacidades de Sonnet.\n\n**Ollama (LLM local) — para soberanía total**\nSi tu código es especialmente sensible o quieres cero dependencia externa, combina OpenHands con Ollama en el mismo VPS. Configura `LLM_BASE_URL=http:\u002F\u002Fhost.docker.internal:11434` y `LLM_MODEL=openai\u002Fqwen2.5-coder:32b`. Los modelos `qwen2.5-coder` 32B logran los mejores resultados entre los modelos de pesos abiertos en benchmarks de programación. Inconveniente: la inferencia en CPU es 10–30× más lenta que una llamada API.\n\n**Variables de entorno clave:**\n```bash\nLLM_MODEL=anthropic\u002Fclaude-sonnet-4-5\nLLM_API_KEY=sk-ant-...\nAGENT=CodeActAgent\n```",{"type":84,"body":85},"tip","**Asegurar docker.sock — socket proxy y modo rootless.** Montar `\u002Fvar\u002Frun\u002Fdocker.sock` dentro de un contenedor es equivalente a dar acceso root completo a la máquina anfitriona: cualquier contenedor con acceso a este socket puede crear nuevos contenedores, montar volúmenes arbitrarios y escalar privilegios.\n\nDos enfoques para reducir esta superficie de ataque:\n\n**Opción 1 — Socket proxy (Tecnativa\u002Fdocker-socket-proxy):** interpón un proxy que filtre las llamadas a la API de Docker. OpenHands solo necesita `POST \u002Fcontainers\u002Fcreate`, `GET \u002Fcontainers\u002F{id}\u002Fjson`, `POST \u002Fcontainers\u002F{id}\u002Fstart` y `DELETE \u002Fcontainers\u002F{id}`. El socket proxy bloquea todo lo demás.\n\n```yaml\nservices:\n  socket-proxy:\n    image: tecnativa\u002Fdocker-socket-proxy\n    environment:\n      CONTAINERS: 1\n      POST: 1\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n    restart: unless-stopped\n\n  openhands:\n    image: docker.all-hands.dev\u002Fall-hands-ai\u002Fopenhands:latest\n    environment:\n      - DOCKER_HOST=tcp:\u002F\u002Fsocket-proxy:2375\n    depends_on:\n      - socket-proxy\n    restart: unless-stopped\n```\n\n**Opción 2 — Docker rootless:** ejecuta Docker en modo rootless (tu usuario del sistema, no root). El socket queda entonces en `\u002Frun\u002Fuser\u002F1000\u002Fdocker.sock` y pertenece a tu usuario. Comprometer este socket no escala más allá de los privilegios de ese usuario. Actívalo con `dockerd-rootless-setuptool.sh install`.",{"type":36,"title":87,"body":88},"Casos de uso concretos","**Caso 1 — Resolver un bug documentado en una issue de GitHub**\nPega la URL de una issue bien descrita en OpenHands. El agente lee la issue, busca los archivos implicados con `grep` y el explorador de código, escribe la corrección, ejecuta la suite de tests y propone abrir una PR. Para bugs aislados con buena documentación, la tasa de éxito es alta sin intervención humana.\n\n**Caso 2 — Generar tests para un módulo no cubierto**\nIndica el módulo objetivo: `Escribe tests unitarios para el módulo src\u002Fpayments\u002Fstripe.py, apuntando al 80% de cobertura con pytest. Los mocks deben usar unittest.mock.` El agente analiza el módulo, identifica los casos límite y genera una suite de tests coherente con los patrones existentes.\n\n**Caso 3 — Analizar un repositorio de código abierto antes de hacer un fork**\nAntes de integrar una dependencia o hacer un fork de un proyecto, pregunta a OpenHands: `Analiza el repositorio https:\u002F\u002Fgithub.com\u002Forg\u002Frepo. Identifica dependencias críticas, puntos de acoplamiento fuerte, tests faltantes y CVEs conocidos en las dependencias directas.`\n\n**Caso 4 — Actualizar una dependencia principal**\nLas migraciones de versiones principales (Django 4 → 5, React 18 → 19, Laravel 10 → 11) implican muchos archivos. OpenHands puede leer el changelog oficial, aplicar los cambios mecánicamente y volver a ejecutar los tests para identificar lo que aún necesita atención manual.",{"type":36,"title":90,"body":91},"Resolución de problemas — errores comunes","**`permission denied while trying to connect to the Docker daemon socket`**\nEl usuario que ejecuta OpenHands no está en el grupo `docker`. Corrígelo con:\n```bash\nsudo usermod -aG docker $USER && newgrp docker\n```\n\n**`Container exited with OOM kill (exit code 137)`**\nEl sandbox se quedó sin memoria. Aumenta la RAM disponible en el VPS o limita las tareas concurrentes. Añade `--memory=4g` al contenedor sandbox en la configuración de OpenHands.\n\n**`LLM timeout after 120s`**\nEn bases de código grandes, el agente envía contextos grandes al LLM. Aumenta `LLM_TIMEOUT` en la configuración o reduce el alcance de la tarea.\n\n**`No such container: openhands-sandbox-xxx`**\nEl contenedor sandbox fue eliminado entre dos acciones. Reinicia la tarea desde el principio — OpenHands no reanuda tareas interrumpidas por un reinicio de Docker.\n\n**`Rate limit exceeded` (Anthropic\u002FOpenAI)**\nAñade `LLM_NUM_RETRIES=5` y `LLM_RETRY_MIN_WAIT=30` en la configuración para que OpenHands reintente automáticamente.",{"type":93,"title":94,"headers":95,"rows":100},"comparison","OpenHands vs Codex en la nube vs Devin",[96,97,98,99],"Criterio","OpenHands self-hosted","GitHub Copilot Workspace","Devin (Cognition)",[101,106,111,116,121,126,130],[102,103,104,105],"Coste mensual","0 € (+ coste API LLM)","19 $\u002Fmes (Copilot Pro)","500 $\u002Fmes (plan Team)",[107,108,109,110],"Código enviado al exterior","No (el código permanece en el VPS)","Sí (GitHub\u002FMicrosoft)","Sí (Cognition)",[112,113,114,115],"Backend LLM configurable","Sí (Claude, GPT, Ollama…)","No (modelo Microsoft)","No (modelo Cognition)",[117,118,119,120],"Puntuación SWE-bench Verified","66,4% (5 intentos, Claude)","No publicado","~49% (última publicación)",[122,123,124,125],"Licencia","MIT (código abierto)","Propietaria","Propietaria (SaaS)",[127,128,129,129],"VPS requerido","Sí (4 GB RAM mínimo)","No",[131,132,133,132],"Autonomía completa (PR automática)","Sí","Parcial","Despliega OpenHands en un VPS ServOrbit","Un VPS ServOrbit te da acceso root completo, infraestructura lista para Docker y una IPv4 dedicada. OpenHands funciona íntegramente en tu infraestructura — tu código fuente nunca abandona tu servidor. Elige el plan de 8 GB RAM para un confort óptimo con modelos LLM vía API en la nube.","Desplegar OpenHands en VPS","\u002Fvps-cloud",[139,157,174],{"id":140,"slug":141,"slugs":142,"title":146,"excerpt":147,"readTime":140,"views":18,"isPinned":19,"publishedAt":148,"updatedAt":149,"category":150,"categories":151,"featuredImage":30,"bgImage":31,"posterImage":153,"relatedSolution":154},8,"como-alojar-flowise-en-un-vps",{"fr":143,"en":144,"ar":145,"es":141},"heberger-flowise-vps","how-to-host-flowise-on-a-vps","كيفية-استضافة-flowise-على-خادم-vps","Cómo alojar Flowise en un VPS","Despliegue Flowise en su VPS: cree agentes y chatbots de IA sin código con Docker y SSL. Variables de entorno, RAG con Ollama, actualizaciones y troubleshooting.","2026-06-12T00:00:00+00:00","2026-09-19T02:00:43+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[152],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-flowise-vps-poster.svg",{"categorySlug":155,"appSlug":156},"inteligencia-artificial","flowise",{"id":158,"slug":159,"slugs":160,"title":164,"excerpt":165,"readTime":140,"views":18,"isPinned":19,"publishedAt":166,"updatedAt":167,"category":168,"categories":169,"featuredImage":30,"bgImage":31,"posterImage":171,"relatedSolution":172},271,"github-copilot-ai-credits-recuperar-control-con-un-vps",{"fr":161,"en":162,"ar":163,"es":159},"github-copilot-ai-credits-alternative-vps","github-copilot-ai-credits-take-back-control-with-a-vps","github-copilot-ai-credits-استعد-السيطرة-مع-خادم-vps","GitHub Copilot AI Credits: recuperar el control en un VPS","Desde junio de 2026, Copilot factura en AI Credits y la previsibilidad desaparece. Aloje Ollama o Tabby en un VPS: costo fijo y prompts privados.","2026-08-16T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[170],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fgithub-copilot-ai-credits-alternative-vps-poster.svg",{"categorySlug":155,"appSlug":173},"ollama",{"id":175,"slug":176,"slugs":177,"title":181,"excerpt":182,"readTime":183,"views":23,"isPinned":19,"publishedAt":184,"updatedAt":167,"category":185,"categories":186,"featuredImage":30,"bgImage":31,"posterImage":188,"relatedSolution":189},122,"alojar-hermes-agent-en-un-vps",{"fr":178,"en":179,"ar":180,"es":176},"heberger-hermes-agent-vps","host-hermes-agent-on-a-vps","استضافة-hermes-agent-على-خادم-vps","Alojar Hermes Agent en un VPS","Aloje Hermes Agent de Nous Research en su VPS: el agente de IA open source autoaprendiente que le recuerda. Build Docker, LLM y copia de la memoria.",3,"2026-02-22T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[187],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-hermes-agent-vps-poster.svg",{"categorySlug":155,"appSlug":190},"hermes",1790253278006]