Skip to content

Repository files navigation

Fancy Mumble

A Modern, Feature-Rich Mumble Client

License: MIT Rust TypeScript React Tauri

Fancy Mumble brings modern UI/UX design and powerful customization features to the legendary Mumble voice chat platform.

Built with Rust for rock-solid performance and React for a sleek, responsive interface.

FeaturesScreenshotsGetting StartedBuildingServer


Overview

Fancy Mumble is a next-generation desktop client for Mumble that combines the reliability of the battle-tested Mumble protocol with modern features users expect in 2026. Whether you're coordinating with your gaming guild, hosting a podcast, or running a community server, Fancy Mumble delivers crystal-clear voice communication with style.

Status: Active development - Core features are functional, but expect some rough edges as we polish the experience.


Features

  • Crystal-clear voice - Opus codec with AI-powered noise suppression (DeepFilterNet3), AGC, and noise gate
  • Rich chat - Markdown formatting, inline images, GIF picker, and interactive polls
  • Profile customization - Custom avatar frames, banners, nameplates, and WYSIWYG bio editor
  • Modern glassmorphic UI - Responsive design for desktop and Android
  • Flexible voice controls - Push-to-talk, voice activity detection, per-channel listening
  • Secure - TLS encryption, self-signed certificates, no telemetry
  • Cross-platform - Windows, Linux, and Android support

Screenshots

Main Interface

Main Chat Interface The main view - channels on the left, chat in the middle, user info on the right

Profile Customization

Profile Editor Customize your profile with frames, banners, and a bio editor

Audio Settings

Audio Pipeline Configure your mic settings and enable AI noise suppression


Architecture

Fancy Mumble is built as a Rust workspace with multiple crates:

Crate Purpose
mumble-protocol Core Mumble protocol implementation - TCP/UDP, TLS, Opus, audio pipeline
mumble-tauri Tauri desktop app - native audio I/O, backend commands, state management
mumble-tauri/ui React frontend - chat UI, profile editor, settings
fancy-denoiser-deepfilter AI noise suppression using DeepFilterNet3
fancy-utils Shared utility functions

Tech Stack: Rust + Tauri 2 + React 19 + TypeScript 5 + Tokio async runtime

For detailed documentation, see crates/mumble-protocol/doc/.


Getting Started

Prerequisites

Platform-Specific Dependencies

Linux:

sudo apt-get update
sudo apt-get install -y \
  libwebkit2gtk-4.1-dev \
  libappindicator3-dev \
  librsvg2-dev \
  patchelf \
  libasound2-dev \
  libgtk-3-dev \
  libsoup-3.0-dev \
  libjavascriptcoregtk-4.1-dev

Android: See ANDROID_DEV.md for complete Android development setup instructions.

Quick Start

  1. Clone the repository

    git clone https://github.com/Fancy-Mumble/FancyMumbleNext.git
    cd FancyMumbleNext
  2. Install frontend dependencies

    cd crates/mumble-tauri/ui
    npm install
    cd ../../..
  3. Run the development server

    cd crates/mumble-tauri
    cargo tauri dev

The app will launch with hot-reloading enabled for both Rust and TypeScript changes.


Building

Desktop (Windows/Linux)

cd crates/mumble-tauri
cargo tauri build

Production installers will be generated in target/release/bundle/:

  • Windows: .exe installer, .msi package
  • Linux: .deb, .AppImage, .rpm

Android

cd crates/mumble-tauri
cargo tauri android build

APK/AAB files will be in gen/android/app/build/outputs/.

For development with hot-reload:

cargo tauri android dev

Or use the helper script (Windows):

.\scripts\android-dev.ps1 -Run

Testing

Frontend Unit Tests

cd crates/mumble-tauri/ui
npm test              # Single run
npm run test:watch    # Watch mode

Rust Unit Tests

cargo test --package mumble-protocol --features opus-codec --lib

Integration Tests

Integration tests run against a real Mumble server in Docker:

cd crates/mumble-protocol

# Start test server
docker compose -f docker-compose.test.yml up -d --wait

# Run tests
cargo test --package mumble-protocol --test integration

# Run specific test
cargo test --package mumble-protocol --test integration -- test_plugin_data_transmission_between_two_clients

# Cleanup
docker compose -f docker-compose.test.yml down

Note: Docker must be running, and port 64738 (TCP+UDP) must be available.


Related Projects

Server Implementation

Fancy Mumble works with any standard Mumble server. We maintain an enhanced fork with additional features:

SetZero/mumble-server - github.com/SetZero/mumble-server

Key server components:

Official Resources


Contributing

We welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or suggesting ideas, your help is appreciated.

Before contributing:

  1. Check existing issues and pull requests to avoid duplicates
  2. Read the CONTRIBUTING.md guidelines
  3. Review the Copilot Instructions for coding conventions
  4. Follow the Boy Scout Rule: leave code cleaner than you found it

Development workflow:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes with clear, descriptive commits
  4. Run tests and linters (cargo clippy, cargo test, npm test)
  5. Push to your fork and open a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments

  • Mumble Team - For creating and maintaining the excellent Mumble protocol
  • Tauri Team - For the amazing cross-platform framework
  • Rust Community - For the incredible ecosystem and tools
  • All contributors who help make Fancy Mumble better

Built with ❤️ by the Fancy Mumble Team

Report BugRequest FeatureJoin Discussion

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

29 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages