File size: 3,856 Bytes
efe917e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 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`:

```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.