Trinity is an end-to-end encrypted Matrix client for Web/PWA, Android, iOS, and Electron desktop. One Angular application supplies the shared renderer; host capabilities handle platform-specific behavior.
The desktop app and the self-hostable web app (PWA) are available from
the latest release;
the Android and iOS apps are still in development. The
user guide covers installing
the latest release. The
developer guide follows
the main branch and documents the current source tree.
Apple Silicon, macOS 13 or later. With Homebrew:
brew install --cask quwisky/trinity/trinityOr download the .dmg from
the latest release.
Signed with a Developer ID and notarized by Apple.
Download the .exe installer from
the latest release.
The installer is not code-signed yet, so Windows SmartScreen shows "Windows protected
your PC" when you run each new version's installer: choose More info, then
Run anyway.
x86-64 only. Download the .deb or the AppImage from
the latest release.
On Debian and Ubuntu, prefer the .deb: AppImages need libfuse2, and recent Ubuntu
releases restrict the sandbox they rely on.
From the folder you downloaded to, replacing <version> with the release you
downloaded:
sudo apt install ./<downloaded-file>.deb # Debian and Ubuntu
chmod +x Trinity-<version>.AppImage && ./Trinity-<version>.AppImage # AppImage-next builds are published on the
releases page as
pre-releases, for testing. From the first prerelease that includes Trinity Next (0.5.0-next.0
and earlier do not), they install on the desktop as a separate app, Trinity Next,
beside Trinity: it has its own icon, data and sign-in, so sign in to it as a new device.
On macOS: brew install --cask quwisky/trinity/trinity@next. On Linux the .deb keeps
its trinity-desktop_<version>_amd64.deb file name but installs the package
trinity-next.
Earlier prereleases installed as "Trinity". With Homebrew, brew upgrade replaces that
app with Trinity Next. If you installed it by hand and don't use stable Trinity, remove it.
Self-host the web app from the release image, docker run -d -p 8080:8080 ghcr.io/quwisky/trinity-web:latest
(:next for prereleases),
or from the Trinity-Web-X.Y.Z.zip attached to each
release. See
Self-host a release.
🚧 In development. Build them from source with the developer guide: Android, iOS.
| Platforms | Trinity | Element Web/Desktop | Element X | FluffyChat | Cinny |
|---|---|---|---|---|---|
| Web | ✅ (PWA) | ✅ | — | ✅ | ✅ |
| Windows | ✅ | ✅ | — | ✅ | ✅ |
| macOS | ✅ (Apple Silicon) | ✅ | — | — | ✅ |
| Linux | ✅ (x86-64) | ✅ | — | ✅ | ✅ |
| Android | 🚧 | — | ✅ | ✅ | — |
| iOS | 🚧 | — | ✅ | ✅ | — |
| Features | Trinity | Element Web/Desktop | Element X | FluffyChat | Cinny |
|---|---|---|---|---|---|
| End-to-end encryption | ✅ | ✅ | ✅ | ✅ | ✅ |
| Spaces | ✅ | ✅ | ✅ | ✅ | ✅ |
| Threads | ✅ | ✅ | 🟡 | ✅ | 🟡 |
| Multiple accounts | ✅ | ❌ | ❌ | ✅ | ❌ |
| OAuth 2.0 (next-gen auth) | ✅ | ✅ | ✅ | ✅ | ❌ |
| Legacy SSO | ✅ (not Android) | ✅ | ❌ | ✅ | ✅ |
| Emoji and image packs | ✅ (one editable pack per room) | 🟡 | ❌ | ✅ | ✅ |
| Voice/video calls (1:1) | ❌ | ✅ | ❌ | ❌ | ❌ |
| Voice/video calls (Jitsi) | ❌ | ✅ | ❌ | ❌ | ❌ |
| Voice/video calls (MatrixRTC) | ❌ | ✅ | ✅ | ✅ | ✅ |
| Invisible cryptography (MSC4153) | ❌ | 🟡 | 🟡 | 🟡 | ❌ |
| Simplified sliding sync (MSC4186) | ❌ | 🟡 | ✅ | ❌ | ❌ |
| Multi-language interface | ❌ (English only) | ✅ | ✅ | ✅ | ❌ |
✅ supported · 🟡 partial · ❌ not supported · ❔ unknown · 🚧 in development · — not offered by that app. Element X is Element's mobile app, so Element Web/Desktop shows — for Android and iOS. From Trinity 0.3, OAuth 2.0 sign-in needs Synapse 1.138 or newer when the server uses Matrix Authentication Service (MAS). On an older Synapse with MAS, accounts stop connecting when their access token expires but keep their local encryption keys; see Server requirements.
Trinity also supports polls, voice messages, location sharing, stickers, custom emoji and GIFs, room widgets, jump to date, pinned messages, room key export and import, desktop notifications, and signing in on a new device with a QR code on servers that support it.
Other clients: each client's GitHub repository (code, changelogs and issues) and its latest release, with matrix.org client pages for cross-checking, retrieved 2026-10-11. 🟡 marks a feature that is behind a Labs or developer setting, receive-only, or missing part of its scope. Trinity's column is self-assessed from this repository against the same feature definitions.
Use the Node.js range in package.json's engines.node and the pnpm version pinned in
its packageManager field; the
prerequisites
page shows both. Then install and start the development server:
corepack enable
pnpm install
pnpm startOpen http://localhost:4200. For prerequisites, repository orientation, platform
setup, commands, testing, architecture, and contribution policy, use the
developer guide.
Its English source lives in
apps/docs-developers/src/content/docs.
apps/trinity/contains the Angular application entrypoint and routes.libs/contains capabilities, data access, host contracts, and public UI.e2e/contains browser, component, protocol, and host validation suites.electron/,android/, andios/wrap the shared productionwww/build.apps/docs-users/andapps/docs-developers/contain the two public Starlight sites.docs-internalcontains private maintainer and decision records; it is not included in the public documentation build.
The project is in early development. A feature's presence does not establish support or validation on every host or deployment. Use the issue tracker for proposed work and the developer guide for the current implementation contract.
Offline caches retain local content and the application shell; they do not replace a homeserver or network access for first-time sign-in.
Trinity is licensed under the MIT License. Third-party dependencies and vendored code retain their respective licenses.