Saltar al contenido

Por qué estamos creando Setup

Un calendario para el equipo no debería empezar con una tarde configurando servidores. Esto es lo que hace Setup hoy y lo que queda por hacer.

Encuentras un proyecto que hace lo que necesitas. Abres el README. Te pide Docker, una base de datos y ajustes que no conoces. Tú solo querías un calendario para el equipo.

Ese es el problema que queremos resolver con Setup. Pega un repositorio, un Space de Hugging Face o una página de documentación. También puedes describir la app que necesitas. Setup escribe una receta, te la muestra y ejecuta la app en un entorno aislado cuando confirmas.

Hoy las apps se ejecutan en tu propio equipo o servidor, en casa o en la oficina. Alguien debe conectarlo primero. Setup Cloud llegará para quienes prefieran que alojemos sus apps. Aún no está disponible.

Revisa antes de ejecutar

Durante el análisis, Setup lee los archivos del proyecto como datos. No instala dependencias ni ejecuta su código. Si hay una receta en el catálogo, tiene prioridad. Si no, los detectores buscan instrucciones, como un archivo Compose. Un modelo configurado puede ayudar a completar lo que falte.

El resultado es setup.json. Esta es la receta del catálogo para Uptime Kuma, que comprueba si los sitios web están disponibles.

{
  "version": 1,
  "slug": "uptime-kuma",
  "name": "Uptime Kuma",
  "source": {
    "kind": "github",
    "url": "https://github.com/louislam/uptime-kuma"
  },
  "services": {
    "app": {
      "image": "louislam/uptime-kuma:2.5.6-slim",
      "env": { "UPTIME_KUMA_DB_TYPE": "sqlite" },
      "ports": [{ "container": 3001 }],
      "volumes": [{ "name": "data", "path": "/app/data" }],
      "egress": "public",
      "resources": { "memoryMb": 512 }
    }
  },
  "expose": { "service": "app", "port": 3001 },
  "checks": { "http": { "path": "/" } }
}

Puedes ver la imagen que ejecuta, dónde guarda los datos y cómo comprueba Setup que se ha iniciado. El acceso a internet es explícito porque un monitor necesita consultar otros sitios. La receta no puede pedir modo privilegiado ni acceso al socket de Docker.

Una receta sigue siendo un plan. Algunos proyectos necesitan cambios antes de funcionar. Setup muestra lo que ha encontrado para que revises los ajustes.

Un calendario para un compañero, una receta para quien desarrolla

En la vista sencilla puedes pedir un calendario o un lugar para las fotos de familia. El asistente propone una app y pregunta antes de hacer cambios. Puedes probar Immich para las fotos o un gestor de contraseñas para la oficina.

La vista detallada muestra recetas y registros. Los desarrolladores pueden editar una receta, volver a ejecutarla y comprobarla localmente con la CLI.

Los equipos comparten espacios con roles. Team y Business añaden políticas, solicitudes de aprobación y un registro de auditoría. Un catálogo privado permite iniciar las apps internas que habéis elegido. Estos controles están implementados y se pueden activar a petición. Los planes de pago no están a la venta.

Después del inicio

Una prueba termina tras una hora y elimina sus datos. Consérvala antes si la necesitas. Setup activa las copias diarias y comprueba que la app responde. Puedes revisar los cambios de receta antes de aplicarlos.

Las copias permanecen en el mismo servidor que la app. No son una copia adicional en otro lugar. Esa diferencia importa si falla el propio servidor.

Puedes usar un dominio propio con HTTPS o iniciar varias apps relacionadas como un stack. Si el servidor ya tiene apps, Setup las lista y traslada las que elijas con sus datos. Las copias antiguas quedan detenidas hasta que las elimines. Las carpetas que permanecen en su ubicación original aún no se incluyen en las copias. Una app trasladada recibe una dirección nueva.

Las cuentas siguen siendo tuyas

Setup no aloja modelos de lenguaje. Las apps de IA usan tu API de modelos. Con OpenRouter, cada app recibe su propia clave y límite mensual de gasto. Con otra API compatible con OpenAI, aportas una clave creada para esa app.

La misma separación se aplica a los servicios conectados de correo o almacenamiento. Setup registra lo que crea para cada app y lo elimina cuando borras la app. Reintenta la limpieza si falla e indica lo que quede con instrucciones. La mayoría de los módulos aún necesitan pruebas con cuentas reales.

Qué cubre el aislamiento

Las apps tienen límites de recursos y redes separadas. Por defecto no pueden acceder a tu red local. El acceso a internet declarado pasa por un proxy que rechaza direcciones privadas.

Los pasos de compilación aún pueden acceder a la red del servidor. Los contenedores también comparten su kernel salvo que el runner use gVisor o Kata. El modelo de seguridad explica estos límites y la configuración necesaria.

Una insignia verde requiere una ejecución correcta en los runners de Setup. Azul significa que la CI del proyecto informó de un resultado correcto con un token de mantenedor. Ejecutar una receta en tu runner nunca cambia esa insignia.

Lo que queda por llegar

La app de acompañamiento para el teléfono está desarrollada, pero no está en la App Store ni en Google Play. Setup Cloud aún no está disponible. No tenemos una fecha de lanzamiento que anunciar aquí.

Queremos publicar el formato de receta, el analizador, el catálogo y el runner como código abierto. No se ha publicado nada y no hay un repositorio público. La aplicación web y Setup Cloud seguirán siendo privados. Las descargas del runner y la GitHub Action tampoco están publicadas. Los ejemplos de este sitio explican la implementación, no una versión que puedas descargar hoy.

Si tienes un servidor y una app que quieras probar, cuéntanos qué necesitas.