
Aplicativo desktop para registrar uma conta Signal e vincular o Signal Desktop sem exigir um smartphone, utilizando os protocolos criptográficos do Signal para provisionamento seguro de dispositivos.
Um aplicativo de desktop para registrar uma conta no Signal e vinculá-la ao Signal Desktop, tudo sem precisar de um smartphone.

Este utilitário evita a necessidade de um smartphone, mas ainda requer uma forma de receber mensagens SMS durante a fase de configuração. O Signal introduziu recentemente contas sem número, mas isso ainda requer Android e os serviços do Google Play. É bem provável que ofereçam opções alternativas de pagamento no futuro.
Baixe a versão mais recente!
Há várias razões pelas quais esta ferramenta pode ser interessante para você:
A segurança das suas conversas no Signal é tão baixa quanto a segurança dos dispositivos nos quais ele está instalado:
Se o seu dispositivo for perdido ou roubado quando não estiver bloqueado com o seu código de acesso, é claro que alguém poderia ler as mensagens nele. Da mesma forma, sabe-se que órgãos de aplicação da lei usam ferramentas forenses para invadir dispositivos apreendidos, tornando possível ler qualquer coisa no dispositivo, incluindo as suas mensagens.
— Segurança em grupos do Signal, Freedom of the Press Foundation
Algumas pessoas não têm um smartphone, e elas deveriam poder usar o Signal :-)
A ferramenta se registra como o dispositivo primário da conta e vincula o Signal Desktop como um secundário. O Signal permite cinco dispositivos vinculados por conta, e esta ferramenta pode ajudar a vinculá-los todos. Isso é útil em situações em que você quer compartilhar uma conta do Signal com um colega, por exemplo.
Atualmente, o Signal Desktop requer um número de telefone e um smartphone para configurar uma conta. Isso pode mudar no futuro, mas até então, você pode usar esta ferramenta.
"Presumo que a sua pergunta seja a respeito do tipo de cadastro por número de telefone que existe no Signal hoje. Isso é algo que estamos analisando, esperançosamente para mais adiante neste ano, adicionando uma forma de se cadastrar sem números de telefone. [...]"
— Ehren Kret, CTO do Signal, 20 de julho de 2026
Baixe o arquivo para o seu sistema na página de releases:
.dmg e arraste o Signal Setup para Aplicativos.AppImage: Torne-o executável (chmod +x Signal_Setup-*.AppImage) e execute-o. Um binário simples signal-setup-linux-* também é publicado, caso você prefira.As versões não são assinadas com um certificado de desenvolvedor pago (US$ 99 por ano para macOS, ainda mais para Windows) e, como resultado, o sistema avisa você após a instalação:
O macOS mostra "não pode ser aberto porque é de um desenvolvedor não
identificado." Clique com o botão direito no app e escolha Abrir, depois confirme. Você só
precisa fazer isso uma vez. Se ele informar que o app está "danificado", limpe a flag de quarentena
do download: xattr -dr com.apple.quarantine "/Applications/Signal Setup.app".
O Windows SmartScreen mostra "O Windows protegeu o seu PC." Clique em Mais informações e depois em Executar assim mesmo.
cargo build --release
./target/release/signal-setup
O projeto é um workspace Cargo com dois crates: signal-setup-core (a lógica de registro e vinculação de dispositivos do Signal) e signal-setup (a GUI desktop que depende dele). Compilar o workspace produz o binário signal-setup acima.
Apenas no Linux, algumas bibliotecas de sistema são úteis para GPU/display:
# Ubuntu / Debian
sudo apt install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libxkbcommon-dev libssl-dev protobuf-compiler
# Fedora
sudo dnf install libxcb-devel libxkbcommon-devel openssl-devel protobuf-compiler
# Arch
sudo pacman -S libxcb libxkbcommon openssl protobuf
Toda conta pode ser exportada a partir de sua tela "Manage" como um arquivo de chave:
signal-account-<number>.json. Ele contém tudo o que é necessário para atuar como o dispositivo
primário da conta, criptografado com uma passphrase de sua escolha.
Mantenha-o como backup, você poderá importá-lo em outra máquina!
Os arquivos de chave também carregam a chave mestra, que é útil para registrar novamente um número sem esperar que o bloqueio expire.
Você pode executar a ferramenta contra o ambiente de staging do Signal em vez do de produção, o que é útil para desenvolvimento e testes sem arriscar sua conta real:
./target/release/signal-setup --staging
Para concluir a etapa de vinculação do dispositivo, você precisará de uma instância do Signal Desktop também conectada ao servidor de staging. Compilar o Signal Desktop a partir do código-fonte faz isso por padrão:
git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
pnpm install
pnpm start
Defina SIGNAL_SETUP_DEBUG=1 para imprimir todas as respostas da API de verificação do Signal (status e corpo) no terminal, que é a primeira coisa a verificar quando um registro não é concluído.
Uma flag --demo também está disponível para testes totalmente offline com dados falsos (sem necessidade de servidor). No modo demo, o código de verificação 000000 simula uma conta elegível para transferência de dispositivo e 111111 um número bloqueado para registro.
Existem outras ferramentas capazes de fazer isso, como o incrível signal-cli de AsamK, mas infelizmente elas não fornecem uma interface gráfica de usuário. Uma versão anterior desta ferramenta o utilizava por baixo do capô, mas exigia que os usuários tivessem uma JVM instalada para executar as coisas.
Em vez disso — e porque achei que seria mais fácil — aproveitei a ocasião para mergulhar fundo na criptografia do Signal.
Aqui está uma visão de alto nível de como as coisas funcionam (esta aplicação se registra como o dispositivo primário do Signal e, em seguida, vincula o Signal Desktop como dispositivo secundário).
Aqui está o fluxo:
%%{init: {'theme':'default', 'themeVariables': {'background':'#ffffff'}}}%%
sequenceDiagram
actor User
participant App as App
participant Server as Signal Server
participant Desktop as Signal Desktop
participant Store as Disk + Keyring
Note over App: Step 0: Welcome (if saved accounts)
rect rgb(235,245,255)
Note over User,Server: Phase 1: Request verification code
User->>App: Step 1: enter phone (+1234567890)
App->>Server: POST /v1/verification/session
Server-->>App: session.id (+ captcha_required?)
alt Captcha required
Note over App: Step 2 shown
User->>App: solve captcha, paste it
App->>Server: POST .../session/{id}/code (sms)
else No captcha
App->>Server: POST .../session/{id}/code (sms)
end
Server-->>User: SMS verification code
end