Enviar um arquivo para alguém entre redes com a CLI do Relayium
Última atualização: 2026-08-07
Às vezes a outra máquina não é sua e você não consegue entrar por SSH: um arquivo para um colega em outro escritório, um build para um cliente, um arquivo compactado para um amigo do outro lado do país. relayium send e receive o movem diretamente entre as duas partes, entre redes, usando apenas um código de emparelhamento curto que a sua CLI gera na hora de enviar.
A conexão é ponto a ponto e com criptografia de ponta a ponta. Apenas um pequeníssimo handshake de encontro passa pelo Relayium para apresentar as duas pontas; os bytes do arquivo nunca passam.
Antes de começar
Tudo abaixo é a CLI do relayium, então instale-a primeiro se ainda não tiver. No macOS ou Linux, um comando coloca um binário pré-compilado no seu PATH:
curl -fsSL https://relayium.com/install.sh | sh
- Prefere escolher o arquivo você mesmo, ou está no Windows? Pegue um binário na página de releases — relayium.com/cli lista todas as opções de instalação (ou go build -o relayium ./cmd/relayium se você tiver Go).
- relayium --version confirma que está instalada. Pule isso e os comandos abaixo só imprimirão “command not found”.
Envie e depois repasse o código que aparece
O que você precisa
- A CLI nas duas máquinas. relayium version imprime uma versão em cada uma; se o shell responder “command not found”, ela ainda não está instalada ali.
- Quem envia com login feito. relayium whoami imprime o e-mail da conta, e gerar um código de emparelhamento exige antes relayium login. A máquina que recebe não faz login em momento algum.
- As duas pessoas diante de um terminal ao mesmo tempo. O código vive cinco minutos, então combine o momento antes de gerar um.
- Um jeito de ditar seis dígitos fora de banda: uma ligação, uma janela de chat ou a própria sala, quando as duas pessoas estão juntas.
Faça login uma vez com relayium login e depois é só enviar. A CLI gera um código de emparelhamento, exibe-o junto com o comando exato que a outra ponta executa, e fica aguardando. Repasse esse código fora de banda: diga em uma chamada, coloque em um chat:
Na máquina que envia, faça login uma única vez. Pule este passo se relayium whoami já imprime o e-mail da sua conta.
relayium loginNo diretório onde está o arquivo, inicie o envio. A CLI gera o código, imprime o comando para a outra ponta e então aguarda.
relayium send ./release.zipDite fora de banda os seis dígitos que apareceram. Eles param de funcionar cinco minutos depois de gerados.
Na máquina que recebe, dentro do diretório onde os arquivos devem chegar, rode o comando que apareceu para quem enviou. Acrescente um diretório para colocá-los em outro lugar.
relayium receive 483920relayium receive 483920 ./downloadsDeixe os dois terminais abertos até o shell de quem recebe voltar ao prompt. É uma única sessão ao vivo: fechar qualquer uma das pontas interrompe a transferência.
Como é uma execução bem-sucedida
Quem envia imprime primeiro o bloco de repasse e aguarda; depois, um código de verificação e o caminho que conseguiu. Os dois terminais mostram o mesmo código de verificação, e ambos terminam com 0.
# na máquina que ENVIA
Code: 483920 (valid 5 minutes)
On the other machine: relayium receive 483920
not installed there? curl -fsSL https://relayium.com/install.sh | sh
waiting for the receiver…
verification code (SAS): 271044 — not the pairing code; compare it on both ends to rule out a substituted endpoint
path: direct- O código tem 6 dígitos decimais — qualquer um de 0 a 9, zeros à esquerda incluídos — e expira 5 minutos depois de gerado.
- O código é apenas um segredo compartilhado para se encontrar; não é enviado a ninguém além do ponto de encontro, e serve apenas para apresentar as duas pontas.
- As duas pontas precisam ser a CLI — um navegador não consegue entrar em um código de emparelhamento da CLI. Vai enviar para alguém que só tem navegador? Use relayium up, que devolve um link de download.
Verificar com o código SAS
Quando as duas pontas se conectam, os dois terminais exibem o mesmo SAS (short authentication string) de 6 dígitos derivado das impressões digitais dos certificados TLS fixados. Compare-o fora de banda — leia em voz alta durante a chamada — para confirmar que as impressões digitais não foram substituídas e que o serviço de encontro não se passou por nenhuma das pontas. O SAS autentica as pontas; não prova cada salto da rota de rede.
Para a proteção mais forte, adicione --verify: a transferência então espera que você confirme que os códigos coincidem antes que um único byte se mova.
relayium send --verify ./release.zip
Somente direto: gratuito, ou falha
A transferência disputa o estabelecimento de uma conexão direta entre as duas pontas. Quando ela pode ser estabelecida — o caso comum quando pelo menos um lado tem um endereço alcançável — o arquivo flui direto, criptografado, na velocidade máxima e sem custo.
send/receive e text da CLI do Relayium são P2P e direct-only: nunca retransmitem bytes de arquivos ou mensagens por TURN nem por qualquer outro servidor Relayium. Se as duas pontas não conseguirem estabelecer uma conexão direta, a sessão falha em vez de recorrer a um retransmissor.
Se isso acontecer, a resposta confiável é daemon direto entre dois servidores alcançáveis, push por SSH ou um link armazenado criado com relayium up.
- A conexão direta é bem-sucedida → gratuita, na velocidade máxima, com criptografia de ponta a ponta.
- Ambas as pontas podem estar em qualquer lugar geograficamente — quem envia só roda send, e quem recebe roda receive com o código que apareceu.
Quando não funciona
Quatro falhas explicam quase toda tentativa malsucedida. Cada uma tem uma linha para ler ou um comando para rodar que decide a questão, então nunca é preciso adivinhar qual ponta está com problema.
Sintoma, verificação, correção
- Quem envia nem começa: “minting a pairing code needs an account”.
relayium whoami # not logged in (run `relayium login`)Essa máquina não tem credenciais salvas. Rode relayium login e aprove no navegador; depois disso whoami imprime o e-mail da conta e o envio segue. Nada tinha sido gerado, então nenhum código foi desperdiçado.
- Quem recebe digita o código e o ponto de encontro recusa.
# na máquina que ENVIA: o bloco de repasse informa a vida exata relayium send ./release.zip Code: 483920 (valid 5 minutes)O código expirou. Aperte Ctrl-C em quem envia, rode relayium send ./release.zip de novo e dite os seis dígitos novos dentro dos cinco minutos que o novo bloco de repasse anuncia.
- Os dois terminais mostram códigos de verificação diferentes.
relayium send --verify ./release.zipPare e não envie o arquivo. Códigos diferentes significam que as impressões digitais dos certificados TLS fixadas pelas duas pontas não batem, ou seja, o outro lado não é a máquina que você imagina. Rode de novo com --verify, que trava a transferência exatamente nessa comparação até você confirmar, e cheque com a outra pessoa em qual máquina ela está.
- “no direct connection to the peer (both ends behind strict NAT?)”.
relayium send ./release.zip # no direct connection to the peer (both ends behind strict NAT?): …Nenhuma das pontas conseguiu alcançar a outra, e a CLI não tem, por decisão de projeto, nenhum caminho por retransmissor para os bytes de um arquivo. Leve uma das pontas para uma rede com endereço alcançável — um servidor, ou o roteamento do celular — ou suba o arquivo com relayium up e repasse o link de download.
Perguntas frequentes
De onde vem o código de emparelhamento?
Quem gera é o Relayium. Rode relayium send ./release.zip (depois de relayium login) e a CLI exibe um código de 6 dígitos válido por cinco minutos, junto com o comando exato que a outra ponta executa. Você não pode escolhê-lo — o servidor só aceita os códigos que ele mesmo emitiu.
O arquivo é enviado para algum lugar?
Não. O arquivo flui diretamente entre as duas partes, com criptografia de ponta a ponta. Apenas um pequeno handshake de encontro passa pelo Relayium para apresentar as pontas — nunca o arquivo.
E se não conseguirmos conectar?
Se ambas as pontas estiverem atrás de um NAT estrito sem endereço alcançável, a conexão direta não pode ser feita e a transferência falha — a CLI não tem retorno por retransmissor, por decisão de projeto. Use daemon direto entre dois servidores alcançáveis, ou push por SSH, quando não houver um caminho direto disponível.
Como sei que é mesmo a pessoa certa do outro lado?
Os dois terminais exibem um código SAS idêntico de 6 dígitos derivado das impressões digitais dos certificados TLS fixados. Compare-o fora de banda; a coincidência confirma que as impressões digitais não foram substituídas e que o serviço de encontro não se passou por nenhuma das pontas. Ele autentica as pontas, não cada salto da rota de rede. Adicione --verify para exigir essa confirmação antes que qualquer byte se mova.
Envie seu próximo arquivo diretamente para alguém em outra rede — com criptografia de ponta a ponta e gratuito.
Obter a CLI