unsubbed.co

Cinny

Cinny is a self-hosted communication & messaging tool with support for reactjs, client, matrix.

A Matrix client honestly reviewed — not by its marketing copy, but by what self-hosting it actually means.

TL;DR

  • What it is: An open-source (AGPL-3.0) web-based Matrix client — think Discord’s interface, but decentralized, E2EE by default, and running on protocol you control [README][3].
  • Who it’s for: Privacy-conscious teams and individuals who want to escape Discord’s data harvesting but aren’t ready to live in Element’s more complex UI. Also developers already running a Matrix homeserver who want a lighter frontend [README][3].
  • Cost savings: Discord itself is free — this is less about monthly bills and more about who owns your conversations. If you’re paying for Discord Nitro ($9.99/mo) or Discord for business, the math favors self-hosted Matrix + Cinny. But the real case is data sovereignty, not cash.
  • Key strength: The cleanest Matrix UI available. Deliberately minimal, DMs separated from channels, no notification avalanche [README][website].
  • Key weakness: Cinny is only a frontend — it needs a Matrix homeserver to connect to, which doubles the setup complexity. Also, the project is currently mid-SDK-rewrite and not accepting pull requests, which is a yellow flag for community momentum [README].

What is Cinny

Cinny is a Matrix client. Not a Matrix server, not a Matrix network — a client. That distinction matters more here than with most tools.

Matrix is a decentralized, federated messaging protocol. Think email: anyone can run a mail server, and servers talk to each other. Matrix works the same way for chat. You pick a homeserver (or run your own), your account lives there, and you can talk to people on any other Matrix server. End-to-end encryption is built into the protocol.

Cinny sits on top of all of this and gives you a browser-based (or desktop) interface to your Matrix account. The GitHub README describes it as “yet another matrix client” — which is accurate and honest. The homepage reaches for something grander: “Imagine a Matrix client… where you can enjoy the conversation using simple, elegant and secure interface protected by e2ee.” Both descriptions are true, just at different altitudes [README][website].

The project was started by Ajay Bura and sits at roughly 3,559 stars and 505 forks on GitHub as of this writing, with active commits as recently as a day ago [3]. It’s licensed AGPL-3.0, meaning the source code is open but any network-deployed modifications must also be open-sourced — a meaningful distinction from the MIT license used by more permissive projects.

The app is available hosted at app.cinny.in (updated on each release) and as a desktop wrapper via the cinny-desktop repository. Self-hosting is just serving static files [README].


Why people choose it

The comparison that matters here isn’t Cinny vs. some other tool in a vacuum — it’s Matrix + Cinny vs. Discord, and within Matrix, Cinny vs. Element.

Versus Discord. Discord owns your data, reads your messages for ad targeting and moderation training, has had repeated privacy incidents, and can shut down servers or suspend accounts with no appeal path. It also has no E2EE for server channels (only DMs, added late and reluctantly). For communities built around privacy-sensitive topics — security research, legal practice, healthcare, activist groups — Discord’s terms are a silent tax on every conversation [website].

Matrix + Cinny flips this: the homeserver operator owns the data, E2EE is on by default, federation means no single company can pull the plug, and you can run the entire stack in your own infrastructure [README][website].

Versus Element. Element is the reference Matrix client — built by the same company (Element/New Vector) that maintains the Matrix spec. It’s feature-complete and battle-tested. It’s also visually dense, with a navigation model that confuses newcomers. Cinny’s explicit design philosophy is to be simpler: DMs separated from channels (“Organized: Navigation is easy now because we organized DMs separate from channels”), aggressive visual declutter, a UI that doesn’t punish you for opening it [website][3].

The openalternative.co listing sums it up: “Secure and elegant Matrix client for seamless conversations” with the note that it’s an open-source alternative to Discord specifically [3][4][5]. That framing is right. It’s not trying to replace Slack’s thread model or Teams’ meeting integration. It’s trying to be what Discord’s UI is — fast, social, readable — but without Discord’s data model.

Versus other Matrix clients. The Matrix ecosystem has several clients: Hydrogen (lightweight, fast), FluffyChat (mobile-first), SchildiChat (Element fork with tweaks), Fractal (GNOME-native). Cinny is the one that most closely mimics Discord’s visual layout and channel metaphor, which is precisely why Discord refugees tend to land there first [3].


Features

Based on the README and homepage, this is what you actually get:

Core interface:

  • Channel-based navigation with DMs separated from server channels [website]
  • Multiple themes including light and dark [website]
  • No-clutter design: “You will see what’s necessary to give you a better visual feedback” [website]
  • Input that adapts contextually without jarring transitions [website]
  • Desktop app via cinny-desktop repository (Electron-based) [README]

Security and protocol:

  • End-to-end encryption via Matrix protocol (keys stay on your device) [website][README]
  • All the E2EE properties Matrix provides: forward secrecy, deniability, cross-signed device verification [website]
  • Federation: talk across homeservers [Matrix protocol]

Self-hosting options:

  • Serve the dist/ folder with any web server (nginx, Caddy, Apache) [README]
  • Docker image on DockerHub (ajbura/cinny) and GitHub Container Registry [README]
  • config.json to set default homeservers and explore pages [README]
  • nginx and Caddy example configs included in the repo (contrib/) [README]
  • Hash routing option if you can’t configure server-side redirects [README]
  • Subdirectory deployment supported (requires rebuild with updated base path) [README]

What it does not include:

  • Cinny is not a homeserver. It does not ship Synapse, Dendrite, or Conduit. You connect it to an existing Matrix homeserver [README].
  • No built-in voice/video calling UI (Matrix supports this via integrations, but Cinny’s focus is text) [README].
  • No plugin or bot management interface — that’s server-side.

Important current status: The README includes a prominent notice that Cinny is “in the process of replacing the matrix-js-sdk with our own SDK” and is “not accepting any pull requests until further notice” [README]. This is a significant architectural change and a yellow flag for anyone evaluating community health. It doesn’t affect using the app, but it does mean external contributors are temporarily locked out.


Pricing: SaaS vs self-hosted math

Cinny itself costs nothing. The honest pricing conversation is about the Matrix homeserver, not the client.

Option 1: Use matrix.org as your homeserver

  • Cost: $0
  • Tradeoff: Matrix.org is run by the Matrix Foundation and is frequently overloaded. For a community of 10 people, it’s fine. For anything production, it’s unreliable.

Option 2: Self-host a homeserver (Synapse or Conduit) + Cinny

  • VPS cost: $5–10/mo on Hetzner, Contabo, DigitalOcean for small instances
  • Synapse (the reference server) is RAM-hungry — budget 1–2GB RAM minimum for small communities
  • Conduit is a lighter Rust alternative that runs on 256MB RAM [general knowledge]
  • Cinny frontend: $0 (or add ~$2/mo for a separate VPS/container if you want it separate)
  • Total: $5–12/mo for a fully self-hosted, private Matrix community with your own domain

Versus Discord:

  • Discord free: $0 but you don’t own your data and E2EE is absent from server channels
  • Discord Nitro: $9.99/mo per user for boosts and features
  • Discord for community servers with boosting: variable, but communities with active members often pay $4.99–$9.99/mo in Nitro subscriptions for server boosts

For a team of 10–20 people paying Discord Nitro for features, switching to self-hosted Matrix + Cinny saves roughly $100–200/year while giving you actual E2EE and data ownership. For a community where privacy is the primary concern, the calculus doesn’t need the math — you just don’t want your conversations on Discord’s servers at any price.

For a solo user who just wants a nice Matrix client, cost is zero. Connect to matrix.org or any public homeserver, self-host Cinny as a static site on Netlify or Cloudflare Pages for free, done.


Deployment reality check

Cinny alone (frontend only): Straightforward. Download the tarball from GitHub releases, unzip, serve dist/ with nginx or Caddy. Or pull the Docker image (ajbura/cinny) and run it. The README provides complete nginx and Caddy configuration examples. Total time for a technical user: 15–30 minutes [README].

The catch: you still need a Matrix homeserver. If you don’t have one, add Synapse or Conduit to the stack. This is where self-hosting Matrix gets real:

  • Synapse (Python, reference implementation): Docker Compose setup is documented. Needs PostgreSQL. RAM usage on idle: 200–500MB; under load: 1–2GB+. Database grows over time with federation data. Requires federation config if you want to connect to other Matrix servers.
  • Conduit (Rust, lighter alternative): Single binary, SQLite or RocksDB backend, 256MB RAM minimum. Less mature, fewer features (no full admin API), but dramatically simpler to run.
  • Either way: you need a domain, DNS, TLS certificates, and either a well-known delegation config or a port-exposed homeserver for federation.

What can go wrong:

  • The SDK rewrite in progress means the codebase is in flux. If you hit a bug right now, PRs aren’t being accepted [README].
  • Subdirectory deployment (e.g., https://yourdomain.com/chat/) requires rebuilding Cinny from source after editing build.config.ts — not a one-liner [README].
  • Matrix homeserver federation can be complex to configure correctly. Errors in /.well-known/matrix/server delegation are a common stumbling block.
  • E2EE key management: Matrix’s cross-signed device verification workflow is not as polished as Signal’s. New devices joining can’t read old messages until verification is complete, which confuses users [general Matrix knowledge].

Realistic time estimates:

  • Frontend-only (connect to existing homeserver): 20–30 minutes for a technical user
  • Full stack (Conduit + Cinny): 2–3 hours for a technical user
  • Full stack (Synapse + Cinny): 3–5 hours including database setup and federation config
  • Non-technical founder following a guide: add 2x and expect troubleshooting

Pros and Cons

Pros

  • Cleanest Matrix UI in the category. Consistently cited as the reason people choose Cinny over Element. The Discord-like layout (channels left, conversation center, no nested sidebars) is the right mental model for most users [website][3].
  • E2EE by default. Not an opt-in setting — Matrix E2EE is on for DMs, and Cinny exposes it cleanly [website].
  • Static frontend = trivial hosting. No database, no application server, no runtime dependencies. Serve the dist/ folder and you’re done. Runs on free Netlify or Cloudflare Pages tiers [README].
  • Docker image available. For those who prefer containerized deployments [README].
  • Active development. Last commit a day ago at time of writing [3]. The SDK rewrite signals ambition, not abandonment.
  • No per-user cost. AGPL-3.0 license means zero licensing cost for self-hosted deployments [README][3].
  • Desktop app. The cinny-desktop repo wraps it in Electron for native-feeling use [README].

Cons

  • PRs currently closed. The SDK replacement means the project is not accepting external contributions right now. If you hit a bug, you wait [README].
  • Frontend only — homeserver not included. The most common confusion for new users. Cinny does nothing without a Matrix homeserver behind it. This doubles the setup complexity for teams coming from Discord [README].
  • AGPL-3.0, not MIT. If you modify Cinny and deploy it as a network service, you must release your modifications. For most private teams this is irrelevant, but for anyone building a product on top of Cinny, it’s a constraint [merged profile].
  • No voice/video. Matrix supports voice and video via Jitsi integration or native Element Call, but Cinny doesn’t surface this. Teams replacing Discord for voice channels need a different solution [README].
  • Thin review ecosystem. The third-party articles available for this review were almost entirely directory listing pages — there’s a notable absence of long-form user reviews or community discussions compared to tools like Element or n8n [1][2][3][4][5]. This makes the real-world feedback picture harder to assess.
  • Small GitHub star count. 3,463–3,559 stars is respectable but modest. Element sits at 12,995 [5]. Community size matters for plugins, integrations, and long-term maintenance confidence.
  • Matrix E2EE UX is genuinely rough. This isn’t Cinny’s fault — it’s a Matrix protocol-level reality. Cross-device key verification, “unable to decrypt” errors when new devices join, and session management add friction that Discord and Slack don’t have [general Matrix knowledge].

Who should use this / who shouldn’t

Use Cinny if:

  • You’re already running a Matrix homeserver and want a cleaner frontend than Element.
  • You’re building a private community or team chat where data ownership matters more than the tool ecosystem.
  • You’re migrating a Discord community to self-hosted Matrix and need an interface that won’t terrify your non-technical members.
  • You want a static, zero-runtime-cost frontend you can host for free on Cloudflare Pages or Netlify.
  • Your team values E2EE by default and the Matrix protocol’s decentralized guarantees.

Skip it if:

  • You need voice/video. Cinny doesn’t have it.
  • You need a complete messaging stack out of the box — Cinny is a client, not a server. Look at all-in-one options.
  • You’re a developer who wants to contribute right now. The PR freeze during the SDK rewrite means you’re a spectator until that’s done [README].
  • Your community is large (500+ users) and you need robust admin tools, moderation bots, and a polished mobile experience — Element’s maturity and the Synapse admin ecosystem are further along.
  • You’re non-technical and have nobody to help with homeserver setup. The frontend is easy; the homeserver isn’t.

Skip Matrix entirely if:

  • You need simple team messaging without any server-side investment. Mattermost or Rocket.Chat give you a self-hosted Slack with zero protocol complexity.
  • Voice/video is central. Look at Jitsi Meet.
  • You want hosted E2EE without self-hosting. Signal or Keybase handle that without infrastructure.

Alternatives worth considering

In the Matrix ecosystem:

  • Element — the reference client. More features, more complex UI, built by the Matrix core team. The safe choice for production deployments [5].
  • SchildiChat — Element fork with UI improvements (bubble style, combined room list). Less opinionated than Cinny but more feature-complete.
  • Hydrogen — extremely lightweight Matrix client for low-resource environments or slow connections.
  • FluffyChat — mobile-first Matrix client, better for phone-primary users.

Outside Matrix:

  • Mattermost — self-hosted Slack clone, PostgreSQL-backed, much closer to Slack’s feature set including threads, file preview, and a proper admin panel. More setup than Cinny but more features. MIT license on Team Edition.
  • Rocket.Chat — feature-heavy self-hosted messaging with video via Jitsi, screen sharing, federation. Heavier than Mattermost, FOSS with commercial edition.
  • Zulip — unique thread-based model (topic threading within streams). Best for asynchronous, high-signal communities. AGPL-3.0.
  • Discord — if data privacy isn’t a concern and you want the path of least resistance for community-building, Discord’s free tier is hard to beat purely on features and user familiarity.

For a team specifically escaping Discord and willing to self-host, the realistic shortlist is Matrix + Cinny vs. Mattermost. Cinny (on Matrix) wins on protocol decentralization and E2EE. Mattermost wins on feature completeness and not requiring a separate homeserver.


Bottom line

Cinny is the right answer to a specific question: “I’m running Matrix — what client should my non-technical users open?” It’s not an answer to “I need a self-hosted messaging platform from scratch,” because Cinny alone can’t do that. When that distinction is clear, Cinny is an easy recommendation. The UI is clean and deliberate, the Docker deployment is painless, and the E2EE is real, not theatrical. The active SDK rewrite is worth watching — it’s either a sign of a project that cares about its technical foundation, or a period of instability that burns contributors. The PR freeze says be patient. The daily commits say the team is working. For teams already in the Matrix ecosystem or willing to invest in homeserver setup, Cinny is the best-looking door into a protocol worth using.

If the homeserver setup is the blocker, that’s exactly what upready.dev deploys for clients. One-time fee, your infrastructure, you own the conversations.


Sources

  1. OpenAlternative.co — Open Source Projects tagged “Cinny”. https://openalternative.co/tags/cinny
  2. OpenAlternative.co — Open Source Projects tagged “Cinnyapp”. https://openalternative.co/tags/cinnyapp
  3. OpenAlternative.co — Open Source Projects tagged “Matrix Client” (includes Cinny listing: 3,559 stars, 505 forks, last commit 1 day ago). https://openalternative.co/tags/matrix-client
  4. OpenAlternative.co — Open Source Projects tagged “Matrix Org”. https://openalternative.co/tags/matrix-org
  5. OpenAlternative.co — Open Source Projects tagged “Matrix” (includes Element: 12,995 stars; Cinny: 3,559 stars, open-source alternative to Discord). https://openalternative.co/tags/matrix

Primary sources: