Skip to content

NC1107/echo-messenger

Repository files navigation

Echo - Encrypted Messenger

Release Release Rust CI Flutter CI License

A lightweight, cross-platform messaging app with end-to-end encryption. I'm not a fan of the direction Discord is moving, and I don't think most people can set up Matrix, so this is my attempt at a replacement. It runs centralized by default, but you can always host the server yourself.

Downloads

Client apps and server binaries are on the Releases page.

Client apps

Platform Download
Windows Echo-Setup-x64.exe (installer -- see SmartScreen workaround)
Linux Echo-x86_64.AppImage (single file)
macOS echo-macos-x64.tar.gz (extract and run Echo.app)
Web echo-messenger.us (hosted) or echo-web.tar.gz (self-host static files)
iOS Available via TestFlight — see ios-testflight-setup.md
Android APK on the Releases page (sideload)

Self-hosting the server

Method Source
Binary echo-server-linux-x64.tar.gz
Docker (server) ghcr.io/nc1107/echo-messenger/server:latest
Docker (web) ghcr.io/nc1107/echo-messenger/web:latest

Features

  • Private by default -- Your messages are end-to-end encrypted. The server stores and relays only ciphertext; it cannot read what you send.
  • 1:1 and group messaging -- Real-time direct messages and group chats, all in one place.
  • Groups -- Create public or private groups, manage members with owner/admin roles, share invite links.
  • Find communities -- Browse and join public groups without needing an invite.
  • Media sharing -- Send images, videos, and PDFs. Inline previews with a fullscreen lightbox.
  • Universal search -- Search across messages, contacts, and groups in one place.
  • Edit and delete -- Fix mistakes or pull a message; changes sync to everyone in real-time.
  • Reactions -- React to any message with emoji.
  • @mentions -- @username autocomplete in groups; @everyone and @here for announcements.
  • Invite links and QR codes -- Share a link or QR code to let someone add you as a contact instantly.
  • Privacy controls -- Toggle read receipts on or off.
  • Typing indicators -- See when someone is composing a reply.
  • Cross-platform -- Windows, Linux, Web, iOS, Android.
  • Lightweight -- Under 150 MB RAM idle (vs Discord's 500 MB+).

Quick Start

# Clone
git clone https://github.com/NC1107/echo-messenger.git
cd echo-messenger

# Start everything (DB + server + test user)
./scripts/run.sh

# Or manually:
cd infra/docker && docker compose up -d    # Start PostgreSQL
cargo run -p echo-server                    # Start server on :8080
cd apps/client && flutter run -d linux      # Start client

Self-Hosting

Echo is designed to be self-hosted. See self-hosting.md for a step-by-step guide covering Docker Compose, Traefik, TLS, and environment configuration.

Privacy and Encryption

Direct messages use the Signal Protocol (X3DH + Double Ratchet) -- the same encryption used by Signal and WhatsApp. Every message gets a unique key; compromising one key does not expose past or future messages. Your private keys never leave your device.

For technical details -- key exchange diagrams, wire format, security properties, and key storage -- see encryption.md.

To report a vulnerability see SECURITY.md.

Development

See setup.md for full environment setup.

Prerequisites

  • Rust (edition 2024)
  • Flutter 3.41+
  • Docker (for PostgreSQL)
  • Node.js 20+ (for commitlint)

Running Tests

cargo test --workspace                        # Rust tests
cd apps/client && flutter test                # Flutter tests
./scripts/test_e2e.sh                         # E2E integration tests
npx playwright test                           # Visual tests

Lint & Format

cargo fmt --all -- --check
cargo clippy --workspace --all-targets
cd apps/client && dart format --set-exit-if-changed .
cd apps/client && flutter analyze --fatal-infos

License

PolyForm Noncommercial 1.0.0. See LICENSE.

This is a source-available license — anyone may use, modify, and contribute to Echo for any non-commercial purpose (personal, hobby, educational, non-profit, public-research, religious). Selling it, hosting it as a paid service, or using it inside a commercial entity is not permitted without a separate commercial license from the copyright holder.

Contributions are welcome via pull request. By submitting a contribution you agree that your changes are released under the same license.

About

Lightweight, cross-platform encrypted messenger. Rust server + Flutter UI + Signal Protocol (X3DH + Double Ratchet).

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors