element-hq/synapse with patches for starstruck.systems https://starstruck.systems
  • Python 95.5%
  • Rust 3%
  • HTML 0.4%
  • Shell 0.4%
  • Go 0.2%
  • Other 0.2%
Find a file
star ce7c66036f
meta: Update README
Signed-off-by: timedout <git@nexy7574.co.uk>
2026-07-28 16:19:19 +01:00
.ci Hide successful, skipped Complement tests in the CI (#19590) 2026-03-23 15:16:23 +00:00
.github Bump actions/checkout from 6.0.3 to 7.0.0 (#19921) 2026-07-14 11:19:15 +00:00
changelog.d 1.157.1 2026-07-22 09:31:47 -05:00
complement Bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /complement (#19925) 2026-07-14 09:04:15 +00:00
contrib MSC4242: State DAGs (CSAPI) (#19424) 2026-04-16 15:46:47 +00:00
debian 1.157.2 2026-07-28 14:02:12 +01:00
demo Fix small comment typo in config output from the demo/start.sh script (#19538) 2026-03-30 11:14:25 -05:00
docker Fix Complement test flake when restarting Synapse workers (cross-test pollution caused by nginx upstreams being temporarily unavailable) (#19936) 2026-07-09 11:12:28 -05:00
docs Limit the size of push rules 2026-07-28 13:58:06 +01:00
rust Support MSC4446: allow moving fully read markers backwards (#19663) 2026-07-13 16:12:26 +00:00
schema Limit the size of push rules 2026-07-28 13:58:06 +01:00
scripts-dev Update release script to be compatible with macOS 2026-07-14 16:14:35 -05:00
stubs Write union types as X | Y where possible (#19111) 2025-11-06 14:02:33 -06:00
synapse feat: Support ignoring reply trees via relations 2026-07-28 16:19:19 +01:00
synmark Port Clock functions to use Duration class (#19229) 2025-12-01 13:55:06 +00:00
tests fix up test 2026-07-28 16:19:19 +01:00
.codecov.yml Disable codecov reports to GH comments. 2019-07-31 10:56:02 +01:00
.coveragerc Fix coverage in sytest and use plugins for buildkite (#5922) 2019-08-29 22:19:57 +10:00
.dockerignore Fix pinning Rust deps in docker images (#14129) 2022-10-11 10:53:34 +00:00
.editorconfig Apply correct editorconfig to .pyi files (#14526) 2022-11-22 18:33:28 +00:00
.git-blame-ignore-revs Ignore Python language refactors (.git-blame-ignore-revs) (#19150) 2025-11-10 22:34:30 +00:00
.gitignore add before and after filter to redact user method (/_synapse/admin/v1/user/$user_id/redact) (#19802) 2026-07-01 17:28:22 +01:00
.rustfmt.toml Prevent dirty Cargo.lock changes from install (#18693) 2025-07-18 10:28:10 -05:00
AUTHORS.rst Automatically delete empty groups/communities (#6453) 2019-12-16 12:12:40 +00:00
book.toml Bump mdbook from 0.4.17 -> 0.5.2 and remove custom table-of-contents plugin (#19356) 2026-01-07 18:46:03 +00:00
build_rust.py Drop Python 3.9, bump tests/builds to Python 3.10 (#19099) 2025-10-29 12:15:00 -05:00
Cargo.lock Bump bytes from 1.11.1 to 1.12.0 (#19918) 2026-07-14 09:24:39 +00:00
Cargo.toml Fix building rust with nightly (#15906) 2023-07-10 16:24:04 +01:00
CHANGES.md 1.157.2 2026-07-28 14:02:12 +01:00
CONTRIBUTING.md Update the contributing guide after reliecensing (#16772) 2024-01-03 11:31:03 +00:00
flake.lock Fix nix flake 2024-11-20 15:01:56 +00:00
flake.nix Replace PyICU with Rust icu_segmenter crate (#18553) 2025-07-03 11:12:12 +01:00
INSTALL.md Update book location 2023-12-13 16:15:22 +00:00
LICENSE-AGPL-3.0 make dual licensing explicit (#18134) 2025-02-05 13:40:10 +00:00
LICENSE-COMMERCIAL make dual licensing explicit (#18134) 2025-02-05 13:40:10 +00:00
mypy.ini Migrate dev dependencies to PEP 735 dependency groups (#19490) 2026-03-17 14:45:28 +00:00
poetry.lock Add metric to count number of non-deactivated users. (#19848) 2026-06-25 11:57:36 -05:00
pyproject.toml 1.157.2 2026-07-28 14:02:12 +01:00
README.md meta: Update README 2026-07-28 16:19:19 +01:00
README.rst Update Element logo to be an absolute URL, so it will render on PyPI (#19368) 2026-01-13 12:03:34 +00:00
sytest-blacklist Use full GitHub links instead of bare issue numbers. (#16637) 2023-11-15 08:02:11 -05:00
tox.ini Drop Python 3.9, bump tests/builds to Python 3.10 (#19099) 2025-10-29 12:15:00 -05:00
UPGRADE.rst Update book location 2023-12-13 16:15:22 +00:00

Starnapse

Starnapse is a patchset applied on top of Element's Synapse. It borrows several patches from Maunium Synapse, some odd patches from other forks, and maintains several new features, as well as several bug fixes that keep starstruck.systems running.

Important

STARNAPSE IS NOT A HARD FORK! IT IS BARELY A SOFT FORK!

Please don't expect support, quality, compatibility, etc - this is specifically designed for starstruck.systems. If you run into issues or have questions, feel free to contact me in my Matrix room: #startopic:starstruck.systems. Do not expect Synapse support. I have no idea how Synapse works, I am a monkey with a typewriter.

Please do not blindly run this fork without reading the following changes:

Some features include:

  • More to-device messages per /v3/sync (to allow clients to catch up on what they missed faster).
  • Federation denylist.
    • Federation "event spoiling" (redacting outgoing events to specific servers).
  • Removal of the admin requirement to un-redact events.
  • The User-Agent and version string has been changed to Starnapse.
  • Enhanced ignores (replies to ignored events will also be implicitly ignored).

Several fixes are applied too:

  • Federation key expiry is ignored (to work around a CPU exhaustion bug).
  • Joining a remote room no longer spuriously fails (weird missing event bug).
  • Creating a v12 room with a creator in the power levels preset silently removes the user rather than erroring.
  • "Partial joins" have been disabled (to stop the scourge of rooms that never de-partialed).
  • Incoming policy server signature checks are disabled (to work around a CPU exhaustion bug).

Several other patches are also applied. See the commit history for a list: https://git.nexy7574.co.uk/star/starnapse/commits/branch/starnapse.

Note

The starnapse branch is rebased on each Synapse tag and is consequently force pushed.

Installing

pip install -U git+https://git.nexy7574.co.uk/star/starnapse.git

Warning

The .git suffix may be required, otherwise the forge's anti-bot measures may block your clone attempt.

Pre-compiled wheels are not available yet. The package name is still matrix-synapse.

Config reference

The following new configuration options are introduced when using this patchset:

federation:
  # Servers to "spoil" outgoing events for (server soft-blocking).
  # Servers in this list will receive tampered copies of events, forcing them to redact them locally before continuing.
  # This allows you to prevent specific remote servers seeing the contents of your events.
  # Exact server names are required - glob and regex is not supported.
  # This is a nuclear option!
  spoil_servers:
    - server.example
    - evil.server.example
  # When an event is being sent to a spoiled remote (above), if the event's sender is not in this list, the event
  # will not be spoiled. This allows you to limit whose events are spoilt.
  # If the list is empty/not provided, all users are spoilt.
  spoil_users:
    - "@user1:starstruck.example"
  # Servers to outright deny federation with (server hard-blocking).
  # Servers in this list will not be permitted to make federation requests to your server at all, and all outgoing
  # federation requests to blocked remotes (including end-to-end encryption and media) will also be prevented.
  # Exact server names are required - glob and regex is not supported.
  # This is a double nuclear option!
  federation_domain_denylist:
    - denied.domain.example

The configuration options for Maunium Synapse are also available: https://mau.dev/maunium/synapse#configuration-reference.