Speak freely. Secure messaging app, by design.
Pre-alpha. Design is being formalised. No production users. No protocol audit yet. Do not rely on MoldChat for life-and-limb threat models until at least one independent cryptographic audit is published.
MoldChat is an end-to-end encrypted messenger built around one rule: the traffic should look like ordinary HTTPS browsing on the wire. Everything else — protocol choice, server architecture, distribution model — is derived from that rule.
MoldChat is built for people living under censorship and repression — journalists, human-rights defenders, and ordinary people whose safety depends on anonymity. Authoritarian governments do not stop at physical coercion of their citizens: they take control of civilian communications, block resources, throttle access, and outlaw the services the rest of the world uses. MoldChat is a messenger that stays invisible to those systems.
A passive network observer should not be able to identify a MoldChat user from traffic patterns alone. An active probe against a MoldChat server should not yield a positive identification. A compromised server should not reveal useful metadata about communication patterns. A compromised device should not reveal plaintext message history. Compromise of one endpoint should not retroactively decrypt prior sessions, nor indefinitely decrypt future ones.
A complete and current threat model lives in docs/specs/.
Android (Kotlin) Server (Go) iOS (Swift)
| | |
| libsignal-android | | LibSignalClient
| (E2E crypto, on device) | | (E2E crypto, on device)
| | |
| sealed envelope -----> per-contact queues <----- sealed envelope
| (opaque blobs only) |
| | |
| SQLCipher + Keystore | SQLite + Litestream | SQLCipher + Keychain
| | + Xray (REALITY) |
The server holds opaque ciphertext blobs addressed by queue ID. It does not see senders, recipients, contents, social graphs, or message timing semantics beyond what is required for delivery. Crypto runs only on clients.
apps/android/ Android client (Kotlin + Jetpack Compose)
apps/ios/ iOS client (Swift + SwiftUI)
server/ Go server (single Go module)
docs/ Architecture decisions, RFCs, protocol specs
deploy/ Docker, systemd units, deployment manifests
scripts/ Build, release, maintenance scripts
tools/ Code generation, dev utilities
.github/ CI workflows, issue templates, CODEOWNERS
.well-known/ security.txt and similar
Toolchain is pinned via mise. After cloning:
mise installThen per platform:
| Component | Command | Output |
|---|---|---|
| Server | cd server && go build ./cmd/moldd |
server/moldd |
| Android | cd apps/android && ./gradlew assembleRelease |
apps/android/.../moldchat.apk |
| iOS | cd apps/ios && xcodebuild ... |
apps/ios/build/MoldChat.ipa |
Detailed build instructions, including reproducible-build flags, are in docs/build.md (TBD).
- docs/specs/ — protocol specifications
- docs/adr/ — architecture decision records (MADR)
- docs/rfcs/ — RFCs for cross-cutting changes
- Public site: moldchat.com
If you believe you have found a security issue, do not open a public issue. Use GitHub Private Vulnerability Reporting or write to alan@wisscore.com. Full policy: SECURITY.md.
Contributions are welcome. Read CONTRIBUTING.md first. All commits must carry a DCO sign-off (git commit -s).
- Twitter / X: @MoldChatHQ
- Telegram channel: t.me/moldapp
- Questions and ideas: GitHub Discussions
MoldChat is free and will remain free. If you want to help us cover infrastructure and development:
- One-time card payment: see donation tiers at moldchat.com/about#support
- GitHub Sponsors: TBD
- Cryptocurrency: TBD
Copyright © 2026 Alan Wiss and MoldChat contributors.
Released under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE.
MoldChat stands on top of work by people who built and audited the cryptographic primitives we rely on:
- libsignal — Signal Foundation
- Xray-core / REALITY — XTLS team
- openmls — Phoenix R&D, Cryspen
- Sigstore — OpenSSF
- SQLCipher — Zetetic
We do not invent cryptography. We integrate vetted libraries and we tell you which ones.