Short-lived encrypted text rooms with no accounts and no server-readable messages.
MikroText is a small private messaging app for temporary conversations. Create a room, share a one-time invite, exchange text, and let the room expire.
It is useful when a full chat product is too much and an account flow would get in the way.
Use MikroText online at text.mikrosuite.com.
- Short-lived rooms: rooms expire automatically and can be burned manually.
- No accounts: participants use random local names for each room session.
- One-time invites: invite links are consumed once and carry the room key in the URL fragment.
- End-to-end encryption: messages are encrypted in the browser before they reach the relay.
- Signed messages: browser-generated signing keys help clients verify message envelopes.
- Safety code: participants can compare a room code through another channel.
- Small deployment surface: static browser app, Node relay, and in-memory room state.
- No accounts, profiles, organizations, or passwords
- Random local participant names
- One-time invite URLs with room keys in URL fragments
- Browser-side AES-GCM message encryption
- Browser-generated ECDSA signing keys for message authentication
- Per-sender message key evolution for encrypted envelopes
- Signed ciphertext relay with TTL cleanup
- Safety code for out-of-band comparison
- Manual room burn
- Static frontend and small Node API
Requires Node.js 24 or newer.
npm install
npm run devThe API runs on http://127.0.0.1:3000.
The app runs on http://127.0.0.1:8000.
The latest release archives are available from GitHub Releases and these stable URLs:
https://releases.mikrosuite.com/mikrotext_app_latest.zip- static browser apphttps://releases.mikrosuite.com/mikrotext_api_latest.zip- Node API bundle
MikroText keeps configuration intentionally small.
The browser app reads config.json at startup:
{
"apiBaseUrl": "http://127.0.0.1:3000",
"debugMode": false,
"maxMessageLength": 1000,
"pollIntervalMs": 2500,
"defaultTtlMs": 3600000
}For the hosted app, build with CF_PAGES=1 or set MIKROTEXT_PUBLIC_API_BASE_URL=https://text-api.mikrosuite.com. The build writes that API origin to dist/config.json and allows it in the generated _headers CSP.
The API reads deployment settings from environment variables:
HOST- bind host, default127.0.0.1PORT- bind port, default3000ALLOWED_DOMAINS- comma-separated CORS origins, default*DEFAULT_TTL_MS- default room lifetimeMAX_TTL_MS- maximum accepted room lifetime
GET /healthreturns service healthPOST /roomscreates a room and joins the creatorPOST /rooms/:roomId/invitescreates a one-time invitePOST /rooms/:roomId/joinconsumes a one-time inviteGET /rooms/:roomId/statereturns room state and encrypted messagesPOST /rooms/:roomId/messagesrelays a signed encrypted message envelopePOST /rooms/:roomId/burnburns the room immediately
See the API reference in the docs site for payload shapes.
Full documentation is available at mikrosuite.com/text/docs:
- Introduction - What is MikroText?
- Installation - Get up and running
- Configuration - Runtime and deployment settings
- Security Model - What MikroText protects
- Deployment - Production deployment guide
- API Reference - HTTP API endpoints
MikroText keeps message plaintext away from the relay server when the deployed browser app is trusted. The relay receives ciphertext, signatures, public signing keys, and operational metadata. It does not receive room keys, participant signing private keys, sender chain keys, or plaintext messages.
MikroText does not protect against compromised devices, malicious browser code served by a compromised host, invite forwarding, screenshots, copied messages, IP and timing metadata, or participants leaking room keys. It is not a Signal replacement and does not claim Signal-grade forward secrecy.
See the Security Model for the full boundary.
- Frontend: Vanilla HTML, CSS, and JavaScript compiled with esbuild
- Backend: TypeScript with MikroServe
- Crypto: Web Crypto AES-GCM and ECDSA P-256 in the browser
- Storage: In-memory server state for short-lived rooms
- Docs: Astro Starlight
- Tests: Vitest
MIT.
