claudeVPS — Claude Code en un servidor, con todo lo que le falta
Ámbito: IA / Agentes / Administración de sistemas / Autoalojamiento
Periodo: 2026 - actualidad
Cliente: Proyecto personal — infraestructura del taller Lab 77

Contexto
Trabajo a diario con agentes de IA: gestionan mi ERP, mis notas, mis publicaciones e incluso la infraestructura de mis servidores. Quería que esos agentes funcionaran de forma permanente en un servidor y poder hablar con ellos desde mi teléfono, esté donde esté.
Existían dos herramientas, cada una con sus límites:
- Claude Desktop es cómodo: interfaces para conectores, extensiones y tareas programadas. Pero funciona en un ordenador de escritorio, no en un servidor sin pantalla.
- OpenClaw, una pasarela de agentes de terceros y autoalojada, me ofrecía varios agentes, memoria a largo plazo, canales de chat y automatizaciones. Pero reutiliza la suscripción de Claude de una forma que las condiciones de Anthropic restringen cada vez más: un riesgo que ya no quería correr.
Quedaba Claude Code, la herramienta oficial de Anthropic en línea de comandos. Es potente, funciona en un servidor y, con Remote Control, se pueden manejar sus sesiones desde la app de Claude. Pero en un servidor sin pantalla le falta casi toda la comodidad de Desktop.
Problema
Objetivo: quedarse al 100 % en las herramientas oficiales de Anthropic y dentro de la suscripción, sin pasarela de terceros ni chat casero, recuperando lo que aportaban Desktop y OpenClaw.
Las carencias de Claude Code en un servidor:
- Ninguna interfaz para gestionar los servidores MCP, los plugins, los skills y los agentes: todo se hace en archivos
- Sin tareas programadas reales: los bucles y recordatorios están ligados a una sesión y caducan
- Nada sobrevive a un reinicio del servidor
- Remote Control necesita un terminal real, que un servicio en segundo plano no tiene
- Sin vista general de las sesiones, sin terminal accesible desde un navegador
- Sin memoria compartida entre sesiones y proyectos, sin supervisión del servidor
Solución
claudeVPS no sustituye a Claude Code: añade a su alrededor la capa de experiencia que le falta. El principio: tres puertas, cada una con su función.
- Puerta 1 — las apps oficiales de Claude (móvil, escritorio, web) para conversar con las sesiones, mediante Remote Control. Sin chat casero, por decisión.
- Puerta 2 — un portal web de administración, accesible solo por VPN, que maneja las herramientas oficiales y da una interfaz a todo lo demás.
- Puerta 3 — el terminal SSH, para la administración avanzada.
Lo que Claude Desktop tenía y claudeVPS devuelve al servidor
| Necesidad | Claude Code solo en un servidor | Lo que aporta claudeVPS |
|---|---|---|
| Servidores MCP | Archivos JSON y comandos | Pestaña MCP: formulario guiado o JSON, tres familias visibles (locales, conectores de la cuenta, aportados por un plugin) |
| Plugins | Sin gestor en un servidor | Pestaña Plugins: catálogo oficial, instalación, activación, componentes incluidos |
| Skills y agentes | Archivos Markdown a mano | Pestaña Skills y agentes: creación y edición, con el origen de cada skill |
| Tareas programadas | Bucles ligados a una sesión, que caducan | Pestaña Cron: el prompt se inyecta en una sesión viva al ritmo deseado |
| Persistencia | Todo se detiene al reiniciar | Servicios systemd de usuario, reinicio automático, sesión de rescate al arrancar |
| Varias sesiones | Sin vista general | Pestaña Sesiones: creación, salud y actividad, parada, enlace directo a la app |
| Terminal | Solo por SSH | Terminal web en el navegador, conectado a las sesiones |
| Memoria | Por proyecto, aislada | Sincronización con un grafo de conocimiento Cognee, consultable por todas las sesiones |
| Supervisión | Ninguna | Pestaña Monitoring multiservidor, alertas, actualizaciones Docker validadas a mano |
Lo que aportaba OpenClaw, en versión 100 % oficial
| OpenClaw | Equivalente en claudeVPS |
|---|---|
| Varios agentes especializados | Varias sesiones de Claude Code y subagentes, gestionados en el portal |
| Canales de chat (Mattermost, Matrix, webchat) | Las apps oficiales de Claude, mediante Remote Control |
| Memoria a largo plazo | Memoria nativa de Claude Code + grafo Cognee sincronizado |
| Despertares periódicos (heartbeat) | Cron que inyecta un prompt en una sesión viva |
| Automatizaciones (correo, búsquedas) | Skills y herramientas locales de línea de comandos, compartidas entre motores |
| Agente con un modelo GPT | Codex CLI como segundo motor, gestionado en el mismo portal y accesible desde la app de ChatGPT |
| Observabilidad | Pestañas Monitoring y Logs |
Resultado: OpenClaw ya no es necesario. El portal permite neutralizarlo con un clic, a la espera de su eliminación.
Cómo funciona
- Cada sesión de Claude Code funciona dentro de tmux, que le da el terminal que Remote Control necesita para aparecer en la app.
- Servicios systemd de usuario lo reinician todo al arrancar y vigilan las sesiones, con un límite de reintentos para evitar bucles.
- Una sesión « system » de rescate arranca primero y no depende de nada más: es la que repara el resto.
- El portal (SvelteKit) solo llama a los comandos oficiales
claudeycodex, a tmux, a crontab y a los archivos de configuración. Nunca lanza un modelo por sí mismo: la IA solo funciona cuando se le pide. - La memoria tiene tres niveles: un archivo de contexto por proyecto, una instantánea de recuperación tras incidentes y las memorias de Claude Code, sincronizados con Cognee. Los trabajos se siguen en issues de GitHub.
- Todo es trilingüe (francés, inglés, español), con licencia MIT y un script de instalación: un amigo ya lo desplegó en otro proveedor.
Tecnologías
- Claude Code (Remote Control, subagentes, skills, plugins, MCP) y Codex CLI
- Portal SvelteKit 5, TypeScript, Node, xterm.js para el terminal web
- Linux, systemd, tmux, cron, WireGuard, Caddy, Docker
- Cognee (grafo de conocimiento), Prometheus, Grafana, Loki
- Servidores alojados en Suiza con Infomaniak
Lecciones aprendidas
- «Enviado» no significa «recibido». Una herramienta de mensajería entre sesiones puede responder «éxito» mientras el mensaje se pierde. La única prueba está del lado del destinatario. Para lo importante: un archivo depositado.
- «Conectado» no significa «vivo». Una sesión puede aparecer conectada sin poder trabajar. El buen indicador es la presencia de su proceso de trabajo.
- Cada despertar de un agente cuesta. Se retiró un relé que llamaba a un modelo en cada mensaje. Principio: ninguna ejecución de IA desencadenada por el propio producto.
- Lo nativo no siempre sobrevive a un reinicio. Para algo «siempre encendido» hace falta una capa propia de servicios y reinicios.
- La red de seguridad no debe depender de nada de lo que tiene que reparar.
- Duplicar una configuración la hace divergir. Copias por proyecto mantuvieron durante semanas un servicio dado de baja. Una sola fuente de verdad.
- Una métrica vale más que un mensaje. Dos conclusiones falsas en una noche por no mirar la curva. Y una nota de incidente desactualizada es peor que ninguna.
- Un valor ausente se muestra «—», nunca 0: un falso cero se lee como una medición.
Resultado
Entregable:
- Sesiones de Claude Code siempre disponibles en un servidor, manejables desde la app de Claude en el teléfono o el ordenador
- Un portal de administración de 12 pestañas, en uso diario
- Dos motores, Claude Code y Codex, en la misma interfaz
- La pasarela de terceros OpenClaw sustituida por piezas oficiales
Este proyecto demuestra:
- La capacidad de suplir las carencias de una herramienta sin esquivarla: todo pasa por los comandos oficiales
- Una arquitectura soberana y resiliente: autoalojada, persistente, autorreparable
- Una práctica diaria del trabajo con agentes de IA, y reglas extraídas de incidentes reales
Las funciones de Claude Code en las que se basa claudeVPS, como Remote Control, son recientes y pueden cambiar.
Etiquetas: lab, Claude Code, agentes de IA, Remote Control, autoalojamiento, VPS, MCP, OpenClaw, Codex, SvelteKit