
bitbang-cli v0.5.0
Estabeleça acesso remoto seguro a uma máquina com shell interativo, transferência de arquivos e proxy web sobre WebRTC peer-to-peer criptografado de ponta a ponta, usando um navegador ou CLI sem encaminhamento de portas ou contas.
BitBang CLI
bitbang é uma ferramenta multifuncional de acesso remoto em um único binário estático. A partir de qualquer navegador: acesso a um shell interativo e a um navegador de arquivos na máquina remota. Você também pode acessar aplicações web na rede dessa máquina. Além do navegador, ele faz encaminhamento de portas TCP, cópia de arquivos e compartilhamento de terminal. Não requer conta nem configuração -- simplesmente funciona.

Na máquina que você deseja acessar:
curl -sSfL bitba.ng/install | sh
bitbang serve
serve imprime uma URL. Abra-a em qualquer navegador e você obtém um terminal, um navegador de arquivos e um proxy para a rede daquela máquina -- ou alcance a mesma máquina a partir de outro terminal com bitbang connect <url>, que adiciona encaminhamento de portas (-L) e cópia de arquivos (bitbang cp). A conexão é criptografada de ponta a ponta e ponto a ponto; o servidor bitba.ng apresenta as duas pontas e depois sai de cena.
bitbang é um único binário Go estático. Ele faz parte do projeto BitBang; este whitepaper aborda o design em profundidade.
Como se compara
| ngrok | Tailscale | bitbang | |
|---|---|---|---|
| Configuração antes do primeiro uso | Conta + authtoken | Conta + login em cada dispositivo | Execute um comando |
| Para compartilhar algo, você executa | um servidor web, mais o ngrok | o cliente deles em ambas as máquinas | bitbang serve |
| O que um navegador na outra ponta recebe | o servidor web que você já estava executando | nada -- ele precisa do cliente deles | um terminal, um navegador de arquivos e aplicativos web na rede remota |
| Caminho dos dados | os servidores deles | P2P (fallback por relay) | P2P (fallback por relay) |
| Criptografado de ponta a ponta | Não por padrão | Sim | Sim |
Receitas rápidas
Alcançar um serviço em casa
- Monte seu NAS doméstico de qualquer lugar (SMB)
- Assista à sua biblioteca de mídia de qualquer lugar (Jellyfin)
- Use seu próprio LLM de qualquer lugar (Ollama, Open WebUI)
- Verifique suas câmeras de segurança (Frigate)
- Alcance sua automação residencial sem expô-la (Home Assistant)
- Imprima na sua impressora doméstica (IPP, CUPS)
Acessar uma máquina
- Obtenha um shell em uma máquina atrás de NAT
- Obtenha um shell a partir do seu celular
- Área de trabalho remota em uma máquina Windows (RDP)
- Alcance uma área de trabalho Linux ou Mac (VNC)
- SSH para uma máquina sem porta aberta (OpenSSH)
- Configure um Raspberry Pi headless
Compartilhar com outra pessoa
Compartilhar significa simplesmente dar a alguém uma URL única ou um código QR que lhe concede acesso. As permissões podem ser personalizadas e definidas para expirar em minutos, horas, etc.
- Compartilhe arquivos sem enviá-los para lugar nenhum
- Mostre seu projeto para alguém
- Mostre a alguém o erro em que você está travado
- Conceda a alguém um acesso que expira
- Verifique sua sessão de agente pelo celular (Claude Code, tmux)
- Conserte o roteador de outra pessoa
Desenvolvimento e dispositivos
- Acesse um banco de dados a partir da sua máquina de desenvolvimento (Postgres, MySQL)
- Sincronize dispositivos que não conseguem se encontrar (Syncthing)
- Observe um robô a partir do navegador (ROS, Foxglove)
Técnicas
- O que um listener de encaminhamento expõe
- Permita que outras máquinas na sua LAN usem um encaminhamento
- Sabe-se que não funciona
Usando o bitbang
Toda conexão tem duas pontas: um listener (bitbang serve, em execução na máquina que está sendo acessada) e um connector (um navegador, ou a CLI bitbang, na máquina que está acessando). Uma única URL de listener atende os dois tipos de connector.
O listener: bitbang serve
bitbang serve # everything: shell + proxy + files + forward
bitbang serve shell # just a terminal
bitbang serve files ~/share # just a directory (-files-upload to allow uploads)
bitbang serve proxy localhost:8080 # just one web app, straight at the URL
bitbang serve proxy a.lan:80,b.lan:80 # ...or several, chosen in the browser
bitbang serve forward 127.0.0.1:22 # just TCP, for `connect -L`
bitbang serve shell files ~/share proxy nas.lan:8096 # any combination
Cada um imprime um código QR, URL e um código de emparelhamento. O modo define o que o
listener pode fazer: serve shell não tem encaminhamento a conceder, e um
listener apenas de encaminhamento nunca inicia um shell, portanto não há nada a escalar.