HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
matrix-org
synapse
Python2015–2026
matrix-org / synapse · Archived

synapse

Synapse: Matrix homeserver written in Python/Twisted.

68Distinct people
116Mentions
1Explicit recommenders
12.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Synapse: Matrix homeserver written in Python/Twisted.

GitHub

Where it is used

The source check is incomplete. Verified examples will appear here.

What people are saying

I use AVENTER-UG's docker-matrix container for Synapse, and a separate VM for PostgreSQL. Element-web I currently upgrade straight from the tarballs. Upgrades are fairly…

snerbles used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 9:02:44 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year116 dated mentions

Observed mentions: 2015-02-05 16:06:38 UTC to 2026-02-13 02:28:43 UTC.

01020302015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 14 mentions; 1 submissions, 13 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 23 mentions; 3 submissions, 20 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 17 mentions; 0 submissions, 17 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 30 mentions; 2 submissions, 28 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC211
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC707
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC14113
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC23320
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC17017
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC30228
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC707
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC918
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC202
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Synapse Synapse is now actively maintained at element-hq/synapse Synapse is an open-source Matrix homeserver developed from 2019 through 2023 as part of the Matrix.org Foundation. The Matrix.org Foundation is not able to resource maintenance of Synapse and it continues to be developed by Element; additionally you have the choice of other Matrix homeservers. See The future of Synapse and Dendrite blog post for more information. Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP. Matrix.org has more to say about the goals of the Matrix project, and the formal specification describes the technical details. Contents Synapse is now actively maintained at element-hq/synapse Installing and configuration Using a reverse proxy with Synapse Upgrading an existing Synapse Platform dependencies Security note Testing a new installation Registering a new user from a client Troubleshooting and support Identity Servers Development Installing and configuration The Synapse documentation describes how to install Synapse. We recommend using Docker images or Debian packages from Matrix.org. Synapse has a variety of config options which can be used to customise its behaviour after installation. There are additional details on how to configure Synapse for federation here. Using a reverse proxy with Synapse It is recommended to put a reverse proxy such as nginx, Apache, Caddy, HAProxy or relayd in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. For information on configuring one, see the reverse proxy docs. Upgrading an existing Synapse The instructions for upgrading Synapse are in the upgrade notes. Please check these instructions as upgrading may require extra steps for some versions of Synapse. Platform dependencies Synapse uses a number of platform dependencies such as Python and PostgreSQL, and aims to follow supported upstream versions. See the deprecation policy for more details. Security note Matrix serves raw, user-supplied data in some APIs -- specifically the content repository endpoints. Whilst we make a reasonable effort to mitigate against XSS attacks (for instance, by using CSP), a Matrix homeserver should not be hosted on a domain hosting other web applications. This especially applies to sharing the domain with Matrix web clients and other sensitive applications like webmail. See https://developer.github.com/changes/2014-04-25-user-content-security for more information. Ideally, the homeserver should not simply be on a different subdomain, but on a completely different registered domain (also known as top-level site or eTLD+1). This is because some attacks are still possible as long as the two applications share the same registered domain. To illustrate this with an example, if your Element Web or other sensitive web application is hosted on A.example1.com, you should ideally host Synapse on example2.com. Some amount of protection is offered by hosting on B.example1.com instead, so this is also acceptable in some scenarios. However, you should not host your Synapse on A.example1.com. Note that all of the above refers exclusively to the domain used in Synapse's public_baseurl setting. In particular, it has no bearing on the domain mentioned in MXIDs hosted on that server. Following this advice ensures that even if an XSS is found in Synapse, the impact to other applications will be minimal. Testing a new installation The easiest way to try out your new Synapse installation is by connecting to it from a web client. Unless you are running a test instance of Synapse on your local machine, in general, you will need to enable TLS support before you can successfully connect from a client: see TLS certificates. An easy way to get started is to login or register via Element at https://app.element.io/#/login or https://app.element.io/#/register respectively. You will need to change the server you are logging into from matrix.org and instead specify a Homeserver URL of https://<server_name>:8448 (or just https://<server_name> if you are using a reverse proxy). If you prefer to use another client, refer to our client breakdown. If all goes well you should at least be able to log in, create a room, and start sending messages. Registering a new user from a client By default, registration of new users via Matrix clients is disabled. To enable it: In the registration config section set enable_registration: true in homeserver.yaml. Then either: set up a CAPTCHA, or set enable_registration_without_verification: true in homeserver.yaml. We strongly recommend using a CAPTCHA, particularly if your homeserver is exposed to the public internet. Without it, anyone can freely register accounts on your homeserver. This can be exploited by attackers to create spambots targetting the rest of the Matrix federation. Your new user name will be formed partly from the server_name, and partly from a localpart you specify when you create the account. Your name will take the form of: @localpart:my.domain.name (pronounced "at localpart on my dot domain dot name"). As when logging in, you will need to specify a "Custom server". Specify your desired localpart in the 'User name' box. Troubleshooting and support The Admin FAQ includes tips on dealing with some common problems. For more details, see Synapse's wider documentation. For additional support installing or managing Synapse, please ask in the community support room #synapse:matrix.org (from a matrix.org account if necessary). We do not use GitHub issues for support requests, only for bug reports and feature requests. Identity Servers Identity servers have the job of mapping email addresses and other 3rd Party IDs (3PIDs) to Matrix user IDs, as well as verifying the ownership of 3PIDs before creating that mapping. They are not where accounts or credenti
Read the full README on GitHub

What Hacker News says

30 sources
It is already possible to kick a device (go to Settings: Security in Element, for instance). I've filed an issue at https://github.com/matrix-org/synapse/issues/10813 for inactivity timer logouts. However, my point still stands that fallback keys are a good idea - you should kick the device out deliberately (manually or with a timer) rather than rely on a protocol quirk meaning that E2EE randomly breaks after some period of inactivity(!)
In Disclosing E2EE vulnerability in multiple Matrix clients
The reference clients and server are a good place to start. They're the place to find all the protocol features implemented and well supported. The Element client (desktop/web/android) is electron-based https://element.io/get-started Synapse is the server to start with https://github.com/matrix-org/synapse/ From there, what's the first place to find people to chat? I don't have a good answer there, but the 'spaces' functionality is a nice way to group communities.
In Disclosing E2EE vulnerability in multiple Matrix clients
You've always been able to run a Matrix server completely separately from the wider federation, and there are loads of them out there (we estimate around 35,000). Unsure what "federated" authentication problem you're thinking of. The only thing I can think that you're referring to is the question of how you track the keys used by servers to sign the events they send. If the server is offline, and you've never heard of it before, you still need a way to check their key. We don't currently use CAs for this, but instead you grab a cached copy of the key from a trusted server: https://github.com/matrix-org/synapse/blob/a743bf46949e851c9.... This is a bit of an edge case, as in general servers whose events you care about will typically still be online - or you'll know their signing key back from when they were on line. The longer term solu
Read the rest
tion for this is https://github.com/matrix-org/matrix-doc/blob/rav/proposal/r... which includes the sender's public key in the event (by making it the sender's identity) - and we're working on this as part of P2P Matrix currently.
In Germany's national healthcare system adopts Matrix for communication
Matrix lets you configure the history retention on a per-server or per-room basis, fwiw: https://github.com/matrix-org/synapse/blob/develop/docs/mess.... From a metadata perspective, we're working on P2P to avoid metadata accumulating on servers. In terms of the OP here (address-book based contact discovery), https://github.com/matrix-org/matrix-doc/blob/hs/hash-identi... is how Matrix optionally implements it while trying to preserve privacy.
In Large-Scale Abuse of Contact Discovery in Mobile Messengers [pdf]
Been using it for a while now, mostly through bridges. e2ee works pretty much seamlessly now, as does the entire federation thing. Cross-device verification is simple; manual fingerprint comparisons have been replaced by the simple emoji comparison screens also found in other apps. If you don't want to bother setting up a server (and power to you, because server maintenance is annoying) just register with any open Matrix server you deem reliable enough. The matrix.org one is (obviously) pretty popular. As an end user, the federation stuff is no different from your average email address; there's a domain you store your stuff on and send your stuff through, that server is part of your address. If you make an account with a service provider that goes down, your messages disappear, same thing as would happen if Gmail or iCloud would take thei
Read the rest
r servers down. If you want the security of your domain but none of the hassle of managing a server, you can get managed Matrix servers from different providers these days [0]. Just get your own domain like normal, so your address will always be your own property and you can take it somewhere else if you really need to, and point the domain records at the servers of your provider. If you do want to set up a server and join the Matrix network, there's an Ansible playbook [1] that'll set everything up on your server. You can also use the complete guide [2] if you want to manage everything manually. If you have any trouble getting federation to work, there's a nice diagnostic utility [3] that can help you identify the most common problems. Alternative client are coming along nicely now, as well. For the longest time, encryption support was missing from the major ones (with "solutions" like running a pantalaimon instance in the mean time), but e2ee support has been added to most clients now. The only fully-featured client without encryption support I've come across has been GNOME's Fractal. On mobile, Fluffychat [4] has been working well for me, and on desktop Element [5] has been working well, too. TL;DR: go to https://app.element.io/#/register, pick a username, and give it a try in your browser. You can join a bunch of the bridged IRC servers to get a feel of the conversation flow if you have no contacts on Matrix. [0]: https://matrix.org/hosting/ [1]: https://github.com/spantaleev/matrix-docker-ansible-deploy [2]: https://github.com/matrix-org/synapse/blob/master/INSTALL.md [3]: https://federationtester.matrix.org/ [4]: https://fluffychat.im/en/ [5]: https://element.io/get-started
In It looks like Signal isn't as open source as you thought it was anymore
Looking on Element Web/Desktop's issue tracker: https://github.com/vector-im/element-web/issues?q=is%3Aissue... there are no open issues concerning segfaults currently. If you file a bug report with the details requested in the template then we'll be able to investigate and fix it, just as we did for https://github.com/vector-im/element-web/issues/13553 (for instance). Otherwise, expecting us to be aware of this and to fix it without a bug report is not going to happen. In terms of "slow rooms" - we'd need more details to advise. A bug report on github.com/matrix-org/synapse/issues would give us something to go on. In terms of stuck messages on Element Android - this sounds like a bug which was fixed months ago. Please upgrade. In terms of getting a notification every time the app syncs - I have no idea what would cause that, nor have
Read the rest
I heard of it. Please file a bug at https://github.com/vector-im/element-android/issues.
In Element Matrix Services Announces Element Home
I ran the response for the Apr 2019 incident that you're digging up, and fwiw: * The breach impacted the free best-effort matrix.org server & infrastructure, not Element Matrix Services (the subject of this HN thread). * We didn't "revoke user keys", we logged users out on matrix.org whose password hashes & login access tokens had been exposed. * At the time we were in beta, and there was only one mechanism to logout users: a 'hard logout' used to evict client sessions which would cause them to clean up their local data; the common case where as a user you want to kick off old sessions and don't want to leave your keys littered around. Before exiting beta in June 2019, we implemented 'soft logout' as a mechanism to expire access_tokens without clients cleaning up data: https://github.com/matrix-org/synapse/issues/4280. Given the urgency
Read the rest
to protect user data immediately after the breach, we couldn't release new clients to expedite soft logout, so had to go with hard logout. * However, any user who backs up their E2EE keys, either online (the default configuration), or offline was unaffected. To repeat: the default configuration was to nag the user into backing up their keys, encrypted, on the server, for precisely this sort of situation. And to the best of my knowledge I don't recall anyone who reported having lost data to us.
In Element Matrix Services Announces Element Home
Yeah, Matrix isn't a good fit yet for freeform large KV storage. For instance, there isn't a good way to paginate state yet: you can query values by a given key, or a given type, but not paginate. Also, each KV pair gets fed into the merge resolution algorithm, which can start to get sluggish with more than ~100K events (although it's got way better in Synapse since https://github.com/matrix-org/synapse/blob/master/docs/auth_... landed a few weeks ago). In the longer term we'd (well, I'd) love to make it work well with freeform KV data (or object graphs! you gotta store your VR scene graphs in Matrix, after all) and act like some kind of crazy global zero-trust CouchDB or Cassandra. But right now the KV state is meant to be for relatively simple freeform metadata about a room.
In Show HN: Hummingbard – decentralized communities built on Matrix
Open Source but not actively accepting contributions is not a great place to be. Especially when you can't federate, so you are stuck using the central server which basically doesn't accept code contributions. Take a look at https://merge-chance.info/target?repo=https://github.com/sig... Also it is somewhat interesting that this Open Source centralised Signal server, where centralisation means you can move quicker, hasn't seen a commit in 10 months. Compare it to Matrix Synapse https://merge-chance.info/target?repo=https://github.com/mat... The story with the flagship clients in both spaces is very similar.
In WhatsApp and most alternatives share the same problem

Showing the 15 most recent of 30 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.