lexia / docs /25-DOS-PROYECTOS-UN-ROBOT.md
davidhf2026's picture
LexIA 2026-09-16 19:37
efe917e
|
Raw History Blame Contribute Delete
3.86 kB

Dos proyectos, un robot, un PC

En el mismo equipo hay otro proyecto hablando con el mismo Reachy. Los síntomas que ya has visto —dos voces a la vez, un panel cerrado que sigue escuchando y hablando— no son fallos del robot: son dos programas cogiendo el mismo micrófono y el mismo altavoz. Esto es lo que se ha hecho para que convivan.

El reparto

El robot es uno: micrófono, altavoz y motores no se comparten. Lo que sí se reparte son los puertos, y ahí cada proyecto necesita su franja.

LexIA (por defecto) Sugerido para el otro proyecto
Panel web 7862 7962
Motor de lenguaje 8080 8180
Embeddings 8081 8181
Cerrojo del robot 7869 7969

Los cuatro son configurables en runtime/settings/app.json:

"puertos": { "panel": 7862, "llm": 8080, "embeddings": 8081, "cerrojo": 7869 }

Lo importante es el motor: dos llama-server en el mismo puerto se pisan sin avisar, y el segundo simplemente no arranca o responde el primero. Si el otro proyecto usa OpenAI y no levanta motor local, el único conflicto real es el panel.

El cerrojo: por qué ya no pueden sonar dos voces

Al arrancar, LexIA ocupa un puerto antes de tocar el audio. Si ya está ocupado, no arranca y lo dice con el número delante:

Ya hay otra instancia de LexIA usando el robot (puerto 7869). Cierre la anterior antes de abrir esta, o cambie el puerto del cerrojo si son dos proyectos distintos.

Se eligió un puerto y no un fichero de bloqueo por una razón práctica: cuando el proceso muere —aunque muera mal, aunque se cierre la consola— el sistema operativo libera el puerto solo. Un fichero se quedaría ahí mintiendo.

Esto protege de dos LexIA. Del otro proyecto no protege, porque ese no mira nuestro cerrojo: para eso está el reparto de arriba y la regla de abajo.

La regla que hay que cumplir a mano

Solo una aplicación con el robot cogido a la vez. Antes de arrancar una, cerrar la otra. El daemon de Reachy Mini solo entrega el audio a una app, pero si una se lanza a mano y otra desde el daemon, las dos creen tenerlo.

En la práctica, para las pruebas de hoy: cuando pruebes LexIA, que el otro proyecto no esté corriendo, y al revés. Cuando lo instales en el daemon, que haya un solo --startup-app configurado, no dos. Una prueba o comprobación que encuentre un motor ya activo lo reutiliza y no lo apaga al terminar; solo el proceso que lo creó o la acción explícita de mantenimiento puede liberarlo.

«Callar ahora»

El panel tiene ahora un botón Callar ahora, siempre disponible. Corta el audio en curso aunque esté a media frase, suelta la sesión remota y deja de escuchar, sin cerrar la app ni perder la configuración. Es el botón que hace falta justo cuando algo va mal, que es cuando no apetece buscar una consola.

Cerrar de verdad al cerrar

Había un fallo real detrás de «cierro el panel y sigue hablando»: al terminar se cerraba el audio antes de cortar lo que estuviera sonando, así que la frase a medias seguía su curso. Ahora el orden es el correcto: primero callar, después cerrar el micrófono y el altavoz, después soltar el cerrojo.

Lo que avisa el panel

El botón Comprobar incluye ahora un bloque Puertos: qué puertos usa LexIA y cuáles están ocupados por otro. Si el cerrojo aparece ocupado, hay otra instancia con el robot —o un programa ajeno en ese puerto— y conviene resolverlo antes de culpar al micrófono.

Y lo de la antena

Dijiste que no hace falta abrir la app tocando la antena. Sigue funcionando si se instala en el daemon, pero ya no es el camino obligatorio: para las pruebas basta con arrancar la app y hablarle. Eso además reduce el riesgo de que el daemon abra LexIA por su cuenta mientras el otro proyecto tiene el robot.