Repository navigation
bubbles v0.1.0
First release of bubbles: secure chat for a local network. One server binary runs on any LAN host. Phones and computers join through the web app, or through the desktop tray app. It needs no internet connection and no cloud account.
Project site and screenshot tour: https://donaldsteele.github.io/bubbles/
What's in it
- Chat: public and private channels, DMs and group DMs, threads, reactions, mentions, pins, search, unread counts, drafts that sync across devices, presence and typing.
- Files: upload by button, drag and drop or paste. Images, video and audio show inline. EXIF location data is removed from photos.
- Alerts: severity and acknowledgement, incoming webhooks (native JSON and a Slack-compatible subset), app tokens, a Go SDK (
pkg/bubblesclient) and an MCP server for agents. netdiag can post its alerts here. - Admin: invitations with roles, an audit log, encrypted backups, TLS and CA management. Clear content and Factory reset let you reuse the server at the next LAN party.
- Security: all app traffic is HTTPS with a certificate from a local CA that each device trusts once. There is no end-to-end encryption: the server can read messages. docs/security.md explains the threat model.
Downloads
| What | File |
|---|---|
| Server, Windows | bubbles-v0.1.0-windows-amd64.zip, bubbles-v0.1.0-windows-arm64.zip |
| Server, macOS | bubbles-v0.1.0-darwin-arm64.zip (Apple silicon), bubbles-v0.1.0-darwin-amd64.zip (Intel) |
| Server, Linux | bubbles-v0.1.0-linux-amd64.zip, bubbles-v0.1.0-linux-arm64.zip (Raspberry Pi with a 64-bit OS) |
| Tray app (optional desktop client) | bubbles-tray_v0.1.0_windows_amd64.zip, bubbles-tray_v0.1.0_macos_arm64.zip, bubbles-tray_v0.1.0_linux_amd64.zip |
| Docker (linux/amd64, linux/arm64) | docker pull ghcr.io/donaldsteele/bubbles:v0.1.0 |
Check a server download against SHA256SUMS:
sha256sum --check --ignore-missing SHA256SUMS # Linux
shasum -a 256 --check --ignore-missing SHA256SUMS # macOSEach tray zip has its own .sha256 file.
Getting started
- Unzip the server and run
bubbleson a computer that stays on your network. - The console prints a setup token and addresses such as
https://192.168.1.20:28225. Open one in a browser on that computer and create the admin account. - To add another device, open the onboarding page on port 28226 (for example
http://192.168.1.20:28226). Install the local CA once, then scan the QR code.
The default ports are 28225 (HTTPS) and 28226 (onboarding). You can change them with --https-addr and --http-addr.
The binaries are not code-signed, so Windows SmartScreen and macOS Gatekeeper warn the first time you run them. HOW-TO-OPEN.txt in each zip shows how to get past the warning. The macOS tray app is ad-hoc signed only.
Known limitations
- This is a first release. CI tests every build on Windows, macOS and Linux, including browser tests in Chromium, Firefox and WebKit. Testing on real devices, such as phones, Web Push, mDNS on mixed networks and the tray app on macOS and Linux, is still in progress. docs/field-checklist.md has the list.
- On SSDs, a reset does not guarantee that deleted data is unrecoverable. docs/security.md explains why.
Bug reports and feedback: https://github.com/donaldsteele/bubbles/issues