Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

332 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

m3llo

m3llo

Voice, streaming, and proof last night's clutch actually happened.

m3llo.app  ·  Compare  ·  Download  ·  For developers  ·  Self-hosting

Status: Alpha Platform: Windows, macOS License: Apache 2.0 GitHub stars


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.


m3llo app screenshot showing crew feed, live stream, voice chat, and crew chat

What is m3llo

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.


Download

Grab the latest alpha build for your platform:

Download for Windows   Download for macOS

All releases, changelogs, and previous versions on the Releases page.

Linux: planned. Contributions welcome.


Community

We hang out on m3llo itself.


For developers

The rest of this README is for people who want to build m3llo from source, contribute, or run their own instance.

Guiding principles

  • 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.

Build from source

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-client

Nakama console at http://localhost:7351 (admin / admin)

Full setup and platform-specific notes in /docs/getting-started.md.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                         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.

Stack

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

Project structure

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

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    # lint

Self-hosting

The 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 vs m3llo.app

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.

Why 6 participants on P2P?

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.


License

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

About

m3llo is a free, open-source app for gaming crews. Crew feed that remembers your gaming sessions, voice + text chat and smooth game streaming.

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages