Bearhole has crossed the line from prototype to something you can actually live in. The desktop client is real, the peer-to-peer network holds, and the feature set is now wide enough to run a community day-to-day. It is an alpha — rough in places, changing fast — but it is genuinely usable, and we want people in it.
If you have been following along: yes, this is the same project that started as a stubborn question. Can a Discord-shaped app run with no company in the middle — no central server, no account, no cloud that could be subpoenaed, sold, or switched off? The answer, running on our own machines every day now, is yes.
What actually works today
This is not a landing page promising a roadmap. Everything below is in the client you can download and run right now:
- True end-to-end encryption — text, voice, video and files are sealed on your device and only ever leave as ciphertext. Content keys are wrapped with X25519 + ML-KEM-768 (post-quantum), rotate forward-secretly when someone is removed, and the seeds that keep you durable only ever hold ciphertext. This is the line self-hosted server chats like Fluxer don't cross — their operator can still read everything on the box. Bearhole's operator can't, by construction.
- Text, voice, video and screenshare — channels, categories, presence and unread markers, WebRTC mesh calls, and a cascade broadcast tree that scales a stage past a small room.
- Rich messaging — reactions, replies, threads, pins and polls, XSS-safe Markdown, quick-switcher and client-side search.
- Custom emotes and GIFs — per-community animated emotes deduped by hash, and a keyless GIF library where requests leave your device, not a Bearhole server.
- Collaborative docs — real-time CRDT documents where offline concurrent edits merge identically on reconnect.
- A soundboard — shared clips you can fire into a voice channel.
- Files over P2P — metadata replicates instantly; bytes move only on download, from whoever has them.
- Multi-device sync — the same identity, the same communities, on every machine you own.
- Calls that scale honestly — per-peer link-quality dots (green/yellow/red), a priority speaker and raise-hand, and a stage that fans out via a cascade relay tree. Every viewer attaches to the closest relay with a free slot, walking a locality ladder: same ISP → same country → same region → best peer → random.
- Desktop and phone — a responsive layout that folds to a single-column phone view, with cross-platform builds for Linux, macOS and Windows.
Getting in is deliberately gentle
An app with no accounts can be intimidating on first run, so we spent real effort on onboarding. A guided tour spotlights the interface — one track for newcomers, one for Discord and Fluxer veterans — and a setup wizard walks you through creating your identity and joining your first den.
Your identity is a 12-word recovery phrase, the same across every community and device. If you would rather not manage a phrase yourself, you can onboard through SSO / OAuth — Google, GitHub, Discord, Twitch, or a self-hosted Keycloak — and unlock with a FIDO2 passkey. None of that hands your keys to a company; it just wraps them behind a login you already trust.
Accessibility from day one. High-contrast and larger-text modes, reduce-motion, colour-blind palettes with shape cues, and mono audio are all in the alpha — and previewed live as you toggle them.
What "alpha" means here
Being honest about the edges is part of how we build. So, plainly:
- Things will change and occasionally break. Data formats are stabilising but not frozen. Keep your recovery phrase somewhere safe.
- Encryption protects content, not metadata. A seed operator or network observer can still see that connections happen, community membership, and message timing and sizes. That is stated plainly in our threat model, and it is not going to be quietly walked back.
- It is peer-to-peer. For a community to feel "always on", someone runs a seed node — a Raspberry-Pi-class box that keeps full history and answers invites while everyone is offline.
What's landing next
Two things are already working in the tree and coming to a build near you:
- The Pear runtime. The whole app is being ported to run as a single signed pear:// link — no installer, auto-updating peer-to-peer. The engine, all 135 handlers and end-to-end encryption already boot under it; it's the same client, distributed the P2P way.
- Web & phone, without an app store. Because the interface now talks to the engine over a clean socket, the same client can run in a browser and install to your phone's home screen as a PWA — no App Store, no Apple developer account, no sideloading. It rides an optional hosted gateway (a convenience we run for a few dollars a month to cover hosting; founders pay less). Your keys still never leave your device, and the desktop app + self-hosting stay free forever.
- Creative profiles. Animated (GIF) community icons and avatars, plus Discord-style profile banners.
How to join the official test community
Grab the desktop build from the download section and run the setup wizard to create your identity. Then, on the landing screen, choose Join a community and paste the official join code below — you will land straight in the shared den where the whole crew hangs out.
Official join code
BEARHOLE-OFFICIAL-JOIN-CODE
Voice, cascade stages, reactions, files and docs — all live, all peer-to-peer. Come break things, tell us what feels wrong, and help shape what a Discord alternative with no middle should be.
The core is, and always will be, free — never gated, never nagged. See you in the den.