Introduction
Cinny is an open-source Matrix client designed for simplicity and usability. It provides a Discord-like chat interface on top of the decentralized Matrix protocol, supporting end-to-end encryption, spaces, and rich media out of the box.
What Cinny Does
- Connects to any Matrix homeserver with a modern, responsive web UI
- Supports end-to-end encrypted messaging via the Matrix SDK
- Organizes conversations with Spaces, rooms, and direct messages
- Renders rich content including markdown, code blocks, and media embeds
- Provides custom themes and appearance settings for personalization
Architecture Overview
Cinny is a single-page React application that communicates directly with a Matrix homeserver via the Client-Server API. It uses the matrix-js-sdk for protocol handling and olm/megolm for end-to-end encryption. The app can be served as static files from any web server or container, with no backend of its own.
Self-Hosting & Configuration
- Deploy via Docker with
ajbura/cinnyor build from source using Node.js - Configure the default homeserver URL in
config.jsonbefore deployment - Serve behind a reverse proxy (Nginx, Caddy) with TLS for production use
- Set Content-Security-Policy headers to restrict resource loading
- Supports Progressive Web App (PWA) installation for mobile-like access
Key Features
- Clean, Discord-inspired UI that lowers the barrier to Matrix adoption
- Full end-to-end encryption support with device verification flows
- Spaces support for organizing rooms into categories and communities
- Cross-signing and session management for multi-device users
- Lightweight static deployment with no server-side dependencies
Comparison with Similar Tools
- Element — feature-complete but heavier; Cinny offers a simpler, faster interface
- FluffyChat — mobile-focused with Flutter; Cinny targets the web primarily
- Hydrogen — minimal and experimental; Cinny is more feature-rich for daily use
- Nheko — native desktop Qt app; Cinny runs in any browser
- SchildiChat — Element fork with layout tweaks; Cinny is built from scratch
FAQ
Q: Does Cinny require its own Matrix server? A: No. Cinny connects to any existing Matrix homeserver such as Synapse or Dendrite.
Q: Is end-to-end encryption enabled by default? A: E2EE is supported and can be enabled per room. Cinny follows the Matrix protocol defaults.
Q: Can I use Cinny on mobile devices? A: Yes. Cinny is a responsive web app and can be installed as a PWA on mobile browsers.
Q: How do I update a Docker deployment?
A: Pull the latest image with docker pull ajbura/cinny:latest and restart the container.