- TypeScript 83.1%
- Erlang 7.5%
- CSS 5.4%
- MDX 2.1%
- JavaScript 0.7%
- Other 1.1%
| .devcontainer | ||
| .github | ||
| .vscode | ||
| config | ||
| dev | ||
| fluxer_admin | ||
| fluxer_api | ||
| fluxer_app | ||
| fluxer_app_proxy | ||
| fluxer_desktop | ||
| fluxer_devops | ||
| fluxer_docs | ||
| fluxer_gateway | ||
| fluxer_integration | ||
| fluxer_marketing | ||
| fluxer_media_proxy | ||
| fluxer_relay | ||
| fluxer_relay_directory | ||
| fluxer_server | ||
| fluxer_static | ||
| media | ||
| packages | ||
| patches | ||
| scripts | ||
| tsconfigs | ||
| .dockerignore | ||
| .editorconfig | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .ignore | ||
| .lfsconfig | ||
| .npmrc | ||
| .nvmrc | ||
| .prettierignore | ||
| .tool-versions | ||
| biome.json | ||
| CODE_OF_CONDUCT.md | ||
| compose.yaml | ||
| CONTRIBUTING.md | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| flake.lock | ||
| knip.json | ||
| LICENSE | ||
| LICENSING.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| SECURITY.md | ||
| tsconfig.json | ||
| turbo.json | ||
Note
Learn about the developer behind Fluxer, the goals of the project, the tech stack, and what's coming next.
Fluxer
Fluxer is a free and open source instant messaging and VoIP platform for friends, groups, and communities. Self-host it and every feature is unlocked.
Quick links
Features
Real-time messaging – typing indicators, reactions, and threaded replies.
Voice & video – calls in communities and DMs with screen sharing, powered by LiveKit.
Rich media – link previews, image and video attachments, and GIF search via KLIPY.
Communities and channels – text and voice channels organised into categories with granular permissions.
Custom expressions – upload custom emojis and stickers for your community.
Self-hostable – run your own instance with full control of your data and no vendor lock-in.
Note
Native mobile apps and federation are top priorities. If you'd like to support this work, donations are greatly appreciated. You can also share feedback by emailing developers@fluxer.app.
Self-hosting
Note
New to Fluxer? Follow the self-hosting guide for step-by-step setup instructions.
TBD
Deployment helpers
livekitctl– bootstrap a LiveKit SFU for voice and video
Development
Tech stack
- TypeScript and Node.js for backend services
- Hono as the web framework for all HTTP services
- Erlang/OTP for the real-time WebSocket gateway (message routing and presence)
- React and Electron for the desktop and web client
- Rust compiled to WebAssembly for performance-critical client code
- SQLite for storage by default, with optional Cassandra for distributed deployments
- Meilisearch for full-text search and indexing
- Valkey (Redis-compatible) for caching, rate limiting, and ephemeral coordination
- LiveKit for voice and video infrastructure
Devenv development environment
Fluxer supports development through devenv only. It provides a reproducible Nix environment and a single, declarative process manager for the dev stack.
- Install Nix and devenv using the devenv getting started guide.
- Enter the environment:
devenv shell
If you use direnv, the repo includes a .envrc that loads devenv automatically – run direnv allow once.
Getting started
Start all services and the development server with:
devenv up
Open the instance in a browser at your dev server URL (e.g. http://localhost:48763/).
Emails sent during development (verification codes, notifications, etc.) are captured by a local Mailpit instance. Access the inbox at your dev server URL + /mailpit/ (e.g. http://localhost:48763/mailpit/).
Voice on a remote VM
If you develop on a remote VM behind Cloudflare Tunnels (or a similar HTTP-only tunnel), voice and video won't work out of the box. Cloudflare Tunnels only proxy HTTP/WebSocket traffic, so WebRTC media transport needs a direct path to the server. Open these ports on the VM's firewall:
| Port | Protocol | Purpose |
|---|---|---|
| 3478 | UDP | TURN/STUN |
| 7881 | TCP | ICE-TCP fallback |
| 50000-50100 | UDP | RTP/RTCP media |
The bootstrap script configures LiveKit automatically based on domain.base_domain in your config.json. When set to a non-localhost domain, it enables external IP discovery so clients can connect directly for media while signaling continues through the tunnel.
Devcontainer (experimental)
There is experimental support for developing in a VS Code Dev Container / GitHub Codespace without Nix. The .devcontainer/ directory provides a Docker Compose setup with all required tooling and backing services.
# Inside the dev container, start all processes:
process-compose -f .devcontainer/process-compose.yml up
Open the app at http://localhost:48763 and the dev email inbox at http://localhost:48763/mailpit/. Predefined VS Code debugging targets are available in .vscode/launch.json.
Warning
Bluesky OAuth is disabled in the devcontainer because it requires HTTPS. All other features work normally.
Documentation
To develop the documentation site with live preview:
pnpm dev:docs
Contributing
Fluxer is free and open source software licensed under AGPLv3. Contributions are welcome.
See CONTRIBUTING.md for development processes and how to propose changes, and CODE_OF_CONDUCT.md for community guidelines.
Security
Report vulnerabilities at fluxer.app/security. Do not use public issues for security reports.
License
Copyright (c) 2026 Fluxer Contributors
Licensed under the GNU Affero General Public License v3:
Copyright (c) 2026 Fluxer Contributors
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
details.
You should have received a copy of the GNU Affero General Public License along
with this program. If not, see https://www.gnu.org/licenses/
See LICENSING.md for details on commercial licensing and the CLA.