Nueva versión del SDK, v0.8.0 con un nuevo campo « section », y enlace obligatorio a la documentación en la página de integración
Edición: Plantilla actualizada para la v0.8.0
Nueva versión del SDK, v0.8.0 con un nuevo campo « section », y enlace obligatorio a la documentación en la página de integración
Edición: Plantilla actualizada para la v0.8.0
Atención, la tienda se ha actualizado y es más estricta, ahora se requiere documentación obligatoria en las integraciones ![]()
Asegúrate de ejecutar :
npx github:GladysAssistant/integration-store
Para ver si tu integración pasa la validación y corregir tu repositorio si es necesario
(pasa este mensaje a Claude)
¡Nueva versión del SDK: v0.9.0!
En el programa:
Ok, he actualizado la PR de Gladys con 3 cambios:
1. Banner « ¿Su dispositivo no está en la lista? » — ahora destaca Matter y las integraciones externas de la comunidad: « cualquiera puede crear una e publicarla en la tienda, y luego aparece en esta lista »,
2. Deprecación anunciada de Tuya, MELCloud, Telegram y Netatmo — lo hice de las dos maneras para que no haya ambigüedad:
deprecated en los JSON de integraciones, renderizada en IntegrationTags);DeprecationWarning): « pronto será obsoleta en favor de una integración externa equivalente… ambas versiones coexistirán en el catálogo durante la transición — puede seguir usando esta por ahora ».3. Errores de autenticación al reiniciar (código de cierre 4000) — diagnóstico confirmado, y era aún peor: sin la variable de entorno JWT_SECRET, el secreto se regenera en cada arranque de Gladys, y como start() reiniciaba el contenedor existente con el token JWT congelado en su entorno (firmado con el secreto antiguo), la integración entraba en bucle de rechazo sin nunca repararse. Dos correcciones:
EXTERNAL_INTEGRATION_JWT_SECRET) — sobrevive a los reinicios y a las restauraciones de copia de seguridad, en coherencia con los contenedores que valida;start(): antes de reiniciar un contenedor existente, verifyContainerToken inspecciona el token de su entorno (firma con el secreto actual + buen servicio + buena token_version); si está caducado, el contenedor se recrea con un token fresco en lugar de reiniciarse en vano. Esto también repara, en el próximo arranque, los contenedores creados antes de este parche.Para información @cicoub13 @Terdious @Lokkye :
[
{
"store_slug": "callemand/gladys-airzone-cloud",
"level": "error",
"reason": "docker_image: image is not publicly pullable (registry auth denied, HTTP 403)",
"checked_at": "2026-07-23T15:30:08.198Z"
},
{
"store_slug": "cicoub13/gladys-tp-link",
"level": "error",
"reason": "docs/en.md: file not found — user documentation is mandatory",
"checked_at": "2026-07-23T15:30:08.198Z"
},
{
"store_slug": "Terdious/gladys-netatmo",
"level": "error",
"reason": "docs/en.md: file not found — user documentation is mandatory",
"checked_at": "2026-07-23T15:30:08.198Z"
},
{
"store_slug": "Terdious/gladys-tuya",
"level": "error",
"reason": "docs/en.md: file not found — user documentation is mandatory",
"checked_at": "2026-07-23T15:30:08.198Z"
}
]
Fuente: https://integration-store-storage.gladysassistant.com/rejected.json
Debo decir que estoy impresionado por la velocidad de implementación de este nuevo sistema, el número de integraciones ya disponibles y la simplicidad a todos los niveles:
Por supuesto, esto no habría sido posible a este ritmo sin la IA. Pero los decisores (@pierre-gilles) y los prompters han contribuido mucho.
Los próximos meses son muy prometedores en este sentido ^^
@pierre-gilles ¿cómo va la copia de seguridad de las integraciones externas si queremos migrar de PC, por ejemplo?
También añadiré recomendaciones sobre la elección de las imágenes Docker para evitar el uso de imágenes grandes. Preferencia por Alpine, que es ultraligero y muy utilizado en nuestro caso.
Esto me lleva a otra pregunta. ¿No debería Gladys también verificar si la imagen utilizada no es demasiado antigua o susceptible a vulnerabilidades de seguridad? Solo una información antes de instalar la integración.
Se puede añadir también el tamaño de la imagen.
Gracias @Terdious por todos tus desarrollos, efectivamente yo también estoy muy impresionado por la velocidad de desarrollo que podemos tener, es increíble, esto va a revolucionar el proyecto ![]()
Este fin de semana, estaba en la montaña sin red, y sin embargo 13 integraciones pudieron ser publicadas en la tienda, impensable en el antiguo sistema de integraciones ^^
Es genial, ¡vamos a empezar con una tienda ya llena!
Las instalaciones se volverán a instalar automáticamente, ya que todos los datos se almacenan solo en la base de datos ![]()
Aquí está el proceso exacto explicado por Claude:
Qué está en la copia de seguridad. La copia de seguridad de Gladys Plus es un archivo tar.gz que contiene la base de datos SQLite (+ la carpeta DuckDB) — y todo lo que define una integración externa está en la base de datos: la línea t_service (imagen Docker, manifiesto, store_slug, versión, token_version, estado), la configuración (variables de alcance del servicio, incluidos los secretos y tokens OAuth), los dispositivos, las clases de material asignadas, los perfiles de contacto y el secreto JWT del supervisor (EXTERNAL_INTEGRATION_JWT_SECRET, persistido en una variable precisamente para sobrevivir a las restauraciones).
Qué sucede al iniciar en la nueva máquina.
init() reconcilia los contenedores por etiqueta Docker — el comentario del código cita precisamente el caso de restauración: los container_id en la base de datos están obsoletos; como no hay contenedores en el nuevo PC, se establecen en null (externalIntegration.init.js:70-84).start(), no hay container_id → createIntegrationContainer: la imagen Docker se vuelve a descargar desde el registro, se crea un nuevo contenedor con un JWT recién firmado (válido, ya que el secreto y el token_version provienen de la base de datos restaurada), la red privada y los subcontenedores se recrean, y la configuración se envía de nuevo a la integración al conectarse.Los dos límites a conocer.
/data no se copia de seguridad. Cada integración tiene un enlace <base>/external-integrations/<selector> → /data (y los volúmenes de los subcontenedores viven debajo). La doctrina es que las integraciones sean sin estado (los estados viven en Gladys), por lo que en la práctica no debería romper nada — pero una integración que almacene un estado local (o un subcontenedor tipo broker con persistencia) comienza de nuevo. Si queremos cubrir esto algún día, tendríamos que incluir esta carpeta en la copia de seguridad, con la pregunta del tamaño a decidir.¡Bien visto! Lo corregiré.
Es el caso de la plantilla por defecto, recomiendo la imagen Node-Alpine que es súper ligera ![]()
Creo que, para una V1, la propuesta actual es suficiente.
Si un usuario es lo suficientemente técnico como para buscar este tipo de información, la encontrará ya en el repositorio GitHub de la integración, que está referenciado.
También creo que hay que evitar entrar en detalles demasiado técnicos. El objetivo de Gladys es ofrecer un producto limpio, accesible al gran público, con el menos jergón posible.
Las integraciones externas han sido diseñadas precisamente para ser transparentes: el usuario apenas es consciente de que un contenedor externo está en ejecución. La experiencia es deliberadamente muy cercana a la de las integraciones nativas de Gladys hoy ![]()
¡Hoy voy muy rápido! ![]()
Ya he fusionado en la rama master del repositorio Gladys:
Luego, publiqué una nueva imagen de desarrollo:
gladysassistant/gladys:dev
La desplegué en mi instancia de producción. Ya he migrado mi integración MelCloud al nuevo sistema y estoy haciendo lo mismo con Telegram.
El objetivo es validar todo esto en condiciones reales durante unos días. Si todo va bien, la funcionalidad se publicará esta semana.
Estoy bastante confiado, por ahora todo va muy bien.
![]()
voy a compartir esta imagen en X
¡Vaya, estoy super contento con las integraciones externas en mi casa!!
Creo que voy a lanzar una versión el jueves por la noche! ![]()
¡Ya 20 integraciones externas! ![]()
Cuando se sabe que solo hemos tenido 36 integraciones internas en 6 años de Gladys v4, ya es un ritmo increíble. Y creo que solo se acelerará a medida que convenzamos a más desarrolladores de contribuir.
¡Creo que realmente tenemos algo! ![]()
¡Lanzamiento MAÑANA POR LA NOCHE:fire:
bueno, no he podido evitar leer las notas de la versión 4.84.0 en el blog y es increíble ![]()
Pregunta pequeña para las integraciones internas, que ahora existen también de forma externa, y que continúan en paralelo: ¿habrá/ha habido una herramienta de « conmutación automática » de interno a externo?
Por ejemplo, con Telegram, mis datos están en el interno, hago clic en un botón y todo pasa al externo y se desactiva el interno? (¡oh, sí que soy vago!!
)
¡Hola @mutmut! ¡Gracias por tu mensaje! ![]()
No, no hay un cambio automático. Pero tranquilo, es realmente muy sencillo:
Vas a la integración actual de Telegram, copias tu token, desactivas la integración, luego instalas la nueva integración externa, pegas tu token y sigues el proceso de emparejamiento. ![]()
Reconozco que prefiero que vosotros (los usuarios avanzados de Gladys) paséis por el proceso de instalación “clásico” que luego seguirán todos los usuarios. Así podremos tener verdaderas experiencias de instalación de las integraciones externas y mejorar el proceso si es necesario. ![]()