Your server. Your rules. No cloud. No accounts with Big Tech. No one reading your messages.
Haven is a self-hosted Discord alternative. Run it on your machine. Invite friends with a code. No cloud. No email signup. No tracking. Free forever.
Want a native desktop experience? Haven Desktop is a standalone app that connects to any Haven server — with features that go beyond the browser.
Haven Desktop is now available as a public beta. Download the installer and connect to your server in seconds.
⚠️ This is a beta release. Bugs are expected. Your feedback is what makes it better — please open an issue if something breaks or feels off.
You still need a Haven server. The desktop app is a client — it connects to a Haven server. Download and run Haven first if you haven't already.
Want Haven on your phone? Amni-Haven Android is a native Android app built from the ground up by Amnibro, now available on Google Play.
Amni-Haven Android features full chat and voice support, push notifications, and a true mobile-native experience.
You still need a Haven server. The Android app is a client — it connects to a Haven server. Download and run Haven first if you haven't already.
Built with ❤️ by Amnibro — huge thanks for his incredible work building the Amni-Haven Android app from the ground up.
Want to see what Haven looks like before hosting your own? Jump into the community server and explore — chat, voice, themes, the works.
After signing up, enter this channel code to join: da0b9be7
Volunteer-hosted community server — thanks MutantRabbit!
Leaving Discord? Haven can import your entire server's message history — directly from the app. No external tools, no command-line exports, no hassle.
Open Settings → Import and connect with your Discord token. Haven pulls every channel, thread, forum post, announcement, reaction, pin, attachment, and avatar — then lets you map them to Haven channels. Your community's history comes with you.
Your entire Discord history, now on a server you own. No one can delete it, no one can read it, no one can take it away.
Option A — Pre-built image (fastest, easiest updates):
docker pull ghcr.io/ancsemi/haven:latest
docker run -d -p 3000:3000 -v haven_data:/data ghcr.io/ancsemi/haven:latest
Or with Docker Compose (recommended):
git clone https://github.com/ancsemi/Haven.git
cd Haven
docker compose up -d
The shipped docker-compose.yml uses the pre-built image by default.
Option B — Build from source (only if you need to modify the code):
git clone https://github.com/ancsemi/Haven.git
cd Haven
Uncomment build: . in docker-compose.yml, then:
docker compose up -d
Open https://localhost:3000 → Register with username admin → Create a channel → Share the code with friends. Done.
Certificate warning is normal — click Advanced → Proceed. Haven uses a self-signed cert for encryption.
Updating — if using the pre-built image (default):
docker compose pull
docker compose up -d --force-recreate
Check your version: visit https://localhost:3000/api/version in your browser.
Option C — One-click cloud deploy (Zeabur):
Start Haven.batThat's it. The batch file handles everything — Node.js installation, dependencies, SSL certificates, config — and opens your browser. Register as admin to get started.
Don't have Node.js? No problem. The launcher detects this and can install it for you with one keypress. Or install it yourself from nodejs.org and restart your PC.
chmod +x start.sh
./start.sh
Or manually: npm install && node server.js
| Discord | Haven | |
|---|---|---|
| Hosting | Their cloud | Your machine |
| Account | Email + phone required | No email, no verification |
| Your data | Stored by Discord Inc. | Never leaves your server |
| Cost | Nitro upsells, boosts | Free forever |
| Telemetry | Analytics, tracking | Zero telemetry |
| Source code | Closed | Open (AGPL-3.0) |
| Category | What You Get |
|---|---|
| Chat | Real-time messaging, image uploads (paste/drag/drop) with click-to-enlarge lightbox, typing indicators, message editing, replies, emoji reactions, @mentions with autocomplete, :emoji autocomplete, message pinning (admin) |
| Voice | Peer-to-peer audio chat, per-user volume sliders, mute/deafen, join/leave audio cues, talking indicators, click usernames for profile/DM |
| Screen Share | Multi-stream screen sharing with tiled grid layout, per-user video tiles, one-click close |
| Channels | Hierarchical channels with sub-channels, private (invite-only) sub-channels with 🔒 indicator, channel topics |
| Join Codes | Per-channel invite codes with admin controls: public/private visibility, static/dynamic mode, time-based or join-based auto-rotation, manual rotation |
| Avatars | Upload profile pictures (including animated GIFs!), choose avatar shape (circle/square/hexagon/diamond), per-user shapes visible to everyone |
| Formatting | Bold, italic, ~~strikethrough~~, code, ||spoilers||, auto-linked URLs, fenced code blocks with language labels, blockquotes |
| Link Previews | Automatic OG metadata previews for shared URLs with title, description, and thumbnail |
| GIF Search | GIPHY-powered GIF picker — search and send GIFs inline (admin-configurable API key) |
| Direct Messages | Private 1-on-1 conversations — click 💬 on any user in the member list |
| User Status | Online, Away, Do Not Disturb, Invisible — with custom status text and auto-away after 5 min idle |
| File Sharing | Upload and share PDFs, documents, audio, video, archives (up to 25 MB) with inline players |
| Persistent Unread | Server-tracked read state — unread badges survive page refreshes and reconnects |
| Slash Commands | /shrug, /tableflip, /roll 2d20, /flip, /me, /spoiler, /tts, and more — type / to see them all |
| Search | Search messages in any channel with Ctrl+F |
| Themes | 20+ themes with stackable visual effects: CRT, Matrix Rain, Cyberpunk Text Scramble, Snowfall, Campfire Embers, and more — configurable intensity/frequency sliders |
| Multi-Server | Add friends' Haven servers to your sidebar with live online/offline status |
| Notifications | 5 notification sounds, per-channel volume controls |
| Moderation | Admin: kick, mute (timed), ban, delete users, delete channels, auto-cleanup. Role system with granular permissions. |
| Security | Bcrypt passwords, JWT auth, HTTPS/SSL, rate limiting, CSP headers, input validation |
| E2E Encryption | ECDH P-256 + AES-256-GCM encrypted DMs — private keys never leave the browser |
| Discord Import | Import your entire Discord server history — channels, threads, forums, reactions, pins, avatars — directly from Haven's UI or via file upload |
| Game | Shippy Container — Drew's shipment got hung up. Server-wide leaderboard. |
| Translations | 6 languages out of the box (English, French, German, Spanish, Russian, Chinese). Community-contributed. |
Haven supports multiple languages. Users can switch languages from Settings → Language or the login page. The choice is saved per-browser.
| Language | Code | Status |
|---|---|---|
| English | en |
✅ Complete (reference) |
| Français | fr |
🟡 AI-generated, needs review |
| Deutsch | de |
🟡 AI-generated, needs review |
| Español | es |
🟡 AI-generated, needs review |
| Polski | pl |
🟢 Human-translated |
| Русский | ru |
🟡 AI-generated, needs review |
| 中文 | zh |
🟡 AI-generated, needs review |
Non-English translations were initially generated with AI assistance and have not been fully reviewed by native speakers. They may contain awkward phrasing, incorrect terminology, or outright errors. If you speak one of these languages, corrections are hugely appreciated.
Improve an existing language:
1. Open public/locales/{code}.json (e.g. fr.json)
2. Fix any incorrect or awkward translations
3. Submit a PR
Add a new language:
1. Copy public/locales/en.json to public/locales/{code}.json
2. Translate all values (keep the keys unchanged)
3. Fill in the _meta block with your language name and flag
4. Add the code to the SUPPORTED array in public/js/i18n.js
5. Add a <option> to both language selectors in public/index.html and public/app.html
6. Submit a PR
Translations are a community effort. As new features are added to Haven, new English strings appear, and other languages will fall behind until someone updates them. Missing keys gracefully fall back to the English text, so nothing breaks — you'll just see some English mixed in until someone contributes the translation.
If you'd like to "own" a language and keep it current, reach out via an issue. Long-term language maintainers are welcome and appreciated.
If your friends aren't on your WiFi, you need to open a port on your router.
Go to whatismyip.com. That's the address your friends will use.
http://192.168.1.1 or http://10.0.0.1)Find your local IP: Open Command Prompt → type
ipconfig→ look for IPv4 Address (e.g.192.168.1.50)
Open PowerShell as Administrator and run:
New-NetFirewallRule -DisplayName "Haven Chat" -Direction Inbound -LocalPort 3000 -Protocol TCP -Action Allow
Send them:
https://YOUR_PUBLIC_IP:3000
Tell them to click Advanced → Proceed on the certificate warning. It's normal.
Haven creates a .env config file automatically on first launch — you don't need to create or rename anything. It lives in your data directory:
| OS | Data Directory |
|---|---|
| Windows | %APPDATA%\Haven\ |
| Linux / macOS | ~/.haven/ |
Running Haven as a systemd service? systemd runs the unit as the user you set in
User=(oftenroot), so~/.haven/resolves to that user's home (e.g./root/.haven/) — not the directory
$ claude mcp add Haven \
-- python -m otcore.mcp_server <graph>