Parear, reparear e compartilhar uma máquina
Toda máquina rodando o Terminull tem uma identidade permanente — um id de beacon e uma chave pública — e exibe um QR terminull://pair que a carrega. Existem dois QRs diferentes, e o que um escaneamento faz depende de qual QR é e de quem o escaneia. Essa distinção é todo o assunto desta seção: um QR entrega a máquina, o outro a empresta.
Parear — vincular uma máquina pela primeira vez
No macOS o assistente de configuração mostra o QR na última página, e a barra de menus o oferece a qualquer momento em Adicionar dispositivo por QR. Em um servidor Linux sem interface, o serviço terminull imprime a URL de pareamento como texto (um QR no terminal é ilegível via SSH); você pode colá-la no app ou arrastá-la para a janela do Mac.
No Windows o instalador mostra o QR na última etapa, e o ícone da bandeja o oferece a qualquer momento em Pair a phone (QR) — ou execute terminull qr em qualquer terminal.
Escanear pelo app vincula a máquina à sua conta — você se torna o proprietário. O app registra o id de beacon e a chave pública; a máquina então consulta uma vez seu token de autenticação permanente e fica online. O QR carrega apenas o id de beacon, a chave pública da máquina, uma chave efêmera de troca, o endereço do seu relay e um código de vínculo de uso único — nunca seu código, suas sessões ou credenciais.
Obter o QR em uma máquina sem interface
Um serviço recém-instalado imprime um QR de pareamento na própria saída na primeira vez que inicia sem estar pareado, e para de imprimi-lo assim que um dispositivo o vincula. Para obter um a qualquer momento depois, peça ao serviço em execução:
terminull-admin qr # print a QR (needs the service running)
terminull-admin qr --url # just the pairing link, on stdout
O QR é desenhado na saída do serviço, não no terminal em que você digitou o comando — seu terminal recebe o link de volta. Com systemd essa saída é o journal, então exiba-o de lá:
journalctl --user -u terminull --no-pager -o cat -n 40
-o cat não é opcional. Sem ele, o journald prefixa cada linha com data/hora e nome da unidade, o que desloca lateralmente cada fileira do código: ele não vai escanear, por melhor que pareça à primeira vista.
Via SSH o link costuma ser mais prático que a imagem. terminull-admin qr --url imprime uma URL pura que você pode colar no app — ou encaminhá-la ao seu próprio renderizador, evitando o journal por completo: terminull-admin qr --url | qrencode -t ANSI.
Dois pontos que costumam confundir: o instalador coloca o comando dentro do ambiente do próprio serviço, então se o seu shell não o encontrar use o caminho completo ~/.local/share/terminull/venv/bin/terminull-admin; e o comando conversa com o serviço em execução por um socket local, de modo que “terminull is not running” significa exatamente isso: inicie-o com systemctl --user start terminull e tente de novo. Trate o que for impresso como um QR de proprietário, com toda a cautela descrita acima.
Reparear — escanear de novo pela mesma conta
Escanear o QR de proprietário novamente por uma conta que já é dona da máquina é um revínculo, e pode ser repetido com segurança. Ele atualiza a chave pública e o nome armazenados e reabre a janela do token. Nada se perde — suas sessões ficam na própria máquina, não no telefone, então continuam todas lá depois.
Repareie ao adicionar um segundo aparelho seu (um iPad junto do iPhone), reinstalar o app ou redefinir a identidade da máquina com uma desinstalação completa — este último caso regenera a chave, que é exatamente o que o revínculo grava de volta.
O QR de proprietário é um segredo. Se uma conta diferente o escanear, isso não é entrar como convidado — é uma transferência de propriedade. O servidor registra como pendente e ela passa a valer na próxima consulta da máquina, tirando-a da sua conta. Ter um código de vínculo comprova acesso físico à máquina, e por isso ele é tratado como autoridade sobre ela. Para deixar outra pessoa entrar sem abrir mão da propriedade, use o QR de compartilhamento abaixo.
Compartilhar — deixar outra pessoa usar sua máquina
No app, abra Conta, encontre a máquina e toque no ícone de QR ao lado dela. A máquina gera um código novo válido por dois minutos, registra-o no servidor e exibe um QR de compartilhamento com contagem regressiva ao vivo. (Compartilhar não está disponível para máquinas somente-LAN, que não têm conta por trás.)
Quando uma conta diferente o escaneia, ela entra como membro: a máquina aparece na lista dela, ela recebe notificações push e pode rodar sessões nela. A propriedade não muda e o token de autenticação da máquina fica intacto. Membros que já entraram podem reescanear a qualquer momento sem que você abra uma nova janela.
A expiração é imposta pelo servidor, não apenas exibida. Um escaneamento sem código correspondente é recusado com “esta máquina não está sendo compartilhada agora”, e um fora do prazo com “este código de compartilhamento expirou — peça um novo QR ao proprietário”. Assim, uma captura de tela de um QR antigo não serve para nada, que é justamente a intenção: compartilhar é um ato deliberado e momentâneo, não uma permissão permanente.
Qual QR estou vendo?
| QR de proprietário | QR de compartilhamento | |
|---|---|---|
| Onde encontrar | Assistente de configuração, ou barra de menus → Adicionar dispositivo por QR | App → Conta → o ícone de QR ao lado de uma máquina |
| Quanto tempo dura | Até a identidade da máquina ser redefinida | Dois minutos, com contagem regressiva |
| Sua própria conta escaneia | Repareia — seguro repetir | Nada de novo; você já a tem |
| A conta de outra pessoa escaneia | Assume a propriedade da máquina | Entra como membro; você continua proprietário |
| Pode tirar print? | Não — trate como uma senha | Inofensivo depois dos dois minutos |
Pareamento somente por LAN
Uma máquina configurada com pairing_mode = "lan" pareia inteiramente na sua rede local: o QR é marcado como somente-LAN, o app pula o vínculo de conta e nenhum servidor participa em momento algum. A máquina só fica acessível a partir da mesma rede, e notificações push e assistentes de IA na nuvem ficam indisponíveis. Ela também não pode ser compartilhada — compartilhar é um conceito mediado pelo servidor, e não há servidor nesse modo.
O núcleo do Terminull Service é feito para ser aberto. A estrutura do código-fonte, a referência completa de blocos e o design de transferência de controle estão junto disso na pasta docs/ do repositório. Dúvidas: hello@terminull.dev.