Open Source & Free Forever

Free private chat that lives on your machine

Haven is a full-featured chat server you host yourself. Voice chat, screen sharing, Discord import and two-way bridging, 26 themes, E2E encrypted direct messages, bots, file sharing, and more. No cloud, no Big Tech accounts, no one reading your messages.

Join however you like. Desktop app, Android app, or just a browser link with nothing to install.

Haven login screen with theme selection Haven chat interface with voice chat Haven themed chat view Haven desktop with channels and sidebar Haven screen sharing and streaming Haven theme gallery showcase

🌐 Try Haven: No Download Required

Want to see what Haven feels like before hosting your own? Jump into the community server and explore, chat, voice, themes, the works.

🌐 Join Community Server

✅ Just sign up, you'll be dropped straight into the community, no code needed.

Need to enter it manually? Channel code: da0b9be7

Volunteer-hosted community server, thanks MutantRabbit!

📥 Bring your Discord with you, or keep both

Haven imports your whole Discord server: every channel, thread, forum post, reaction, pin and attachment. Paste your token, pick a server, go.

Not everyone ready to leave? Haven passes messages straight to and from your Discord server, both directions, so the friends who stay can still talk to the ones who moved.

💬 Text channels 📢 Announcements 🗂️ Forums & tags 🧵 Threads 😊 Reactions 📌 Pins 📎 Attachments 🖼️ Avatars ↩️ Replies 🛶 Live two-way bridge

🖥️ Haven Desktop

A native app with the things a browser cannot do: per-app audio sharing, device switching mid-call, native notifications, and a system tray. It can also run the Haven server itself.

🎧 Per-App Audio 🔀 Device Switching 🔔 Native Notifications 📍 System Tray ⚡ One-Click Install 🏠 Can Host The Server 🖥️ Windows & Linux
🪟 Windows Installer 🐧 Linux AppImage 📦 Linux .deb
View on GitHub

Connects to any Haven server, or hosts one for you.

📱 Haven Now on Google Play

A real Android app, not a web wrapper. Full chat, voice and push notifications, available now on Google Play.

🤖 Native Android 🔔 Push Notifications 💬 Full Chat Support 🎙️ Voice Chat ⬡ Built for Haven
Get it on Google Play

Built from the ground up by Amnibro. Thank you.

Works Everywhere

Desktop, tablet, and phone

Haven isn't just for desktop. Friends can join from their phone's browser, no app download required. The interface adapts automatically to any screen size.

Full chat, channels, direct messages, voice chat, and the sidebar, all fully functional on mobile. Just open the link and go.

🪟 Windows 🍏 macOS 🐧 Linux 📱 iOS Safari 🤖 Android 🌐 Any Browser
Haven mobile view: Welcome screen with channel selection
Welcome view
Haven mobile view: Sidebar showing channels, DMs, and user profile
Channels & DMs
Dead Simple

Up and running in 3 steps

No terminal commands, no config files. Just double-click. (Docker supported too!)

1️⃣

Download & unzip

Download the .zip from GitHub and unzip it anywhere. Desktop is fine.

2️⃣

Double-click to start

Run Start Haven.bat (Windows) or start.sh (Mac/Linux). It handles everything.

3️⃣

Share the link

Send your friends the link. They open it in a browser, or use the desktop or Android app. Their choice.

?

What's a "self-hosted" server?

It means the chat runs on YOUR computer, not a company's server. Your messages never leave your machine. You're the cloud.

!

Do my friends need to download anything?

Only if they want to. A link in any modern browser works with nothing installed, phones included. If they would rather have a real app, there is a desktop app for Windows and Linux and an Android app on Google Play. Same server either way.

🔒

Is it secure?

HTTPS encryption, bcrypt passwords, JWT auth, rate limiting, CSP headers, and more. Check the source code yourself.

💻

What do I need?

Windows, Mac, or Linux. Node.js (free, 2-click install). About 50 MB disk space. That's everything. Or use Docker: docker compose up -d and you're done.

Why Haven

What makes it worth the switch

A Discord-like experience that's completely private, completely free, and yours to control.

Key Differentiator 🌍

Friends join however they want, including with nothing installed

One person runs Haven. Everyone else picks: the desktop app, the Android app, or a link in a browser with nothing to install and no account with any company.

🎙️

Crystal-clear voice chat

Peer-to-peer voice that goes directly between users, not through a middleman server. Per-user volume sliders, mute, deafen, talking indicators, join/leave sounds, and sound effects.

🖥️

Screen sharing & streaming

Share your screen with anyone in the voice channel. Multiple people can stream at once in a tiled grid. Perfect for watch parties, co-working, or showing gameplay.

🔒

Truly private, with E2E encrypted DMs

No cloud, no telemetry, no analytics. Messages live on your machine. DMs are end-to-end encrypted, so not even the host can read them. Haven never phones home.

📱

Mobile-ready out of the box

Fully responsive design that works on any phone or tablet. Channels, DMs, voice chat, and file sharing, all from your mobile browser. No app store needed.

See It In Action

Screenshots

Haven running with different themes. Every pixel is customizable.

Packed

All the features

Haven isn't a toy. It's a full-featured chat platform.

📥

Discord Import

Import your entire Discord server's history directly from Haven, channels, threads, forums, reactions, pins, attachments, and avatars. Paste your token, pick a server, done.

🛶

Ferry: Two-Way Discord Bridge

Messages pass both ways between a Haven channel and a Discord channel, under each person's real name. Friends who stay on Discord can still talk to the ones who left.

🎮

Rich Presence

See what everyone is playing and listening to. Steam for games, Last.fm or Spotify for music. Optional, and never saved to the database.

🎵

Music & Video Streaming

Spotify, YouTube, and SoundCloud Listen Together with synced playback and seek bar. Share audio files or screen-share a movie, everyone hears and sees it together in real time.

💬

Rich Chat

Real-time messaging, image uploads, typing indicators, message editing, replies, emoji reactions, @mentions, and editable channel names with collapsible sub-channels.

🎙️

Voice Chat

Peer-to-peer audio. Per-user volume sliders. Mute, deafen, noise suppression. Talking indicators.

🖥️

Screen Sharing

Multi-stream support. Tiled grid layout. Resizable viewer. Share screens simultaneously.

🔒

Encrypted Direct Messages

End-to-end encrypted DMs using ECDH + AES-256-GCM. Keys sync across devices via password wrapping. Not even the server host can read them.

🎨

26 Themes, Plus Your Own

Matrix, Tron, HALO, Cyberpunk, Dark Souls, Elden Ring, Minecraft, Win95 and more, plus a colour picker and a plugin system for your own.

🎞️

GIF Search & /gif Command

Search and send GIFs inline, powered by Tenor. Free API key, one-click admin setup. Star the ones you reuse.

📁

File Sharing

PDFs, docs, audio, video and archives, with inline players. 25 MB per file by default, raise it as far as your disk allows.

🔗

Link Previews

Automatic OpenGraph previews for shared URLs with title, description, and thumbnail.

Slash Commands

/shrug, /tableflip, /roll, /flip, /me, /tts, with autocomplete and descriptions.

🔍

Message Search

Ctrl+F to search any channel. Results with highlighted matches and jump-to-message.

📌

Pinned Messages

Admins can pin important messages. Dedicated panel to browse all pins in a channel.

🛡️

Moderation Tools

Roles with per-channel permissions. Kick, mute, ban, IP bans, slow mode, automod link filtering, and an audit log.

🌐

Multi-Server

Add friends' Haven servers to your sidebar. Live online/offline status indicators.

🔔

Notification Sounds

5 distinct tones. Per-channel volume. Enable/disable per channel. Unread badges persist.

🎮

Games & Activities

Shippy Container, Flight, Learn to Fly 3, Bubble Tanks 3, Tanks, Super Smash Flash 2, and .io games. Server-wide leaderboards. Flash games via Ruffle emulator.

🧵

Threads

Branch a conversation off any message. One button lists every thread in the channel, with search.

🔑

Single Sign-On

Sign in with your own identity provider: Authentik, Keycloak, Authelia, Auth0, anything speaking OpenID Connect.

🤖

Bots & Webhooks

A REST API for bots: send messages, play soundboard sounds, register slash commands, join voice, get signed callbacks.

⬆️

One-Click Updates & Backups

Update from inside the app. Haven backs itself up first, then restarts. Backups also run on a schedule, with restore.

📲

Push Notifications

Real-time notifications on mobile and desktop, with UnifiedPush if you would rather leave Google out.

🎭

Stickers, Personas & Polls

Your own sticker packs and emoji, alternate characters with ::Name, polls, and a soundboard.

🚪

Guests & Invites

Temporary guest logins, invite links, and per-channel join codes that rotate on their own.

🌐

8 Languages

English, French, German, Spanish, Polish, Russian, Chinese and Brazilian Portuguese, community translated.

☁️

Connect Without Port Forwarding

Built-in Cloudflare and LocalTunnel support, plus guides for Tailscale and reverse proxies.

Honest Comparison

Haven vs. the incumbents

Haven Fluxer Discord Slack Signal
Self-hosted (you own the data)
No account with a company
End-to-end encrypted DMs
Voice chat Paid
Screen sharing Paid
Open source
Themes / customization 25+ CSS Limited Limited
Group channels
No email/phone required
Free forever (no paid tier) Freemium Freemium Freemium
Friends join with zero install
Works on mobile browsers App only App only App only
Import history from Discord n/a
Get Started

Download Haven

One zip file. Unzip, double-click, done.

⬡ Haven Server v4.2.0

Latest stable release · Windows, macOS & Linux · ~5 MB

v4.2.0Latest One wrong STUN server no longer takes out voice between browsers. If an admin sets their own STUN servers, Haven used to replace its built-in ones rather than add to them, so a single mistyped address left browsers unable to reach each other across networks while phone clients kept working, which read as Haven breaking web calls. Haven now tests the servers you configure, names any that do not answer, and falls back to its own if every one of them is unreachable and you have no TURN relay. Your setting is never changed. Themes get a written contract that says which parts will not move without a major version, with an authoring guide, so custom themes stop breaking on updates. Bots can clear up to 100 messages in one call instead of one at a time. Also cleared 12 dependency advisories, 7 of them high, two of which sat directly under the chat transport itself. No migration steps. Thanks to @Vinylwalk3r, @birdcrazy, @dronostyka and @bernardokcosta.
Download →
v4.1.0 Deleted attachments really are deleted now, and bots can play audio in voice. A file moved out of a channel by deleting its message could still be fetched by anyone who had seen it, which is fixed, and registration can no longer hand out admin on a server that already has one. Bots with voice permission can upload an MP3, WAV or OGG and have it played to the channel, with a queue and a skip. Screen shares that quietly stopped reaching other people now recover on their own, and there is a new opt-in setting for people whose screen share drifts out of sync over a TURN relay. Also fixed: attachment cleanup was failing silently everywhere it ran from the server, an admin who signs in through SSO could not hand over admin at all, two memory leaks in the client, several themes missing from the admin theme list, and the Discord bridge relaying image-bot posts as links instead of pictures. No migration steps. Thanks to @bernardokcosta, @birdcrazy, @RCCore and @Raidenphantom.
Download →
v4.0.0 Haven now bridges to Discord. Pair a Haven channel with a Discord channel and messages cross both ways, with each person appearing under their own name and picture rather than as one anonymous bot. Every pairing chooses its own direction and whether it mirrors the whole channel or only messages deliberately addressed to Discord. It runs inside Haven, so nothing new has to be exposed to the internet, and the setup walks you through making the Discord bot. Sending is behind a new permission that starts off for everyone, and pings are off by default. Search moves into a panel over the member list that survives channel switches. Bots get a voice gateway with scoped access, and there is a RepoCloud deploy button. Fixes: the welcome screen no longer hides behind the server banner, Steam and Spotify linking works for accounts that changed their password, channel code rotation leaves clients in a working state, the docked soundboard handle points the right way, and spent invite links stop reading as active. Admin settings are now grouped instead of one flat list of twenty. No migration steps, but take a backup first as with any large release. Thanks to @Raidenphantom, whose own Discord bridge surfaced two real gaps in this one.
Download →
v3.50.0 Steam and Spotify linking works again, images stop disappearing on a tab left open for days, and you can see what is signed in to your account. Account linking had been broken since 3.45.0 and failed with nothing but "Internal server error"; it needs no changes to your existing keys once you update. Remote images and GIFs quietly stopped loading on a browser tab left open over a weekend, leaving a blank space where the picture should be, which is fixed and no longer needs a reload. Settings now has a Sessions pane showing the devices with Haven open right now plus a password-protected button to sign the rest out, and signing out now really does invalidate the old sign-in everywhere rather than only disconnecting it. Also adds a search box for the member list, orders members by role so admins and moderators sit at the top, adds profile picture borders, and lets you stop GIFs in chat from looping. Fixes automatic language selection. Thanks to @birdcrazy, @Bo0sted, @bernardokcosta, @josolanes and TGS.
Download →
v3.49.0 Brazilian Portuguese, the Google connections you could not opt out of are gone, and admins can finally see who is using all the storage. Portuguese is the eighth language and the only one translated in full, every phrase in the interface, reviewed by a native speaker. The bundled fonts mean Haven no longer calls Google Fonts to draw text, the Google STUN servers are out of the voice pool, and Android push now has a switch of its own since Google is what wakes the phone. All Members shows the upload storage each person is using, broken down by channels, direct messages and avatars, with a filter that ranks everyone. Invite links can now stand in for the registration token, so a link works on its own. Admins get a warning in the header when the disk reserve runs out, instead of only a line in the log. Fixes: banned users no longer appear in @mention suggestions; the sidebar updates when a main channel is deleted; and Last.fm album art loads again. Security: webhook callbacks now resist address forms written to slip past the check, are validated against what a hostname really resolves to, and are pinned to that address so a second DNS answer cannot redirect them. Thanks to @bernardokcosta, @Bo0sted, @birdcrazy, @josolanes and @KentuckyFriedBlyat.
Download →
v3.48.0 Every thread in a channel in one searchable list, display names in any language, and Haven now keeps disk space in reserve so a full server stays fixable. Threads were only reachable from the message that started them; a new button in the channel header lists them all with who started each one, how many replies it has and when it was last active, and a search box filters by text or author. Display names accept letters from any script, so Chinese, Japanese, Korean, Cyrillic, Arabic and Hebrew names no longer have to be transliterated. A full disk used to wedge a server completely, because deleting the files that filled it is itself a write; Haven now refuses to hand out the last of the space, so there is always room to delete. Also adds a role permission for seeing every channel including ones created later, invite buttons on the member lists, and a cancel button for uploads in progress. Fixes: signing in through Authentik and other providers that keep the trailing slash on their address; role editor buttons that did nothing at all on a half-updated server; and Haven now refuses to start on an install where an old leftover file was quietly overriding current code. Thanks to @birdcrazy, @Amnibro, @RCCore, @KentuckyFriedBlyat and @Amatsutsumi.
Download →
v3.47.0 The emoji picker is rebuilt from Unicode's own list, role permissions apply straight away, and your phone stops notifying you about your own messages. The picker no longer relies on a hand-written list with gaps: the server builds the whole categorised set from Unicode's published data and your device draws them in its own font. A copy ships with Haven so it works offline, and the optional monthly check for a newer standard is off unless you turn it on. Fixes: ticking a permission on a role now reaches everyone holding it instead of waiting for them to sign out and back in; a device that had been used with a second account could push your own messages back to you; white button labels on the lighter themes are now dark and readable; the Voice & Connectivity settings finally have a sidebar entry; and spoilers no longer leak custom emojis, code blocks or link previews. Thanks to @Bo0sted, @josolanes and @birdcrazy.
Download →
v3.46.0 A way to spot accounts parked online to watch the server, an invite-users permission, and a fix for files pasted into threads posting instantly. A new Settings → Moderation section lists accounts that have stayed connected and shown online for hours without posting, joining voice, or changing status, which is what a script logging the server looks like since a real client goes idle on its own. Threshold is yours to set, it is read-only, and moderators who can ban or kick see it too. Also adds an invite-users permission so you can let someone bring people in without handing over the whole server, shows which settings are coming from an environment variable instead of leaving the box looking empty, and puts a short "Haven can't verify who anyone is" note on new DMs. Fixes: pasting a file into a thread no longer posts it before you press send, channel management no longer reaches into channels it was not granted on, and deleting a channel or a DM image now cleans up the file instead of orphaning it. Thanks to @test1 and @birdcrazy.
Download →
v3.45.0 Sign in with your own identity provider. Members can now sign in with an account from Authentik, Keycloak, Authelia, Auth0 or anything else that speaks OpenID Connect, instead of a Haven password. Set it up under Settings → Security. Because those members never type a password into Haven, and encrypted DMs are unlocked by a key derived from what you type, they set a separate encryption passphrase the first time they sign in and enter it again on each new device. It never reaches the server, so nobody can reset it, including the admin. Also fixed: a channel setting the server refused would still look like it had changed, the blank bar under the debug footer in the desktop app is gone, and follow-up messages now line up with the message above them on every density and theme. Thanks to @Lordingard and @Amnibro.
Download →
v3.44.2 Handing over admin now puts the new admin in every public channel. Admins cannot leave channels on purpose, so whoever runs the server can see what happens everywhere. A transfer quietly broke that: the incoming admin only had the channels they had already joined, with no way to add themselves to the rest. They now get all of them automatically. Hiding a channel from your own sidebar is a personal setting and still works.
Download →
v3.44.1 YouTube embeds play again, and thread replies stopped skipping the message checks. Since 3.41.0 Haven has told browsers not to say which page a request came from when loading something on another site, which is what stopped X refusing to play its videos. YouTube wants the opposite and its player would not start, showing Error 153. Haven's two embeds now pass along just the server address, with no page path and no invite code, which suits both. Separately, replies posted in threads were ignoring the link policy, going through while the sender was muted, ignoring a read-only channel and having no length limit, because the thread handler never picked up the checks the normal one has. Popped-out DMs also were not showing link warnings, since the DM check was looking for a marker that is not in the page. Thanks to @BolVerK and @birdcrazy.
Download →
v3.44.0 The auto-mod setting for direct messages now actually does something, and screen sharing stops tripping over itself. DMs are end-to-end encrypted, so the server cannot read them and never could block a link inside one, but the setting was there implying otherwise. The check now runs in the recipient's app after it decrypts: disallowed links appear as plain text with a warning instead of something clickable, and images from those domains are not loaded. On the screen-sharing side, a watchdog that asked for a renegotiation when a stream dropped frames could loop forever, because each renegotiation reset the counter that was meant to stop it. That is now capped and backed off. Double-clicking the share button no longer starts two shares at once, audio is given priority over video during the bandwidth spike when a share ramps up to 1080p (the cause of the robotic warble), and screen audio that arrives before its video no longer gets stuck in the voice mixer. Thanks to @birdcrazy and @RCCore.
Download →
v3.43.0 Haven now loads images for your members instead of sending them to other sites, and the protections added in 3.42.0 are on by default. An image link in a message used to be fetched straight from wherever it was hosted, in every viewer's browser, which quietly handed that site the IP address of everyone who scrolled past. Haven fetches each image once, caches it, and serves it from your own server, so nobody's browser talks to anyone else. Old embeds also stop breaking when the original link expires. Auto-mod, the domain allowlist, the 24-hour hold on links from brand-new accounts, and the image cache all now default to on; the two settings that can actually break something, relay-only voice and automatic IP bans, stay off until you choose them. Also fixes two permission bugs: moderators holding the ban permission can now ban from the sidebar rather than only the admin members list, and the "also ban IP" permission can finally be granted to a role at all, having been missing from the role editor entirely. Thanks to @MutantRabbit767.
Download →
v3.42.0 Auto-Mod arrives, link previews stop leaking your members' IP addresses, and IP bans actually hold. A new Settings → Auto-Mod section lets you approve the domains people may link to and reject everything else the moment it is sent, across messages, edits, DMs, profiles and channel topics, with warn/mute/ban escalation and an optional hold on links from brand-new accounts. Link previews now obey the same list, which closes a quiet problem: Haven loads preview images straight from the other site in every viewer's browser, so a hostile link used to collect the IP address of everyone who scrolled past it without a single click. IP bans had two real defects, both fixed: the web gate and the connection gate disagreed about what an address is, so a ban blocked someone's web requests while their live connection kept working, and behind a reverse proxy Haven recorded the proxy's address for every visitor, which meant "also ban IP" would have banned the proxy and locked out the whole server. Bans now accept CIDR ranges and disconnect anyone already connected. Also adds relay-only voice, which hides member IP addresses in calls (Haven voice is peer-to-peer, so by default everyone in a call can see everyone else's address), and fixes message rate limiting that was counted per browser tab instead of per person.
Download →
v3.41.0 Twitter/X videos play again, web users stop getting dropped from voice every minute, and the desktop app stops burning CPU in calls. X refuses to serve its videos to anyone whose browser says where the request came from, and Haven's old default said exactly that, so every X embed showed a still frame and a dead play button. That default changed, and how much your address is shared is now a proper setting under Settings → Security. Web clients were also kicking themselves out of voice once a minute: Chrome slows a background tab's timers down, Haven mistook that for the computer waking from sleep, and rebuilt the connection every 60 seconds, which everyone in the call heard as a leave sound and a join sound. Haven Desktop had two frame loops that started at launch and never stopped, keeping the renderer drawing on every screen refresh through an audio-only call. Also fixes file themes inheriting the previous theme's effects, adds an in-call control dock and a one-click layout switch to the optional Braid Layout, lets channel creators invite to their own private channels, and updates adm-zip for CVE-2026-39244. Thanks to @Amnibro, @Bo0sted, @anupamme and @AlexT2803 (#5444, #5456, #5463, #5466, #5468, #5473, #5475, #5476, #5477).
Download →
v3.40.0 GIF search works again on new servers, names get their own line in the member list, and a silent startup failure is fixed. GIPHY stopped handing out keys to new servers, so GIF search could never be switched on; Tenor is now the recommended provider and existing GIPHY keys keep working. In the member list a custom status and a game no longer crowd out the username, whatever you are doing moves to a smaller line underneath. Haven could also appear to crash on launch when its port was already taken: it now says which port and why instead of leaving an invisible copy running. The status bar shows an address other people can actually connect on rather than localhost, the profile card no longer opens behind the member list on narrow windows, and Haven runs on Node 24 and 26. Also adds the optional Braid theme and layout, both off by default. Thanks to @Amnibro and @birdcrazy (#5465, #5471, #5472).
Download →
v3.39.0 Zoom the whole interface, keyboard control for the emoji picker, and sliding switches. A new Zoom slider scales the entire app from 70% to 150% rather than just the text, so sidebars, avatars, icons and spacing all stay in proportion and the layout reflows instead of running off the screen. The emoji picker is now fully keyboard-driven: Ctrl+E opens it, arrow keys move the selection, and Enter inserts. Settings that turn something on or off are sliding switches now, with a Toggle Style option if you prefer the classic checkboxes. Your status dot became a proper button, and the status menu can flip music and game activity sharing without opening Settings. Also fixes AI noise suppression, which crackled constantly and stopped working after rejoining a call, a member-list menu that did nothing on narrow windows, and channel roles that could not delete what they were allowed to. Thanks to @Bo0sted, @Serionard and @birdcrazy (#5458, #5459, #5461, #5462, #5464).
Download →
v3.38.0 Bulk message deletion, ban appeals, a configurable channel-creator role, and working AI noise suppression. Moderators can now select several messages and delete them in one go, right from the same tool used to move them. Banned members who sign in with the right password now see why they were banned and can send the admins an appeal, which shows up next to their name in the Banned Users list. Admins can choose which role a channel’s creator automatically gets, so trusted members can manage the channels they make. The “Suppression (AI)” noise mode actually works now. It had been silently passing your mic through untouched. Also includes optional Cloudflare Turnstile and a new-account rate limit to slow bot waves, an admin bulk-cleanup tool, and a batch of voice and screen-share stability fixes (maximizing the window no longer looks like it drops you from a call). Thanks to @Serionard and @birdcrazy (#5444, #5457, #5458, #5460, #5461).
Download →
v3.37.2 A round of fixes and polish: reliable link previews, a working emoji menu, a readable admin reset window, and UI that scales with your font size. Link previews now load consistently on a channel full of links, instead of some cards appearing and others silently dropping. The emoji suggestion menu (the popup when you type a colon and an emoji name) no longer stops working after you use it inside a message edit box. The admin password reset window was showing raw placeholder labels instead of real sentences, which made it look broken; it now reads normally and explains that the person being reset needs two-factor authentication turned on first, which is a security requirement rather than a bug. The channel ID tag, the header action icons, and the left-side voice channel user list now grow with the Font Size setting under Settings → Layout & Density. The Matrix theme’s message editor no longer renders as a solid green block. This release also refines the remote-access guide with a safer Tailscale option; the emoji-menu fix and that guide both came from Bo0sted (#5450, #5451, #5452, #5454).
Download →
v3.37.0 A big emoji picker upgrade, right-click message menus, and welcome messages that finally stick around. The emoji picker now scrolls through every category in one continuous list with sticky headers, puts your server’s own custom emoji front and center, and adds skin tones, a hand button next to the search bar lets you pick a tone, and your choice is remembered and applied everywhere (the picker, reactions and quick reactions). Right-clicking a message now opens a context menu with the same actions as the hover toolbar (edit, reply, quote, pin, react, thread, copy link, protect, delete), and you can start typing anywhere to jump straight into the message box. Welcome messages are now permanent: instead of a one-time flash that only whoever was looking at that channel ever saw, a new member’s welcome is saved to the channel and stays in history for everyone, with a per-channel toggle in Channel Functions that is on by default for your first channel. Also includes a Steam linking fix for servers behind a CDN or proxy from KevonLin (#5445, #5446, #5447, #5448, #5449).
Download →
v3.36.0 A tidier voice panel and steadier audio after a reconnect. The voice list only shows mic and speaker icons when someone is actually muted or deafened now, drops the redundant “you” tag next to your own name, and compacts the LIVE badge to a red dot plus viewer count, hover it for the full “who is watching” detail. On the connection side, voice recovers more reliably after a brief disconnect, and Haven no longer hands the browser five or more STUN/TURN servers, which was slowing reconnects. There is also a new opt-in Debug toggle for the case where you rejoin a call and still cannot hear one person until you leave and rejoin again (#5444).
Download →
v3.35.0 Better behaviour behind Docker, proxies and tunnels. If you run Haven behind Docker port mapping, a reverse proxy or a Cloudflare Tunnel, linking Steam or Spotify could send you back to the wrong address and fail. You can now set your public address once as PUBLIC_URL in .env and both link flows use exactly that. Admins can also change a Steam, Spotify or Last.fm key straight from Settings instead of hand-editing .env and restarting, and a replaced Steam key takes effect immediately rather than on the next poll. Both of these came from KevonLin.
Download →
v3.34.0 Keep the GIFs you actually use. The GIF picker has a Favorites tab now: hover any GIF, click the star in its corner, and it is saved for next time. The search box filters your favorites too, so a big pile stays usable. They live in your own browser, so nothing is uploaded anywhere and the tab works even if your server has no GIPHY key. This release also fixes the ping figure in the status bar, which was showing a more or less random number instead of your real latency, and two voice bugs: being filtered out of your own voice channel so that everyone could see you in the call except you, and voice rows sprouting a blank-looking second line once someone picked up a LIVE or camera badge.
Download →
v3.33.0 See what everyone is playing and listening to. Haven can now show a friend’s current game or track in the member list and on their profile. Music works through Last.fm, which just needs your username and covers Spotify, Apple Music, YouTube Music, Navidrome and Plex in one go; games work through Steam. All of it is optional, can be hidden per-category, is never shared while you are Invisible, and is never saved to the database. Settings is also reorganised into clear groups and can finally be resized, .mov videos play inline instead of forcing a download, and a batch of fixes landed for @mentions, image copying, the status bar toggle, the emoji customiser and the language flags.
Download →
v3.32.0 Live progress bars when restoring a backup, plus a fix for Apple Silicon Docker images. Restoring a backup now shows a real upload percentage and then a server-side extraction bar, so a large restore no longer sits silent for many minutes (#5438). You can also throttle how often notification pop-ups appear from Settings, the status bar hides your server address by default each session until you click to reveal it, and the sidebar collapse arrows no longer leave a gap on narrow windows. The Docker image ships linux/arm64 again, so Apple Silicon Macs no longer fall back to slow emulation (#5439).
Download →
v3.31.2 The manual Download Backup button works on large servers again. Automatic backups were already fixed, but clicking Download Backup on a big server (tens of GB of files) built the whole archive before sending anything, so it sat silent long enough for a proxy in front of Haven to return a 502. The download now streams straight to your browser as it builds, so it starts right away (#5434).
Download →
v3.31.1 Restoring a large backup works again. Restoring a full backup that included files used to fail after about 30 seconds with a “failed to fetch” error, because the server cut off long uploads, capped the upload at 4GB, and read the whole archive into memory at once. Restores now allow long uploads, accept large files, and stream straight to disk, so a 15GB or larger backup restores without crashing (#5436). The backup screen also now notes that only full backups, ones that include both Messages and Uploaded files, can be restored in place (#5435).
Download →
v3.31.0 Rich link preview cards for Bluesky and X posts, plus a fix for backups that include files. Social links now embed as full cards with the author's avatar, the post text, sized media, and engagement counts, matching the mobile app, and embed size is a single Off / Small / Medium / Full preference shared by Settings and a per-embed toggle (#5429, contributed by Amnibro). Backups that include files no longer crash the server: they used to build the whole archive in memory and run out of RAM once the uploads folder got large (around 30GB), and now stream straight to disk instead (#5434).
Download →
v3.30.3 The sidebar “Create Channel” section no longer shows up as a dead control for users who can only create sub-channels. Users who held create_channel only inside one specific channel could still see the always-visible sidebar section for creating a brand-new top-level channel, but every attempt was correctly denied, since that permission only covered sub-channels of the one channel it was granted in. That section now only appears for admins and users with a genuine server-wide create_channel grant.
Download →
v3.30.2 Betsy Ross and Gadsden flags now match the proportions of the rest of the Flags category. They were noticeably flatter and wider than every other flag since their source artwork wasn't the same 4:3 shape as the bundled country flags. Both are now cropped to match, full canton on Betsy Ross, full snake and lettering on Gadsden, so the whole Flags category looks consistent.
Download →
v3.30.1 Flags emoji now render on Windows. Windows browsers don't draw Unicode flag emoji, they show the bare two-letter country code instead, so the new Flags category looked like a list of letters (“US”, “GB”, “DE”…) there. Every country flag is now a bundled image, so the whole category renders the same on every platform, in the picker, in messages, and in reactions.
Download →
v3.30.0 A new Flags emoji category, smarter emoji search, and fixes for the last-read divider and channel-scoped roles. The emoji picker now has a Flags category with a wide set of country flags, the US flag leads, followed by the classic Betsy Ross and Gadsden flags, which ship built in and drop into messages and reactions like any other emoji. Emoji search now understands punctuation, so typing ? finds ❓ and ! finds ❗. The “new messages” divider and jump-to-unread scroll work again after a regression (#5432), and per-channel role permissions such as “create channel” or “rename sub-channels” no longer leak server-wide (#5433). Also adds a maximize toggle to the screen-share pop-out window (#5430).
Download →
v3.29.0 Spoiler & hide-image controls, granular guest channel access (#5401), grouped messages in DMs and threads, plus invite-link management. You can now mark an image as a spoiler when sending it (it shows blurred until clicked), or right-click any image to hide it from your own view. Guest access is now picked channel by channel, sub-channels and voice rooms included, so guests reach exactly the rooms you grant, fixing nested and voice channels that were unreachable before (#5401). Back-to-back messages from the same person now group together in pop-out DMs and in threads, the way the main channel already does. And invite links got a full management menu: multiple codes with per-link channel grants, expiry, and use limits, plus one-click copy and a community auto-join link.
Download →
v3.28.0 Admin-only Hide Channel, a screen-share audio sync fix over relays, and live custom-asset updates. Admins can now right-click to hide a channel from their own sidebar without leaving it (#5409). Screen-share audio now defaults to native playout so it no longer drifts out of sync over TURN relays, with Web Audio mixing as an opt-in for the >100% volume boost (#5426); custom sounds, emojis, and stickers now update live for everyone instead of after a restart (#5426); and voice peers now self-heal after a brief disconnect so you're not left silent to some people (#5427). Also: blocked sub-channel access via crafted codes / deep links (#5408), guests now see the Join Voice button in allowed channels (#5401), the status-bar server address copies correctly in the desktop app, and a full Russian retranslation (#5421).
Download →
v3.27.0 Admin-configurable STUN/TURN voice servers, plus a screen-share close-button fix. Server admins can now point voice and screen share at their own STUN/TURN servers from Settings → Voice & Connectivity, with no env vars or redeploy, and clients now show a clear warning when no STUN server is reachable instead of silently hanging on “ICE: Connecting…” (#5399). The stream viewer's header close (✕) button no longer stops your own broadcast or breaks streams when closing, it now hides them the same restorable way the per-tile ✕ button does.
Download →
v3.26.0 Per-channel soundboard toggle, plus a batch of moderation, upload, and screen-share fixes. Admins can now switch the soundboard on or off per channel from the Channel Functions menu, right next to Voice, Text, Streams, Music, and Media, when it's off, nobody can play sounds into that channel's voice chat. Also: auto-cleanup no longer deletes persona avatars or other non-post files (#5423); sub-channel Rename and Organize now follow the rename_sub_channel / manage_sub_channels permissions instead of ignoring them (#5424); non-image attachments queued on their own now actually send (#5425); late joiners and tile-less viewers can reopen an active screen share; and screen-share audio no longer plays twice (#5426).
Download →
v3.25.2 Hotfix: app loaded completely blank, no servers, channels, users, or DMs, and nothing clickable. Three front-end modules (app-messages.js, app-media.js, app-ui.js) had been silently truncated mid-file in an earlier commit. Because the app bundles these modules together at startup, a single unterminated file is a fatal parse error that halts the whole interface, so the page connected to the server but rendered nothing and ignored every click. All three files were restored to their complete form. If you were stuck on a blank Haven screen, update and hard-refresh (Ctrl+Shift+R) and it loads normally again.
Download →
v3.25.1 Hotfix: Haven Desktop stuck on “Loading Haven…” on strict CSP clients. app.html had a single inline <script>i18n.init();</script> tag that the page Content Security Policy (no 'unsafe-inline' in script-src) was refusing to execute on strict clients (notably the Haven Desktop preload), which left the locale layer uninitialized and the splash hanging. Moved the bootstrap call into i18n.js itself and removed the inline tag from app.html. init() is idempotent so existing await window.i18n.init() callers still resolve against the same shared promise.
Download →
v3.25.0 Soundboard sidebar mode, non-image file upload queue (#5417), and a sweep of fixes for the post-3.24.0 soundboard rework. The soundboard now pins as a non-blocking side panel with grouped categories, search, and per-sound visibility / hide controls. Non-image files (PDFs, audio, video) now queue as removable chips before sending instead of uploading on selection. The Sound Manager “Assign to Events” dropdown was rewritten to stay inside the modal (was overflowing the window on long sound lists). Three reported issues fixed: #5417 (instant non-image upload), #5418 (multiple menu button icons broken + dropdown overflow), #5419 (popout blocking Sound Manager access). About 15 mojibake'd theme logos and UI icons that survived the v3.17.0-era cp1252 round-trip damage were also restored. Also: Bluesky link previews (#5412), a link preview size picker, and the Auto-heal-on-zero-membership safety net.
Download →
v3.24.0 Bulk sticker upload (#5406), a new Desktop mute/PTT cue toggle (Haven-Desktop #37), and two safety fixes from main. Sticker management can now batch-upload multiple files with filename-based names and an optional shared pack. Desktop users can now turn off mute / deafen / push-to-talk cue beeps without muting all Haven sounds. This release also includes the already-on-main fixes for DM deletion moving sticker library files into deleted-attachments/ (#5411) and for private channel message links leaking a joinable channel code (#5408).
Download →
v3.23.0 Private webhook bot replies (#5404) plus the full 3.22.0 batch. Bots can now send recipient-scoped ephemeral messages via POST /api/webhooks/:token with ephemeral: true and recipient_id. The server validates channel membership, delivers only to the targeted user, skips history persistence, and clients show an “Only visible to you” pill so private bot output is clearly marked. This release also includes the previously pending v3.22.0 work from main.
Download →
v3.21.0 Server-side per-channel mute + #5399 followup fixes. Channel mute state now lives on the server (new user_channel_prefs table + three endpoints), so muted channels stop pushing to mobile via FCM and to other browsers via web-push. Existing clients converge automatically on first connect. Also patches two latent SyntaxErrors (duplicate const loginForm in auth.js + orphan _setupServerBar() half-merge in app-ui.js) that had been quietly sitting in main since the v3.19.0 Guest mode merge and caused a blank login / blank app for anyone updating directly from v3.18.0. Server-side /api/ice-servers defaults refreshed to match the v3.20.1 client pool. Right-click → Copy image now actually copies the image (was silently rejecting due to dropped user-gesture token; rebuilt around Electron IPC for Desktop and a promise-based ClipboardItem for the web). Image and member context menus raised above the lightbox and PiP DM. Password eye-icon no longer overlaps the typed characters.
Download →
v3.20.1 Emergency fix for voice / screen-share outside local network (#5399). Both hardcoded default STUN servers had gone offline (one was decommissioned upstream, the other stopped responding), leaving any Haven instance using the default ICE config unable to connect users across the public internet. Symptom was LAN-to-LAN voice still working while anyone outside the server’s subnet got stuck on “ICE: Connecting…” and soundboard / screen-share failed to external users. Replaced the defaults with a non-Google preferred pool (Cloudflare, Metered, Twilio) plus a startup health probe that prunes any STUN server that doesn’t respond with a server-reflexive candidate within ~2.5 seconds. If every preferred server fails the probe, a Google fallback pool engages automatically. Admin-configured TURN servers continue to take precedence so anyone running their own TURN is unaffected.
Download →
v3.20.0 IP-level bans for moderators. New ban_ip role permission gates an “Also ban recent IP address(es)” checkbox in the Ban User modal (up to 5 most-recent IPs per user) and a new Banned IPs manage modal under Settings → Admin → Members for direct IP ban / unban with a reason. Enforced at both the HTTP layer (30-second cache) and Socket.IO layer; live sockets from a freshly-banned IP are disconnected immediately. Exact-string match in v1 (no CIDR / IPv6 normalization).
Download →
v3.19.1 Desktop-only fixes paired with Haven Desktop 1.4.21: Settings checkboxes and keybind recorders are now responsive immediately on opening the modal (previously dead until you clicked the matching left-nav item). Adds two opt-in Debug toggles (“Disable GPU vsync” and “Remove Chromium frame-rate cap”) for users hitting Nvidia G-Sync / VRR FPS-drop issues. Both off by default and require restart.
Download →
v3.19.0 Join as Guest (#5381). Admins can enable a guest-login mode and whitelist specific channels guests are auto-joined to. Guests get a real (temporary) account with a 12-hour token, no DMs, no E2E key derivation, and a visible Guest badge in the member list and message header; the row is cleaned up a few seconds after their last socket disconnects. Plus a fix for per-bot slash-command routing (#5398): bots with the same command name in different channels now route to the right callback URL instead of whichever bot was saved last.
Download →
v3.18.3 Desktop shortcut-recorder now shows a specific, actionable toast when a bind fails (“install libuiohook” vs “pick a different combo”) instead of a one-size-fits-all message. Pairs with Haven Desktop 1.4.20.
Download →
v3.18.2 Thank You / donors modal restructured so the Ko-fi donate button stays pinned at the bottom instead of falling below the fold on shorter screens. The tier lists own the scroll now.
Download →
v3.18.1 Screen-share encoder defaults tuned for modern home internet (#5379): bitrate caps raised 2-3x per resolution, encoder hinted as “motion” content, and degradationPreference: maintain-framerate set so the encoder drops resolution before chopping frames under bandwidth pressure. Big quality bump for games / video on screen-share.
Download →
v3.18.0 Server-synced nicknames (#5394): nicknames now persist server-side so they follow you to new devices and browsers (still private, only you see them). Per-channel default role (#5389): Channel Functions → “Default Role” picks a server role auto-granted to every current and future member of that channel. Admin-adjustable max sticker size (#5392), bump the 1 MB ceiling up to 10 MB if you want stickers to double as a GIF library. New /break slash command + persona-compacting hard-stop (#5393) so back-to-back persona messages stay visually distinct for everyone. Channel auto-clear messages timer (#5390), wipe messages on a schedule without deleting the channel itself. Fixes for screen-share reshare ghost tiles, channel-list silence watchdog (#5391), and landing-page emoji encoding.
Download →
v3.17.4 iOS Web fix: voice-channel audio and screen-share audio now actually play on iOS Safari, iOS Chrome, and every other iOS browser. WebKit’s MediaStreamAudioSourceNode is silent for remote WebRTC tracks, so Haven’s Web Audio routing dropped all incoming voice into a black hole on iOS. Calls looked connected but you heard nothing. iOS now skips the Web Audio graph and plays incoming audio natively (trade-off: no >100% volume boost on iOS only). Also restored the Apply voice processing to screen-share audio opt-in toggle (Settings → Debug) for users sharing voice content like tutorials or podcasts.
Download →
v3.17.3 Mobile “Join Voice” button no longer stayed visible after joining the call (#5387), CSS !important was beating the JS inline-hide. Language picker now actually switches the whole UI on change (#5386), dynamically-rendered strings used to keep their previous language until next reload; setLocale() now reloads. New admin setting Default Language for new users’ first visit. Screen-share audio is now full-fidelity by default (#5379), voice processing (echo cancel / noise suppression) is no longer applied to system audio, so music and game audio sound the way they should. Mic is unchanged. Bundles Haven Desktop 1.4.17 (occluded-window screen-share encoder stall fix).
Download →
v3.17.2 Mobile fixes: right-side userlist no longer hides behind the message composer between 769-900px (#5384), and the "Voice / Stage active" indicator now dims the background like the Members button does (#5385). Also: the pin_message role permission now actually shows the Pin/Unpin context menu entry (frontend was checking moderator level instead of the permission). GUIDE.md gains a Reverse Proxy section covering Caddy, nginx, and tunnel + Caddy chains.
Download →
v3.17.1 Critical hotfix for the 3.17.0 ERR_INVALID_PACKAGE_CONFIG crash (#5374) caused by a stray non-UTF-8 byte in package.json. Show/hide password toggle on every password field. Expired tokens redirect to login instead of leaving you on an empty channel list (#5375).
Download →
v3.17.0 Pinned messages PiP floating panel (#5370): pop-out button opens a draggable, resizable overlay so you can browse and manage pins without leaving the message feed; fullscreen button added to pins PiP. Muted channels now block bot/webhook notifications and badge re-seeding on reconnect. DM status dot offline display fix (#5372). PiP z-index fix (#5373). Pinned panel button alignment fix
Download →
v3.16.15 Voice chat: actual root cause of the recurring self-vanish glitch (#5347) fixed, channel code rotation desync caused voice clients to hold stale codes after server rotation, breaking reconnects until manual rejoin; null audioCtx crash on voice leave patched; version display regression from v3.16.14 corrected (servers reported v3.16.13 despite running v3.16.14) (#5369)
Download →
v3.16.14 Voice chat: server-side 4 s grace period before evicting a disconnected user so transient blips never broadcast voice-user-left to peers; fast-path rejoin that skips RTCPeerConnection renegotiation when the socket reconnects within the window; client-side roster watchdog that auto-fires voice-rejoin if we’ve silently dropped off the server list, fixes the recurring self-vanish glitch (#5347)
Download →
v3.16.13 Channel and sub-channel composers are now drag-resizable up to 60% of the viewport (#5327). New sub-channels inherit their parent channel’s role access on creation (#5328). Voice chat: deferred soft-leave on transient socket blips so quick reconnects no longer tear down the mic and peers, plus a self-heal that emits voice-rejoin automatically when the right panel notices we’ve dropped off the server roster, no more manual leave+rejoin churn
Download →
v3.16.12 Voice chat audit: fixed missing-self in the right panel after server restart / reconnect races, stale roster ghosts after a reboot, and the “clicked Start Voice 15 times during an outage and got 15 toasts at once” spam-click flood
Download →
v3.16.11 Removed servers no longer reappear after a restart (Desktop bootstrap and sync paths now honor the local removed-set). Transient server restarts no longer log users out, the auth-error handler now requires three consecutive errors before bouncing to login
Download →
v3.16.10 Fixed displayed server version being stuck at v3.16.5 regardless of which release was installed (#5364, package.json was bumped off-by-one in v3.16.6 and never corrected). Also ships the originally-intended v3.16.5 code changes: editing a message from a DM PiP now works correctly, and encrypted upload failure toasts show the specific error
Download →
v3.16.9 Fixed not appearing in the voice panel or sidebar while in a voice channel after a socket reconnect caused the server snapshot to race ahead of the rejoin re-registration
Download →
v3.16.8 Fixed phantom unread badge on the current channel after returning from background: incoming messages bumped the badge while the window was hidden even if the user was already at the bottom; badge now clears immediately on window focus when coupled to the bottom
Download →
v3.16.7 Images attached alongside a persona message now send as the persona instead of the real account. Persona badge was showing “??” prepended to the label; now shows the correct icon
Download →
v3.16.6 Added Unpin button to the pinned-message panel (visible to users with the pin_message permission or admin). Fixed webhook management being locked to admins despite a dedicated manage_webhooks permission; users with that permission can now create, list, delete, and toggle per-channel webhooks
Download →
v3.16.5 Fixed editing messages in the DM PiP doing nothing (server resolved the wrong channel; client now sends the channel code). Encrypted image upload failure toast now shows the specific error instead of always saying “Encrypted image upload failed”
Download →
v3.16.4 Unicode letters (umlauts, accented characters, non-Latin scripts) now allowed in channel names. Fixed video and audio files appearing in the Files tab of the media gallery instead of Videos/Audio
Download →
v3.16.2 Fixed CMD window closing on startup for Windows users past v3.15.1 (cmd.exe exits instead of returning from a call :subroutine inside an else-if compound block; restructured to use goto labels). Fixed published file themes not surviving a page refresh or applying on the login page (socket was never exposed for preference saving; theme-init.js now injects the CSS link immediately for file themes)
Download →
v3.16.1 Clicking Leave Voice now clears the voice panel and sidebar count immediately without waiting for the server broadcast; stale in-flight broadcasts can no longer re-add a user to the voice panel after they've left
Download →
v3.15.8 The fix that was already shipped, but actually shipped this time. Every cache-bust ?v= string in app.html and app.js was pinned at 3.15.2/3.14.14 respectively, so browsers served stale client JS even on updated servers. None of the v3.15.3-3.15.7 client fixes (voice rejoin, sidebar sync, screen-share recovery, persona autocomplete) actually ran in any browser. Bumped them all to 3.15.8 to force a refresh
Download →
v3.15.7 Critical hotfix: getUserAllRoles was missing from the server's permission destructure, causing every voice user broadcast to throw a ReferenceError silently. Voice lists never updated after joins/leaves/mutes. Also fixed the saved server list being rejected with a 500 once it grew past ~50 servers
Download →
v3.15.6 Persona :: autocomplete no longer appears in fullscreen DM view, and nicknames no longer override persona display names on messages
Download →
v3.15.5 Screen-share reliability overhaul: fixed silent _renegotiate throw when signaling state wasn't stable (caused audio-but-no-video), late-joiner screen tracks skipped if webcam was also on, screen-share-started was emitting after renegotiation instead of before, and added a recovery handshake so receivers automatically ask the sharer to re-offer if no video appears within ~3s
Download →
v3.15.4 Voice presence drift fix: sidebar and right voice panel now always in sync, reconnect after socket drop now correctly uses the rejoin path instead of a delayed plain join that left peers with dead connections
Download →
v3.15.3 Ghost voice entries pruned on connection snapshot and get-voice-counts so users who already left no longer show in the sidebar or voice panel
Download →
v3.15.2 Thread panel z-index fix, persona autocomplete hidden in DMs and threads, persona tooltip showing raw i18n key, double close button in media gallery, gallery button hidden in DMs, OpenSSL not recognized on Windows bat startup
Download →
v3.15.1 Polish pass on the Channel Media Gallery + Personas: persona prefix changed to ::Name your message with autocomplete, @PersonaName mentions now resolve and ping the owner, fixed the bug where consecutive messages from different personas all stacked under the first persona's header, jump-to-message button on photo/video gallery tiles, video tiles open in an inline player instead of silently closing the gallery, image lightbox now sits above the gallery modal, top-bar header buttons follow the Colorful/Monochrome icon setting
Download →
v3.15.0 Channel Media Gallery: new 🖼️ button opens a five-tab modal (Photos, Videos, Audio, Files, Links) showing every shared media item in the channel. Personas: create up to 25 named alter-egos in your profile and send messages as one by typing >>Name your message, with persona badges and full moderation
Download →
v3.14.16 Message status icons (E2E lock, burn flame) reworked into a fixed right-anchored slot, no more right-gutter misalignment on compact or PiP messages. PiP parent message action controls anchored correctly. Cache-bust strings bumped to force browsers to fetch updated files
Download →
v3.14.15 Tightened fixed status slot padding in DM PiP to remove excess whitespace when one or both icons are absent
Download →
v3.14.14 Message status icons (lock/flame) pinned to a fixed right slot instead of flowing with text
Download →
v3.14.13 Status icons moved inline from separate right-gutter column
Download →
v3.14.12 E2E lock anchored at right:8px always; burn flame shifts left in JS when both icons are present
Download →
v3.14.11 Cache-bust query strings bumped on all script and stylesheet tags to force browsers to fetch updated files
Download →
v3.14.10 E2E recovery error messaging overhaul (no data-loss prompts on bad-password or network failures), recovery toast stays 8-10 s, composer z-index fix above theme particle effects, burn indicator cleanup, Manage Servers modal height fix
Download →
v3.14.9 Topic bar hidden in DMs; E2E recovery now fetches the partner’s key before reloading messages
Download →
v3.14.8 Burn flame position consistent on compact messages; burn indicator wired in PiP
Download →
v3.14.7 Burn icons placed correctly; E2E decryption self-heals on key-fetch miss
Download →
v3.14.6 DM channel codes are no longer exposed on the client. Removed “Copy DM Link” from the DM right-click menu and the copy-link button from the message toolbar in DMs. Server strips the code fields from DM channel payloads entirely
Download →
v3.14.5 Security: blocked third-party DM joins via channel code or message link (#5348). Added “Recover Keys from Backup” to the E2E dropdown, non-destructive recovery that preserves existing encrypted history
Download →
v3.14.4 Threads fully removed from DMs (toolbar button, preview, click handlers, server handlers - all gated). New `Add to Channel` entry in the user gear menu mirroring the right-click context menu
Download →
v3.14.3 Burn-after-read DMs actually burn now and the sender finally sees a flame indicator on their own message (#5325). Voice participant list refreshes properly when you're talking on one channel and viewing text in another (#5347 follow-up)
Download →
v3.14.2 Role Assignment Center fixes: per-user permission edits now actually persist across reopens, assigning one role no longer wipes sibling roles at the same scope, channel pane only lists channels the target user is in (with an inline picker to add them to a new channel), Transfer Admin removed from the perms grid (it was a no-op), and `assign-role` now validates `customPerms` against the caller to close a privilege-escalation hole
Download →
v3.14.1 Voice rejoin after random disconnects no longer leaves users invisible to each other with broken audio (#5347)
Download →
v3.14.0 Registration token gate alongside whitelist (#5344), default channels picker for invite joiners + private-channel safety fix (#5345), burn-after-read DM toggle is now persistent (#5280)
Download →
v3.13.0 Multi-role per user per channel (#5341), DM auto-cleanup banner (#5340), admin-configurable login session duration (#5294), webhook expansion (per-event subscriptions, HMAC signatures, retry, delivery health, new events, test-webhook, inbound reply_to & avatar override), link preview cache & rate-limit fixes (#5337), phantom taskbar badge fix, slow-mode media bundling fix (#5342), burn-on-read visual indicator (#5280), PiP input vertical resize
Download →
v3.12.0 Starter sticker pack, `:stickername:` shortcode, dedicated manage_stickers permission, sticker tab no longer auto-closes the picker, burn-after-read DM toast feedback & i18n fix
Download →
v3.11.2 Quick links to Bans/Deleted Users from members list, Manage Roles modal opens with role list visible, role modal resizes both directions, #5307 follow-up delete confirm i18n key fix
Download →
v3.11.1 #184 voice output device honored from first track-add via AudioContext sinkId
Download →
v3.11.0 Stickers (admin uploads + picker tab), DM PiP no-op when DM is already current
Download →
v3.10.13 Voice stability fixes: self-speaking indicator, temp-voice grace period, Desktop memory-reload safety, category collapse persistence, DM PiP fixes, Role Members button
Download →
v3.10.12 PTT lone modifiers + mouse4/5 + hold/toggle mode, themed delete confirms, rate limiter scoped to credential routes only, slash autocomplete Enter key
Download →
v3.10.6 Win95 theme dark-sections fix & softer dividers, multi-tier markdown lists, YouTube live embeds, Docker Update Now copyable command, HAVEN_DATA_DIR systemd doc
Download →
v3.10.4 Self-DM PiP open fix, DM PiP unread auto-clear
Download →
v3.10.3 #channel autocomplete, DM PiP z-index fix, voice highlight regressions
Download →
v3.10.2 Pinned-message indicator, manage_server category visibility fix, message ordering tiebreaker
Download →
v3.10.1 @everyone/@here mentions, #channel autolinks, duplicate role, voice ICE fix
Download →
v3.10.0 Drag-reorder remote servers, View Audit Log permission
Download →
v3.9.0 Drag-reorder tag categories, audit log, modal layout fixes
Download →
v3.8.0 DM Picture-in-Picture, configurable purge-on-ban
Download →
v3.7.0 Scheduled auto-backups, in-app update check, add-all-members
Download →
v3.6.0 Channel/message links, admin backups, update check, CORS fixes
Download →
v3.5.0 Threaded replies, toolbar customization, SSO auth improvements
Download →
v3.4.0 Quote/edit UX, bot API upgrades, SSO quality fixes
Download →
v3.3.0 Last read indicator, per-event volume sliders, server list sync improvements
Download →
v3.2.0 Mark as Read, pinned message jump, iOS Safari fixes
Download →
v3.1.1 Status bar toggle, server URL display, mobile fixes
Download →
v3.1.0 Server banners, server icon sync
Download →
v3.0.0 SSO registration, advanced search filters, reply notifications
Download →
v2.9.9 Encrypted server list sync, jump-to-bottom, edit-mode emoji picker
Download →
v2.9.8 Read-only channels, server-relayed mic illumination, role display picker
Download →
v2.9.7 Open-source STUN servers, STUN_URLS env var
Download →
v2.9.6 Custom Terms of Service, unpin fix
Download →
v2.9.5 License changed to AGPL-3.0
Download →
v2.9.4 Bot webhook callbacks, community server
Download →
v2.9.3 Android popup refresh, Desktop naming fix
Download →
v2.9.2 Per-app audio CSP fix
Download →
v2.9.1 View All Members permission fix
Download →
v2.9.0 Temp voice channels, voice permission fix, AFK idle fix
Download →
v2.8.9 Voice presence fixes, channel organize, collapsed sub badges
Download →
v2.8.8 Voice AFK presence fix, video thumbnails
Download →
v2.8.7 Donor & sponsor list update
Download →
v2.8.6 Heart/donate button position fix
Download →
v2.8.5 Noise gate, screen share rejoin, setup script fixes
Download →
v2.8.4 AFK voice channel rework, video embed fullscreen fix
Download →
v2.8.3 Bulk emoji upload, TTS permission, Shippy popout fix
Download →
v2.8.2 Camera device selector, TTS abuse fixes, E2E spoiler fix
Download →
v2.8.1 Camera selector, TTS fixes, channel sort sync, spoiler in E2E DMs
Download →
v2.8.0 Expanded permissions, deleted users list, configurable voice bitrate
Download →
v2.7.9 Custom login title, reset roles, Desktop push notif fix
Download →
v2.7.8 Upload progress bar, view all members, stream reopen, Docker fix
Download →
v2.7.7 Temporary channels, members list privacy, URL @ fix
Download →
v2.7.6 Per-feature channel toggles, popout menu
Download →
v2.7.5 Keyboard nav, dynamic sort, scroll fixes
Download →
v2.7.4 Account recovery codes, admin panel fixes
Download →
v2.7.3 Video fullscreen, PiP seek bar, stream tile fixes
Download →
v2.7.2 Scroll-to-bottom fixes
Download →
v2.7.1 Media toggle, channel functions polish, voice fixes
Download →
v2.7.0 Performance overhaul, RGB freeze fix, app modularization
Download →
v2.6.0 Android beta sign-up, auto-accept streams
Download →
v2.5.8 Auto-accept streams setting
Download →
v2.5.7 Submenu overflow fix; email @mention false-tag fix
Download →
v2.5.6 Channel re-parenting, modal resize/expand, organize drill-down
Download →
v2.5.5 Settings layout hotfix; TOTP 2FA fixes
Download →
v2.5.4 Link preview fixes: Reddit JSON API, fxtwitter image fallback, HTML entity decoding
Download →
v2.5.3 Built-in AOL sounds bundled with every server
Download →
v2.5.2 manage_soundboard permission; fxtwitter, Pixiv & oEmbed autodiscovery fixes
Download →
v2.5.1 Bug fixes: image upload race, DM reply encryption, voice reconnect; manage_emojis permission
Download →
v2.5.0 One-click installer, FCM push notifications, admin update banner
Download →
v2.4.0 Emoji upload crop/zoom editor, jumbo emoji messages
Download →
v2.3.9 Two-factor authentication (TOTP), native OS notifications
Download →
v2.3.8 Private channel code visibility, Docker healthcheck fix
Download →
v2.3.7 Private channel invite lockdown, creator auto-mod role
Download →
v2.3.4 Right-click voice users, donor tier styling
Download →
v2.3.3 Member list DM/nickname, sidebar members, admin recovery
Download →
v2.3.2 Sound Manager, kick channel revoke, font scaling
Download →
v2.3.1 Plugin CSP fix, health check 404 fix
Download →
v2.3.0 Webcam video, plugins, font size, channel invites
Download →
v2.2.5 Security fixes, desktop code removed
Download →
v2.2.4 Security hardening, SSRF fix, JWT verification
Download →
v2.2.3 Screen share fixes, role save UX
Download →
v2.2.2 FORCE_HTTP, auto-assign roles, Docker ARM fix
Download →
v2.2.1 Mobile UI fixes, TURN credential fix, file upload fix
Download →
v2.2.0 CRT vignette, YouTube embeds, emoji flip
Download →
v2.1.0 E2E multi-device sync, channel organizer fix
Download →
v2.0.1 Security fix (installer removal)
Download →
v2.0.0 Discord import, E2E key fix, ARM64 Docker
Download →
v1.9.2 Image lightbox, emoji autocomplete, GIF avatars
Download →
v1.9.1 Auto-cleanup fix, server branding, emoji modal
Download →
v1.9.0 Custom emojis, emoji quickbar, JWT security
Download →
v1.8.2 PiP revert, YouTube playlists, bot fixes
Download →
v1.8.1 Upload limits, mobile refresh, E2E sync
Download →
v1.8.0 E2E encryption, Flash games, seek bar
Download →
v1.7.0 Role inheritance, voice dot colors
Feb 16, 2026
v1.6.0 Roles, voice controls, admin transfer
Feb 15, 2026
v1.5.0 Push notifications, emoji search
Feb 14, 2026
v1.4.7
Feb 13, 2026
v1.4.6
Feb 13, 2026
v1.4.5
Feb 12, 2026
v1.4.2
Feb 12, 2026
v1.4.1
Feb 12, 2026
v1.4.0 Display names, mobile voice
Feb 12, 2026
v1.3.0 DMs, user status, file sharing
Feb 12, 2026
v1.2.0 Voice UX, pinning, link previews
Feb 12, 2026
v1.1.0 Data isolation
Feb 11, 2026
v1.0.0First Release
Release notes →

🖥️ Haven Desktop v1.4.28

Latest stable release · Windows & Linux · Standalone installer

Connects to any Haven server, or hosts one for you. Bug reports and feedback are always welcome.

📱 Haven Android App RELEASED

Available now · Android · Google Play

Get it on Google Play

Built from the ground up by Amnibro. Thank you.

1

Install Node.js

Download from nodejs.org (click the big green LTS button). Restart your PC after installing.

2

Unzip Haven

Extract the zip anywhere. Desktop, Documents, wherever you like. It creates one folder.

3

Double-click Start Haven.bat

A terminal opens, does its thing, and your browser opens automatically. First boot takes ~30 seconds.

4

Create an account & invite friends

Register as admin, create channels, and share your IP + channel code. Friends open the link in their browser.

❤️

Support Haven

Haven is built by one person in their spare time and will always be free. If it's useful to you, a small donation helps keep development going.

☕ Buy me a coffee on Ko-fi

Ko-fi takes zero fees, 100% goes to the developer. No account required to donate.