Voice, streaming, and proof last night's clutch actually happened.
m3llo.app · Compare · Download · For developers · Self-hosting
Warning
m3llo is alpha software. Many things are unfinished, broken, or missing entirely. Not recommended for anything you'd rely on. We're building in public and things will break. You've been warned, and we love you for being here anyway.
App for gaming crews. Voice chat, game streaming, text chat and a crew feed that remembers what you did together. Perfect for crews up to 100 people. 100.000 member communities are probably better at Discord, but you're welcome to try it in m3llo ;)
Open source. Made in Europe. Apache 2.0.
- Voice that stays out of the way. Low latency, neural noise cancellation.
- Stream your screen at 1080p60. Hardware encoded on your GPU, your CPU stays with your game.
- Chat with markdown, replies, reactions, GIFs.
- Crew feed with clips, sessions, and a weekly recap. Come back tomorrow, the crew is still there.
For the longer version see m3llo.app or the honest comparison against Discord, TeamSpeak, Guilded, and Medal.
Grab the latest alpha build for your platform:
All releases, changelogs, and previous versions on the Releases page.
Linux: planned. Contributions welcome.
We hang out on m3llo itself.
- m3llo crew: m3llo.app/crew/m3llo
- Bluesky: @m3lloapp
- Reddit: r/m3llo_app
- Threads: @m3llo.app
- Issues: GitHub Issues for bugs and feature requests
The rest of this README is for people who want to build m3llo from source, contribute, or run their own instance.
- Performance is the feature. Targets:
<100MB install·<80MB RAM in active voice·1080p60 stream·<60ms WAN latency - Self-hostable. The full client and backend is Apache 2.0. Run your own instance with no dependency on our infrastructure.
- P2P as a first-class citizen for self-hosters. Voice and streaming can be direct peer-to-peer. No server in the middle unless you wish.
- UX matters as much as code.
Building and running is supported on Windows and macOS. Contributions welcome for Linux and other platforms.
Prerequisites:
- Rust 1.75+
- CMake 3.20+
- Visual Studio 2022 (Windows) with C++ workload, or Xcode (macOS)
- Docker (for backend)
# Clone
git clone https://github.com/mollohq/mello.git
cd mello
# Start backend
cd backend && docker compose up -d
# Run client
cd .. && cargo run -p mello-clientNakama console at http://localhost:7351 (admin / admin)
Full setup and platform-specific notes in /docs/getting-started.md.
┌─────────────────────────────────────────────────────────────┐
│ CLIENT │
│ │
│ ┌───────────┐ ┌─────────────┐ ┌──────────────┐ │
│ │ Slint UI │ │ mello-core │ │ libmello │ │
│ │ (Rust) │◄──►│ (Rust) │◄──►│ (C++) │ │
│ │ │ │ │ │ │ │
│ │ Native │ │ App logic │ │ Voice │ │
│ │ UI │ │ Nakama │ │ Stream │ │
│ │ │ │ client │ │ Transport │ │
│ └───────────┘ └─────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ BACKEND │
│ Nakama (Auth, Chat, Presence, P2P Signaling) │
│ PostgreSQL │
└─────────────────────────────────────────────────────────────┘
Deep dives live in /specs. Start with 00-ARCHITECTURE.md, then the pipeline specs for voice, video, streaming, and networking.
| Component | Technology | Notes |
|---|---|---|
| UI | Slint | Rust-native |
| Client logic | Rust | mello-core |
| Media layer | C++ | libmello |
| P2P transport | libdatachannel | WebRTC, ICE, DTLS |
| Audio codec | Opus | BSD licensed |
| Noise suppression | RNNoise | BSD licensed |
| Echo cancellation | WebRTC AEC3 + AGC2 | BSD licensed |
| Voice activity | Silero VAD | MIT licensed |
| Video decode | OpenH264 + dav1d | BSD licensed, no GPL |
| Backend | Nakama + PostgreSQL | Apache 2.0 |
mello/
├── client/ # Slint UI (Rust)
├── mello-core/ # App logic (Rust)
├── mello-sys/ # FFI bindings (Rust)
├── libmello/ # Media layer (C++)
│ └── src/
│ ├── audio/ # Capture, VAD, AEC, noise suppression, Opus
│ ├── video/ # DXGI capture, hardware encode/decode
│ └── transport/ # WebRTC, ICE, DTLS
├── backend/
│ └── nakama/ # Server modules (Go)
└── specs/ # Design documents, read before contributing
Contributions are welcome.
AI-assisted contributions are welcome. We use AI tooling ourselves. Just make sure the output follows CLAUDE.md, comes with a proper spec, and you've actually read and understood what you're submitting. We review the result, not the method.
Before opening a PR, read CLAUDE.md. It covers how the codebase is structured, what the agents expect, and how we work. Ignoring it wastes everyone's time.
Every new feature needs a spec. Look at /specs to see the format. A spec doesn't have to be long, but it needs to cover what, why, and the key constraints. No spec, no merge.
- Bugs: open an issue
- Ideas: start a discussion
- Code: PRs welcome, read specs first
- Docs: always needed
cargo fmt # format
cargo clippy # lintThe full client and backend is Apache 2.0. For those of you who never really got over losing Ventrilo. For the tinkerers who need another project for that dusty Raspberry Pi in the drawer. We're one of you ourselves.
Full setup instructions in /docs/self-hosting.md.
| Self-hosted | m3llo.app | |
|---|---|---|
| Voice | P2P mesh, up to 6 per channel | P2P for free crews; hosted SFU capacity for entitled crews |
| Streaming | P2P, up to 5 viewers | P2P up to 5 viewers; hosted H.264 RTP SFU capacity for entitled crews |
| All other features | Identical | Identical |
| Your data | Stays on your hardware | EU-based, GDPR |
| Setup | Your own hardware | Zero setup |
| Cost | Free | Free, optional add-ons |
The primary difference is media scale. Self-hosted uses direct P2P connections: voice supports up to 6 members per channel and a stream host sends independently to at most 5 viewers. m3llo.app can route entitled crews through the hosted SFU. No mandatory subscription, no features held back to push you toward paid.
P2P means your stream goes directly to each viewer. At the 5-viewer stream cap, the host uploads five independently paced RTP copies. Upload bandwidth becomes the bottleneck quickly.
The add-on routes streams through our infrastructure in Europe, receiving once and relaying to all viewers. Same client, same quality, different plumbing.
Apache 2.0. See LICENSE.
Extended streaming limits for self-hosted instances require infrastructure not included in this repo. Available as an optional add-on at m3llo.app.
Made in Göteborg, Sweden by Mollo Tech AB