Emparejar, volver a emparejar y compartir una máquina
Cada máquina que ejecuta Terminull tiene una identidad permanente — un id de beacon y una clave pública — y muestra un QR terminull://pair que la contiene. Existen dos QR distintos, y lo que hace un escaneo depende de qué QR es y de quién lo escanea. Esa distinción es todo el contenido de esta sección: un QR entrega la máquina, el otro la presta.
Emparejar — vincular una máquina por primera vez
En macOS el asistente de configuración muestra el QR en su última página, y la barra de menús lo ofrece en cualquier momento en Añadir dispositivo por QR. En un servidor Linux sin interfaz, el servicio terminull imprime la URL de emparejamiento como texto (un QR en el terminal es ilegible por SSH); puedes pegarla en la app o arrastrarla a la ventana del Mac.
En Windows el instalador muestra el QR en su último paso, y el icono de la bandeja lo ofrece en cualquier momento en Pair a phone (QR); o ejecuta terminull qr en cualquier terminal.
Al escanearlo desde la app, la máquina queda reclamada por tu cuenta: te conviertes en su propietario. La app registra el id de beacon y la clave pública; la máquina consulta entonces una vez su token de autenticación permanente y se pone en línea. El QR solo lleva el id de beacon, la clave pública de la máquina, una clave efímera de intercambio, la dirección de su relay y un código de reclamación de un solo uso — nunca tu código, tus sesiones ni tus credenciales.
Obtener el QR en una máquina sin interfaz
Un servicio recién instalado imprime un QR de emparejamiento en su propia salida la primera vez que arranca sin emparejar, y deja de hacerlo en cuanto un dispositivo lo reclama. Para conseguir uno en cualquier momento posterior, pídeselo al servicio en marcha:
terminull-admin qr # print a QR (needs the service running)
terminull-admin qr --url # just the pairing link, on stdout
El QR se dibuja en la salida del servicio, no en el terminal donde escribiste el comando: tu terminal recibe el enlace a cambio. Con systemd esa salida es el journal, así que muéstralo desde ahí:
journalctl --user -u terminull --no-pager -o cat -n 40
-o cat no es opcional. Sin esa opción, journald antepone a cada línea una marca de tiempo y el nombre de la unidad, lo que desplaza lateralmente cada fila del código: no se podrá escanear por muy bien que parezca a simple vista.
Por SSH el enlace suele ser más cómodo que la imagen. terminull-admin qr --url imprime una URL simple que puedes pegar en la app, o canalizarla a tu propio renderizador y evitar el journal por completo: terminull-admin qr --url | qrencode -t ANSI.
Dos cosas que suelen despistar: el instalador deja el comando dentro del entorno del propio servicio, así que si tu shell no lo encuentra usa la ruta completa ~/.local/share/terminull/venv/bin/terminull-admin; y el comando habla con el servicio en marcha por un socket local, de modo que «terminull is not running» significa exactamente eso: arráncalo con systemctl --user start terminull e inténtalo otra vez. Trata lo que imprima como un QR de propietario, con toda la precaución descrita arriba.
Volver a emparejar — escanear otra vez desde la misma cuenta
Escanear de nuevo el QR de propietario desde una cuenta que ya es dueña de la máquina es una re-reclamación, y puede repetirse sin riesgo. Refresca la clave pública y el nombre guardados, y vuelve a abrir la ventana del token. No se pierde nada: tus sesiones viven en la propia máquina, no en el teléfono, así que siguen ahí después.
Vuelve a emparejar cuando añadas un segundo dispositivo tuyo (un iPad junto a tu iPhone), reinstales la app o reinicies la identidad de la máquina con una desinstalación completa — este último caso regenera la clave, que es justo lo que la re-reclamación vuelve a escribir.
El QR de propietario es un secreto. Si lo escanea una cuenta distinta, eso no es unirse: es una transferencia de propiedad. El servidor la registra como pendiente y surte efecto la próxima vez que la máquina consulta, sacándola de tu cuenta. Tener un código de reclamación demuestra acceso físico a la máquina, y por eso se trata como autoridad sobre ella. Para dejar entrar a alguien sin ceder la propiedad, usa el QR de compartir que se describe abajo.
Compartir — dejar que otra persona use tu máquina
En la app, abre Cuenta, busca la máquina y toca el icono de QR que hay junto a ella. La máquina genera un código nuevo válido dos minutos, lo registra en el servidor y muestra un QR de compartir con una cuenta atrás en vivo. (Compartir no está disponible en máquinas solo-LAN, que no tienen ninguna cuenta detrás.)
Cuando lo escanea una cuenta distinta, esta se une como miembro: la máquina aparece en su lista, recibe notificaciones push y puede ejecutar sesiones en ella. La propiedad no cambia y el token de autenticación de la máquina queda intacto. Los miembros que ya se unieron pueden volver a escanear cuando quieran sin que abras una ventana nueva.
La caducidad la impone el servidor, no es solo algo que se muestre. Un escaneo sin código coincidente se rechaza con «esta máquina no se está compartiendo ahora mismo», y uno pasado el plazo con «este código de compartir ha caducado: pide al propietario un QR nuevo». Así, una captura de pantalla de un QR de compartir antiguo no sirve de nada, que es justo la idea: compartir es un acto deliberado y momentáneo, no una concesión permanente.
¿Qué QR estoy viendo?
| QR de propietario | QR de compartir | |
|---|---|---|
| Dónde encontrarlo | Asistente de configuración, o barra de menús → Añadir dispositivo por QR | App → Cuenta → el icono de QR junto a una máquina |
| Cuánto dura | Hasta que se reinicie la identidad de la máquina | Dos minutos, con cuenta atrás |
| Lo escanea tu propia cuenta | Vuelve a emparejar — se puede repetir sin riesgo | Nada nuevo; ya la tienes |
| Lo escanea la cuenta de otra persona | Se queda con la propiedad de la máquina | Se une como miembro; tú sigues siendo el propietario |
| ¿Se puede captar en pantalla? | No — trátalo como una contraseña | Inofensivo una vez pasados los dos minutos |
Emparejamiento solo por LAN
Una máquina configurada con pairing_mode = "lan" se empareja por completo en tu red local: su QR se marca como solo-LAN, la app se salta la reclamación de cuenta y no interviene ningún servidor en ningún momento. La máquina solo es accesible desde esa misma red, y no hay notificaciones push ni asistentes de IA en la nube. Tampoco se puede compartir: compartir es un concepto mediado por el servidor, y en este modo no hay servidor.
El núcleo de Terminull Service está pensado para ser abierto. La estructura del código fuente, la referencia completa de bloques y el diseño de transferencia viven junto a esto en el docs/ del repositorio. Preguntas: hello@terminull.dev.