The world's first fully private and decentralized group messenger. Powered by Quilibrium and the libp2p stack, Quorum can be used over TCP, QUIC, Websockets, or even LoRa — so it can run across the traditional internet, local networks, or off-grid setups.
Available Platforms:
-
Web Browser - Live app (beta)
-
Desktop - Electron wrapper for native desktop experience
-
Mobile - quorum-mobile (React Native + Expo)
Quorum is built as a multi-repository ecosystem where shared functionality is centralized:
| Repository | Purpose |
|---|---|
| quorum-desktop | Web + Electron desktop app (this repo) |
| quorum-mobile | React Native + Expo mobile app |
| quorum-shared | Shared types, hooks, sync protocol (@quilibrium/quorum-shared) |
All clients sync data via the same protocol defined in quorum-shared, ensuring messages, bookmarks, and user settings stay in sync across all devices.
For detailed documentation on specific features and components, please refer to the .agents/docs directory. You can find the complete index of available documentation in .agents/INDEX.md.
Key Documentation:
- Quorum Ecosystem Architecture - Multi-repo system and shared package
- Component Management Guide - Creating cross-platform components
- Cross-Platform Architecture - How the shared codebase works
The .agents/ folder contains development resources including:
- Architecture documentation and component guides
- Bug reports and solutions
- Task management (pending & ongoing, completed)
- Mobile development guidelines and cross-platform considerations
The src/dev/ folder contains development utilities:
- Dev tools (
/dev) - Hub for the current available development tools - Documentation Viewer (
/dev) - Interactive frontend for browsing docs, tasks, and bug reports from the.agents/folder - Primitives Playground (
/playground) - Web-based testing environment for UI primitives and components - Mobile Playground - Comprehensive testing environment accessible by running the mobile app (see Mobile Development section)
After running yarn dev, you can access the development tools at: http://localhost:[port]/dev
Add ?users=N to any URL to generate mock users/contacts for testing:
# Space members list (1000 mock users)
http://localhost:5173/spaces/{space-id}/{channel-id}?users=1000
# Direct messages list (50 mock contacts)
http://localhost:5173/messages?users=50
localStorage (persistent across sessions):
// Enable mock users (Space members)
localStorage.setItem('debug_mock_users', 'true')
localStorage.setItem('debug_mock_count', '1000')
// Enable mock conversations (DM contacts)
localStorage.setItem('debug_mock_conversations', 'true')
localStorage.setItem('debug_mock_conversation_count', '50')
// Disable
localStorage.removeItem('debug_mock_users')
localStorage.removeItem('debug_mock_conversations')Requires Node.js and quilibrium-js-sdk-channels cloned alongside this repository. Running locally in a browser against prod Quorum API requires CORS to be disabled, consult your extensions or settings to perform this (if you disable CORS in your browser, remember to re-enable it as soon as you have finished testing).
cd ../quilibrium-js-sdk-channels/
yarn build
yarn link
cd ../quorum-desktop/
yarn link @quilibrium/quilibrium-js-sdk-channels
yarn installTo run the web app in development:
yarn devTo run in Electron desktop app:
yarn dev
# In another terminal
yarn electron:devTo build for production and preview:
yarn build:previewThe mobile app lives in a separate repository: quorum-mobile
Both apps share code via the @quilibrium/quorum-shared package. See Quorum Ecosystem Architecture for details on the multi-repo setup.
All the existing translations (apart from English) have been created using an LLM.
Communities are welcome to proofread and correct them. We are setting up a dedicated platform to do just that. Proofreading completed for: English, Italian.
- Correct the file:
src/i18n/<locale>/messages.po - Run the command:
This updates the
yarn lingui:compile
messages.jsfile insrc/i18n/<locale>/messages.js. - Commit the changes and push to the remote repository.
- Add the language to
locales.tsin:src/i18n/locales.ts - Run the command:
This creates the
yarn lingui:extract
.pofile insrc/i18n/<new-locale>/messages.po. - Translate the messages in the
messages.pofile.- To translate via LLM, you can use: po-files-translator (even if you choose to use an LLM, it's important to proofread the final text)
- Run the command:
This creates the
yarn lingui:compile
messages.jsfile insrc/i18n/<new-locale>/messages.js. - Commit the changes and push to the remote repository.
Updated: 2026-01-06