17 comments

[ 17.3 ms ] story [ 53.7 ms ] thread
It's a single Go binary, shaped like ssh. The main difference is the transport -- WebRTC instead of TCP -- so it doesn't need the machine to be reachable in the first place. Run "bitbang serve" and it prints a URL. Open it in a browser and you get a terminal, a file browser, and a proxy to web apps on that machine's network -- or connect from another terminal. There's nothing to install on the connecting side, no account, no port forwarding.

The trick to having no accounts: a device's identity is the hash of its public key, so browser and device verify each other directly. The server keeps no registry, authorizes nothing, and isn't in the data path -- it brokers the introduction and steps aside. About 75% of connections go direct P2P. The rest fall back to a TURN relay that only sees ciphertext. The server is open source and self-hostable -- and since it's out of the data path, cheap to run.

BitBang started on an ESP32, as the networking for a tiny telepresence robot. Embedded development is difficult and slow, so this CLI is where I've beaten the security model into shape. The embedded version is next. :)

I'm thrown off because you use so many em dashes, but the text surrounding them generally seems human.

Not judging or brigading, just personally don't want to add a new tool to my toolbelt knowing it's made with ai right now. Is bitbang made with ai?

Sounds like all I need to do is get this onto a machine and find a way to open the url click exploit or something and I get a RAT
Fantastic work on this. This idea has so much promise, I hope this is the project that makes it take off.

Self-hosting is pretty these days with docker. Exposing it to the internet is the annoying part. I do Jellyfin via netbird, but that means I don't really share it with my friends. I hope something like this getting baked into self-hosting flows is killer.

My other pet peeve is that people use 'Cloud Services' for File transfer. Sometimes when they are in the same LAN!

Nice work again and I hope it catches on/people understand how great this really is :)

So I read a whole bunch of text trying to figure out what this thing is...

Then I see the following line in the 'How it compares' section:

"Self-hostable server (open source)": ngrok->No, Cloudflare Tunnel->No, Tailscale->No, Bitbang->Yes

...and I'm like, "It's Open Source Tailscale!"

And now I "get it"! (you know, epiphany, profound enlightenment and all that!) :-)

(Well, it's an open source alternative to Tailscale, to be more precise, and an excellent one at that!)

Great work, Rich LeGrand!

(Another step forward for open source!)

So i can see my use case like this: I ssh from my phone to my home raspberry pi through tailscale. i type an alias that causes the RPi to run bitbang serve and prints the connection number through stdout so i see it on my phone ssh session.

Now on an untrusted PC i can bingbang into my home network, do stuff with a real keyboard, and then run another command to shutdown bitbang.

Does that sound feasible?

Will shamelessly promote my thing: https://ssh-j.com

No applications except regular ssh client. Needs an SSH connection on the client as well though.

I like the idea but product seems to be unfinished or at least still not usable considering the problem it is solving
IPv6.

(Let's skip the discussion, I don't feel like watching groundhog day today.)