Cinny
Simple, elegant and secure Matrix client
Cinny is a Matrix client focused on a clean, simple and modern user interface. It can be self-hosted as a static web app to connect to any Matrix homeserver.
Key features
- Clean and minimal UI
- End-to-end encryption
- Static web app deployment
- Desktop builds available
Pros & cons
Strengths
- Lightweight to host
- Attractive interface
Trade-offs
- Fewer features than Element
- Matrix-only
Cinny replaces
Last reviewed Sep 13, 2026 · 767 words
Cinny is a Matrix client, not a Matrix server, and the whole hosting job is serving about 10 MB of static files. There is no database, no background process, no upgrade migration. If you already run a homeserver, adding Cinny costs one container and 64 MB of RAM, and the payoff is a chat UI that people who dislike Element's density will actually use. If you do not run a homeserver yet, stop here and pick one first; the client is the last 5 percent of the work.
What you are hosting is a folder of files
The build output is HTML, JavaScript and a config.json. That has consequences. Any web server works, the official Docker image is nginx with the files copied in, and a broken deploy is fixed by re-copying the folder. The only file you edit is the config, which pins the homeserver list:
{
"defaultHomeserver": 0,
"homeserverList": ["matrix.example.com"],
"allowCustomHomeservers": false
}
Setting allowCustomHomeservers to false turns your Cinny into a branded front door for one server, which is the setup that makes sense for a family or a small team. Leave it true if you want a general-purpose client that friends on other servers can also use.
services:
cinny:
image: ajbura/cinny:latest
ports:
- "8085:80"
volumes:
- ./config.json:/app/config.json:ro
restart: unless-stopped
Put Caddy or whatever proxy you already run in front for HTTPS. Because Cinny runs entirely in the browser, the homeserver's CORS settings and well-known delegation matter more than anything on the Cinny side; if login fails, that is where to look, not in the container logs.
The homeserver choice matters more than the client
Cinny talks the standard client-server API, so it works against Synapse, Conduit and the Conduit forks like conduwuit. For a household, Conduit on a Pi-class box is fine and Cinny in front of it is a pleasant pairing: both are lightweight and neither wants a Postgres server. For anything with federation to large public rooms, Synapse is still the safer choice because it has the longest track record with edge cases. The client will not save you from a homeserver that falls over.
Where Cinny is honestly behind Element
End-to-end encryption, device verification, spaces, threads and reactions are all present, and the interface is cleaner than Element Web by a wide margin. The gaps are real, though. Voice and video calls are not a Cinny feature at last check, so a group that wants calls needs Element or Element Call alongside. Room administration for larger communities (moderation tooling, complex permission editing) is thinner. Widgets and integrations that Element exposes are mostly absent. And it is Matrix-only, so the "Slack replacement" framing in the tagline is true only for text chat.
I run both. Cinny is the default I send in the invite email; the same accounts open in Element when someone needs a call or an admin panel. Nothing about that is awkward, since Matrix sessions are per-device and encryption keys can be shared between verified sessions.
Mobile is a separate decision
Cinny ships desktop builds, and the web app is usable on a phone browser, but there is no native mobile app. For phones, FluffyChat is the friendliest match in spirit, and Element X is the most capable. Tell users this before they ask, because "the chat app has no app" is the first complaint you will otherwise hear.
Updating is copy-and-restart
Static files mean updates are risk-free in a way most self-hosted software is not: pull the new image, restart, and if something breaks, roll back the tag. Cinny releases tend to come every few months. The one thing to watch is that your config.json format still matches; the project documents changes in release notes and a mismatch shows up as a blank page rather than a crash.
What I'd do
Host Cinny as the default client for a small homeserver, pinned to that server with custom homeservers disabled, behind the same proxy as the homeserver. Keep Element Web available at a second path for calls and admin work, and point phone users at FluffyChat or Element X. For a large community server the case is weaker: the moderation and calling gaps will bite, and Element as the primary client is the safer pick. Browse the rest of the Matrix and XMPP category if you have not yet picked the server, which is the decision that actually carries the risk.
Compare Cinny
26 head-to-head comparisons.
- Cinny vs Tinode
- Cinny vs Element Web
- Cinny vs ejabberd
- Cinny vs Dendrite
- Cinny vs Synapse
- Cinny vs Converse.js
- Cinny vs Openfire
- Cinny vs Nheko
- Cinny vs Dino
- Cinny vs Conduit
- Cinny vs Movim
- Cinny vs MongooseIM
- Cinny vs gomuks
- Cinny vs Profanity
- Cinny vs Convos
- Cinny vs Syphon
- Cinny vs Dendrite Lite
- Cinny vs Fractal
- Cinny vs JSXC
- Cinny vs Continuwuity
- Cinny vs Gajim
- Cinny vs SchildiChat
- Cinny vs Construct
- Cinny vs Commet
- Cinny vs Prose
- Cinny vs conduwuit
Similar matrix & xmpp apps
Tinode
Matrix & XMPPOpen-source instant messaging server
Replaces WhatsApp, Slack
Element Web
Matrix & XMPPGlossy Matrix client for the web and desktop
Replaces Slack, Discord
ejabberd
Matrix & XMPPRobust, scalable XMPP messaging server
Replaces Slack, WhatsApp
Dendrite
Matrix & XMPPSecond-generation Matrix homeserver written in Go
Replaces Slack, Discord
Synapse
Matrix & XMPPReference homeserver for the Matrix network
Replaces Slack, Discord
Converse.js
Matrix & XMPPWeb-based XMPP/Jabber chat client
Replaces Slack