SOURCE_URL: https://majikah.solutions/products/majik-message/docs/chats-realtime-documentation --- title: "Real-Time Messaging" id: "chats-realtime-documentation" group: "majik-message" type: "products" version: "1.1.0" lastUpdated: "2026-02-19T00:00:00.000Z" difficulty: "Beginner" time: "5-8 minutes" tags: [chats, real-time, messaging, online, conversations, instant, post-quantum, ml-kem, ephemeral] --- # Real-Time Messaging > Learn how to send real-time post-quantum encrypted messages and manage chat conversations ## Overview Send secure, end-to-end encrypted messages in real-time with Majik Message's chat feature using post-quantum ML-KEM-768 (FIPS-203) + AES-256-GCM encryption. Connect instantly with contacts who are registered online, create group conversations, and manage multiple identities—all while maintaining complete privacy with auto-expiring ephemeral messages. ### What is Real-Time Messaging? The Chats tab enables instant, post-quantum encrypted messaging with your contacts. Unlike offline encryption in the Message tab, real-time chat delivers messages instantly to recipients who are registered online. Messages are end-to-end encrypted using ML-KEM-768 + AES-256-GCM and stored ephemerally in Redis with a 24-hour TTL, after which they are automatically and permanently purged. Supports text messages, emoji, and GIFs (via GIPHY). Perfect for quick conversations, group discussions, and instant secure communication. > **NOTE:** Access real-time messaging in the Chats tab (second tab in the top navigation bar). ### Chats vs. Message (Local): Understanding the Difference Chats tab is for instant, real-time messaging. Messages are delivered immediately to online recipients, support emoji and GIFs, and auto-expire after 24 hours (ephemeral, non-chained). Requires both sender and recipients to have registered online accounts. Message tab is for offline encryption. You manually share encrypted messages through any platform. Messages don't expire and can be stored permanently. No online registration required. Both use the same post-quantum ML-KEM-768 + AES-256-GCM encryption. For audit trails and immutable records, use Threads instead. ### Requirements for Real-Time Messaging > ⚠️ **WARNING:** Before you can use real-time chat, you must: (1) Have at least one seed phrase account created or imported, (2) Register that account online, and (3) Be logged into your Majikah account. Without these requirements, the Chats feature will not be available. > **NOTE:** Only registered online accounts can use real-time chat. Even if a contact exists in your directory, if their account isn't registered online, they won't appear in your available recipients for chat. This is automatically filtered when creating new messages. ### Setting Up for Real-Time Chat 1. **Create or Import an Account** *You need a seed phrase account first* - Go to the Accounts tab - Create a new account or import an existing one - Remember your passphrase—you'll need it later 2. **Register Account Online** *Enable online messaging capabilities* - In the Accounts tab, hover over your account - Click the Wi-Fi icon (Register Online button) - Or go to the Majikah tab → Registered Identities → click the plus icon - Your account is now registered for real-time messaging 3. **Sign In to Majikah** *Access online services* - Go to the Majikah tab (fifth tab) - Sign in with your Majikah account credentials - If you don't have a Majikah account, create one first - Once signed in, the Chats feature becomes available ### Start a New Conversation 1. **Open New Message Dialog** *Create a new chat conversation* - Go to the Chats tab - Click the pencil and paper icon (New Message button) in the top area - A dialog window will open for composing your message 2. **Add Recipients** *Select who will receive your message* - Click Add Recipient in the dialog - Select contacts from the list—only registered online accounts appear here - You can add multiple recipients for group conversations - Important: At least one other recipient (besides yourself) is required to send a message - Contacts not registered online are automatically filtered out 3. **Compose and Send** *Write your encrypted message* - Type your message in the text box at the bottom of the dialog - Use the emoji picker to add emoji reactions to your message - Use the GIF button (powered by GIPHY) to search and send animated GIFs - Press Enter or click Send to deliver the message - The message is encrypted with ML-KEM-768 + AES-256-GCM and sent instantly to all recipients - Recipients will see it appear in their chat window immediately 4. **Message Privacy** - Only you and the specified recipients can decrypt and read the message - Messages are stored in encrypted form in Redis and auto-expire after 24 hours - After expiration, messages are permanently purged and cannot be recovered > **NOTE:** Real-time chat supports group conversations. Add multiple recipients to create a group chat where all members can see and respond to messages. All participants must be registered online. > **NOTE:** If a recipient is offline when you send a message, it stays in the encrypted Redis buffer until they connect—as long as the 24-hour TTL hasn't expired. Messages are delivered automatically when they come online. ### Reply to an Existing Conversation 1. **Select a Conversation** *Open an existing chat thread* - Go to the Chats tab - You'll see a list of active conversations on the left sidebar - Only conversations with unexpired messages are visible - Conversations with all expired messages are automatically purged/deleted - Click on a conversation to open it 2. **Send Your Reply** *Continue the conversation* - Once the conversation is open, you'll see the message history in the center - Find the text box at the bottom of the conversation window - Type your reply message or add emoji/GIFs - Press Enter or click Send - Your message appears instantly for all participants ### 24-Hour Ephemeral Storage > ⚠️ **WARNING:** Real-time chat messages are stored in encrypted Redis with a 24-hour time-to-live (TTL). Unlike Persistent Threads, chat messages use a non-chained integrity model and are not immutable—they are ephemeral by design. After 24 hours, messages are permanently deleted and cannot be recovered. Export important messages before they expire. ### Export Messages for Safekeeping 1. **Select Message to Save** *In your active conversation* - Hover over the message bubble you want to preserve - Action buttons will appear on the message - You'll see options to copy or download 2. **Export the Encrypted Message** *Choose your export method* - Copy to Clipboard: Click the copy icon to copy the encrypted scanner string - Download as TXT: Click the download icon to save as a text file - The encrypted string is safe to store anywhere 3. **Decrypt Later in Message Tab** *Permanent local storage* - Go to the Message tab and switch to Decrypt mode - Paste the copied encrypted text or import the TXT file - View the decrypted message and save it to your personal archive - The message is now stored permanently, unaffected by the 24-hour expiration > **NOTE:** Encrypted chat messages are fully compatible with the Majik Message Google Chrome Extension. Export from the app and decrypt in the browser extension, or vice versa. ### Switch Between Multiple Identities 1. **Method 1: From Chats Tab** *Quick identity switching* - In the Chats tab, look for the dropdown selector at the top - It displays your current account name and address - Click the dropdown to see all your registered online accounts - Select a different account to switch your active identity - All new messages will be sent from the selected identity 2. **Method 2: From Majikah Tab** *Manage identities and registrations* - Go to the Majikah tab (fifth tab) - When logged in, you'll see the identity selector on the first card - Click the dropdown to change your active account - This change applies across the entire application 3. **View All Registered Identities** *Manage your online accounts* - In the Majikah tab, scroll to the Registered Identities section - You'll see all your accounts that are registered online - Click the plus (+) icon to register additional local accounts - Use the dropdown menu on each identity to delete/unregister if needed > **NOTE:** Switching your active identity changes which account is used for sending messages and receiving notifications. Each identity maintains its own separate chat history and contacts can see which identity you're messaging from. ### Why Use Multiple Identities? Multiple identities let you separate different aspects of your communication. Use one identity for work conversations, another for personal chats, and a third for community groups. Each identity has its own reputation and contact list. Recipients see which identity you're messaging from, allowing you to maintain professional boundaries and context separation. ### Quick Reference: Chat Actions | Action | Location | Button/Icon | Requirement | | --- | --- | --- | --- | | New Conversation | Chats Tab | Pencil and paper icon | Registered account + Majikah login | | Add Recipients | New Message Dialog | Add Recipient button | Registered contacts in directory | | Send Message | Message Composer | Send button or Enter key | At least 1 other recipient | | Send Emoji/GIF | Message Composer | Emoji picker / GIF button (GIPHY) | Open conversation | | Reply to Chat | Conversation Window | Text box at bottom | Open conversation | | Copy Message | Message Bubble | Copy icon (hover) | Hover over message | | Download Message | Message Bubble | Download icon (hover) | Hover over message | | Switch Identity | Chats Tab or Majikah Tab | Identity dropdown | Multiple registered accounts | | View Registered IDs | Majikah Tab | Registered Identities section | Majikah login | | Register New Account | Majikah Tab | Plus (+) icon | Unregistered local account | *Caption: Common real-time messaging tasks and locations* ### Understanding Recipient Availability When creating a new message, you'll only see contacts who meet these criteria: (1) They're in your contact directory, and (2) Their account is registered online. Local-only accounts don't appear in the recipient list because they cannot receive real-time messages. If a contact you want to message isn't showing up, ask them to register their account online first. ### 24-Hour Message Expiration > ⚠️ **WARNING:** All real-time chat messages automatically expire and are permanently deleted from Redis after 24 hours. This enhances privacy by ensuring messages don't accumulate indefinitely on any server. If you need to keep important messages, use the export feature to save them to the Message tab before they expire. ### Privacy and Security Features Real-time chat uses post-quantum ML-KEM-768 (FIPS-203) combined with AES-256-GCM end-to-end encryption. Messages are encrypted on your device before being sent, transmitted securely through Cloudflare Workers and Durable Objects, and can only be decrypted by specified recipients. The Majikah relay never sees your plaintext—it only routes encrypted payloads identified by 2-byte truncated public key hashes. Auto-expiring ephemeral messages add an additional privacy layer by automatically cleaning up old conversations. > **NOTE:** More message expiration duration options (custom timers, longer retention periods) will be available in future updates. Stay tuned for enhanced chat features.