Peer-to-peer · End-to-end encrypted

Your community.
No servers to trust.

Bearhole is a peer-to-peer, end-to-end encrypted chat for communities — text, voice, video, files and docs that live on your devices and the seeds you run, never a company's cloud.

Download Explore features
Free, forever · no account, no email
Your identity is a 12-word recovery phrase.
bearhole — the den
Bearhole chat — a real screen recording of the app
See it in motion

Real screens, not mockups.

Voice call controls
Mesh voice — link-quality dots, priority speaker & raise-hand rings.
Cascade broadcast scaling
Cascade broadcast — a stage scales to thousands with no server.
Live accessibility previews
Colour-blind modes that actually recolour the app, previewed live.
Custom emotes
Per-community custom emotes, favourites pinned on top.
See every feature in motion →
Signed P2P updates

Updates that arrive
from your peers.

New releases replicate peer-to-peer from an ed25519-signed feed — your online desktop hands the update straight to your laptop, no download server. A relaying peer can never forge a release. The prompt is polite — update now · remind in 5 · next open · auto after close · never — and the bar shows live speed and how many peers are sending, with a spark when it flies.

Peer-to-peer update download bar with live speed and peers
Peer-to-peer
Runs on the Hyperswarm DHT. No cloud, no central server.
E2EE + PQ
Post-quantum hybrid encryption, on by default.
Free forever
The core is never gated, never nagged.
AGPL-3.0
Open source — full code published at 1.0.
What's inside

Everything a community needs — nothing that phones home.

Security model

Encrypted by construction. Honest about the edges.

Every content resource is block-encrypted from a per-community space key. Message bodies are sealed with AES-256-GCM under a rotating epoch key — wrapped to each device with a post-quantum hybrid KEM.

X25519 ML-KEM-768 AES-256-GCM Noise XX DTLS-SRTP
What we don't hide
Encryption protects content, not metadata. A seed operator or network observer can still see that connections happen, community membership, and message timing and sizes. Stated plainly in our threat model.
How it compares

Bearhole vs. the usual chats.

Discord is a company cloud; Fluxer and Chatto are servers you host. Bearhole is peer-to-peer and end-to-end encrypted, so no operator — not even you — can read a community's content.

DiscordFluxerChattoBearhole
Architecture Company cloudSelf-hosted serverSelf-hosted serverPeer-to-peer
End-to-end encrypted contenttext, voice & files Calls only
Only you can read itoperator can't see content
Post-quantum key wrapX25519 + ML-KEM-768
No account, email or phone
Runs with no server at all
Voice, video & screenshare ~
Open source
Signed peer-to-peer updates
Cost Free + NitroSelf-hostSelf-hostFree forever
full · ~ partial / limited · none. Discord added end-to-end encryption for calls (DAVE, 2024) but not for text. Comparison reflects default, self-hostable configurations.
Seed nodes

Run one box. Make it permanent.

A seed node turns an ephemeral workspace into a durable community: full text history forever, media cached on your policy, and invites answered while every member is offline. Anything Raspberry-Pi-class works — no port forwarding, the DHT handles NAT.

Durable
survives every member leaving
Redundant
add a 2nd seed, failover is structural
seed.sh
# clone, install, join once with an invite
git clone <repo> bearhole && cd bearhole
npm ci --omit=dev

node bin/seed.js --join <inviteCode> \
  --storage /var/lib/bearhole-seed \
  --media-cache 90

# restarts only need the storage dir
node bin/seed.js --storage /var/lib/bearhole-seed
✓ seed admitted · indexing · durable
Federation

Communities that connect — with no central registry.

Opt-in seeds discover each other over the DHT and can grant cross-community invites. Content, files and membership never federate — only discovery and invite-granting do. You choose the posture.

Download

The lightweight client, on every platform.

One small app that peers directly with the network — no company cloud in the middle. Desktop builds are unsigned single binaries; mobile wraps the same interface. After first launch, updates arrive peer-to-peer.

Recommended · Pear
One signed link. Every desktop. Auto-updating.

Bearhole ships as a single pear:// link on Holepunch's Pear runtime — no installer, no app store, and new versions arrive peer-to-peer. Install Pear once, then run the link:

npm i -g pear
pear run pear://9jumqiujkww7aewmgkumqun4h3cusknjpfhohdyejbbcptb7h31o

Runs on Linux, macOS & Windows. Prefer a plain binary or the tiny bootstrap? Grab one below.

Not technical? One click.
No terminal, no npm, no Pear — just download and open.

The installer asks where to put Bearhole, sets everything up for you (it even grabs a private copy of Node if you don't have one — nothing system-wide, no admin), and makes a real Bearhole shortcut with the Bearhole icon. Works on a stock macOS, Windows 10/11, or Ubuntu-style Linux.

macOS: after downloading, right-click → Open the file the first time (it's unsigned — Bearhole has no company). Windows: if SmartScreen warns, click More info → Run anyway. Linux: mark it executable (chmod +x install.sh) and run it, or paste sh install.sh.

Full client
Download & run

The complete desktop app. Unpack and launch — it finds peers on its own and can even host its own community from the CLI. No infra required.

tar xf Bearhole-linux-x64.tar.gz
./Bearhole
Lightweight bootstrap
Infra-connected launcher

A tiny headless launcher (no Electron) that joins the swarm, finds your operator's seed, and pulls the newest signed release — verified against a pinned key. It is also the auto-updater.

node bin/bootstrap.js \
  --release-key <hex> --watch

Full setup for every platform — including sideload and the signed-update model — in docs/binaries-and-sideload.md and docs/bootstrap-and-updates.md.

Desktop
Linux
x64 & arm64 · AppImage
runs on Pi 4+.
Linux · soon
Desktop
macOS
Intel & Apple Silicon · .app
Unsigned build needs a one-line trust step.
macOS · soon
Desktop
Windows
x64 · .exe
SmartScreen: More info → Run anyway.
Windows · soon
Mobile
Android
APK sideload · no store, no account
Or add the web PWA to your home screen — nothing to sideload.
Web PWA · soon
Mobile
iOS
No App Store needed · add the web PWA to your home screen
A native build follows; the PWA works day one.
Web PWA · soon
Pear runtime
pear://
The whole app as one signed pear:// link — auto-updating, no installer. Install Pear once, then run the link:
npm i -g pear
pear run pear://9jumqiujkww7aewmgkumqun4h3cusknjpfhohdyejbbcptb7h31o
Web & phone
Browser & PWA
Use Bearhole in a browser, or add it to your phone's home screen — no store, no Apple account. Via the optional hosted gateway (see pricing).
Coming soon
Any platform
Native binaries
Signed-feed auto-updating apps for macOS, Windows & Linux · soon
Soon
Free, forever · no account, no email, no tracking.
Desktop builds are unsigned; verify and self-sign per the docs.
Open source · Alpha
The whole thing will be open source.

Bearhole is AGPL-3.0 and the full source will be published for anyone to read, audit, and self-host. It's in alpha right now — we're polishing and cleaning it up before we open the repository publicly, so it's genuinely useful (and readable) on day one rather than a mess. Follow along for the public release.

Seed your community
Keep it alive when everyone's offline.

A community lives on its members' devices. Point a cheap always-on box (a VPS or a Raspberry Pi) at it and it keeps full history, caches media, and answers invites 24/7 — no port forwarding, the DHT handles NAT. Join once with an invite, then it runs itself:

git clone <repo> bearhole && cd bearhole && npm ci --omit=dev
node bin/seed.js --join <invite> --storage /var/lib/bearhole-seed --media-cache 90

Add a second seed and failover is structural. Docker/systemd templates + the full guide: Seed nodes.

Seed the app itself (share it to another computer)

The whole app is the pear:// link — there's no file to send. To let a second machine (say your laptop or a friend's Mac) install it before you've cut a public release, keep a seeder running on any computer that already has it. Leave this open, then run the link on the other machine:

# on a computer that already has Bearhole — keep it running
pear seed pear://9jumqiujkww7aewmgkumqun4h3cusknjpfhohdyejbbcptb7h31o

# on the other machine — install Pear once, then run the link
npm i -g pear
pear run pear://9jumqiujkww7aewmgkumqun4h3cusknjpfhohdyejbbcptb7h31o

No port-forwarding — the DHT hole-punches through NAT. Once you pear release the app it self-sustains and anyone can run it even when your box is offline (as long as some seed is up).

Try Bearhole now

Join the official test community

Alpha is live. Open the app, hit Join a community on the landing screen, and paste this code to land in the official den — voice, cascade stages, reactions and files, all peer-to-peer.

BEARHOLE-OFFICIAL-JOIN-CODE

Read the alpha announcement for what works today.
Pricing

The core is free. Forever. Never gated.

Paid tiers add operator convenience, hosted web & mobile access, or cosmetics — nothing that unlocks a community feature or fragments the network. The app and self-hosting are free forever.