ABOUT MIUTCHAT

Built for trust.
Designed for ghosts.

MiutChat is an open-source, anonymous, end-to-end encrypted ephemeral chat application. No accounts. No persistent data. No digital footprint. Messages exist only in memory — then vanish.

MISSION

Why MiutChat exists.

The overwhelming majority of chat applications are built on a foundational conflict of interest: the platform needs your data to monetize, and your privacy is the cost. MiutChat was built to eliminate this conflict entirely by making it technically impossible for us to access your communications.

We believe in the right to private communication as a fundamental human right. MiutChat is the engineering expression of that belief: a system architected so that even compelled disclosure cannot reveal your messages, because we do not have them.

ENCRYPTION ARCHITECTURE

How the cryptography works.

Every aspect of the encryption pipeline was chosen for maximum security and verifiability using only the browser's native Web Crypto API — no third-party cryptographic libraries, no external dependencies that could be compromised.

1
Text NormalizationInput is normalized to NFKC Unicode form before encryption to ensure deterministic byte representation across platforms and locales.
2
Adaptive CompressionDeflate-raw compression via CompressionStream reduces payload before encryption. Already-compressed formats (JPEG, MP4, WebP, ZIP) skip this step to avoid size increase.
3
HKDF Key DerivationPer-message keys are derived using HKDF-SHA-256 with context binding: roomCode, epoch, timestamp, and chunk index. No two messages ever share a key.
4
AES-256-GCM EncryptionEach message or chunk is encrypted with a unique 96-bit cryptographically random IV. Additional Authenticated Data (AAD) binds the ciphertext to its context, preventing replay and cross-room attacks.
5
ECDSA P-256 SigningEvery message is signed with a per-device ECDSA P-256 private key stored in IndexedDB. The corresponding public key is published to the room for recipient verification. Tampered messages are silently dropped.
6
Epoch RotationThe room's encryption epoch increments periodically or on demand. Each epoch uses a freshly derived base key from PBKDF2, providing forward secrecy: past epoch keys cannot decrypt future messages.
FEATURES

What MiutChat offers.

Zero Knowledge
All encryption occurs in your browser. The server stores only ciphertext it cannot decrypt. No key escrow. No backdoor.
Ephemeral Rooms
Rooms self-destruct when empty. Messages, keys, and member records are permanently wiped — not archived.
Anonymous Identity
No email, phone, or name required. A random callsign is assigned per session. Firebase Anonymous Auth provides a disposable session token only.
Real-Time Messaging
Instant delivery via Firestore live subscriptions. Typing indicators, read receipts, reactions, threaded replies — all encrypted.
Encrypted File Transfer
Files up to 25MB encrypted client-side and chunked adaptively for Firestore's 1MB document limit. Stream-based processing minimizes memory usage.
Offline Support
Service Worker with Cache-First strategy. IndexedDB message cache. Full PWA — installable, works offline for reading cached messages.
TECHNOLOGY STACK

Built with.

AES-256-GCM ECDSA P-256 HKDF-SHA-256 PBKDF2 Web Crypto API Firebase Firestore Cloudflare Pages Cloudflare Workers KV Service Worker IndexedDB CompressionStream API Vanilla JavaScript

No framework. No bundled dependencies. MiutChat is written in pure browser JavaScript to minimize attack surface. The only third-party runtime dependency is the Firebase compat SDK for Firestore and Anonymous Authentication — loaded from Google's CDN and constrained by a strict Content Security Policy.

OPEN SOURCE

Built in public.

MiutChat is fully open source under the MIT License. Every line of encryption code, every Firestore security rule, every Cloudflare Worker — visible, auditable, and forkable.

We believe security through obscurity is not security. The strength of MiutChat's security model derives from the strength of the algorithms and their correct implementation — not from keeping them secret.

Contributions, security disclosures, and audits are welcome at: github.com/debguin1-alt/MiutChat

LIMITATIONS

What MiutChat cannot protect against.

Encryption is not a panacea. MiutChat provides strong guarantees for data in transit and at rest on our servers. It cannot protect against:

For high-stakes communications involving journalism, legal strategy, or personal safety, consider Signal as a more mature alternative.