1
Fork 0
element-hq/synapse with patches for starstruck.systems https://starstruck.systems
  • Python 95.3%
  • Rust 3.3%
  • HTML 0.4%
  • Shell 0.4%
  • Go 0.2%
  • Other 0.1%
Find a file
2026-09-28 22:29:52 +01:00
.ci Schema diff CI: Fix hanging when Rust module changes (#20129) 2026-08-20 16:43:24 +01:00
.github Bump the all-github-actions group across 1 directory with 3 updates (#20269) 2026-09-25 13:08:42 +01:00
changelog.d Type-check RestServlet.PATTERNS (#20258) 2026-09-25 13:32:11 +02:00
complement Bump the all-go-dependencies group in /complement with 2 updates (#20271) 2026-09-25 11:40:11 +00:00
contrib Document how to capture a JSON snapshot of a Grafana dashboard (#20048) 2026-08-05 11:11:30 -05:00
debian 1.162.0rc1 2026-09-22 13:52:38 -05:00
demo Profile endpoint rate limit (#20218) 2026-09-18 12:00:45 +01:00
docker Docker: support workers for MSC4140 single lookup (#20262) 2026-09-24 16:41:59 +01:00
docs Docker: support workers for MSC4140 single lookup (#20262) 2026-09-24 16:41:59 +01:00
rust Add push rules for MSC4075: MatrixRTC invites and notifications (#20227) 2026-09-25 10:40:24 +00:00
schema Reject limit_profile_requests_to_users_who_share_rooms without require_auth_for_profile_requests (#20231) 2026-09-23 16:33:17 +00:00
scripts-dev Update release script to check more often for actions being completed (every 1m) (#20093) 2026-08-12 11:54:53 -05:00
stubs Support configuring a username for Redis connections (#20187) 2026-09-15 17:16:47 +00:00
synapse Add spam checker option for restricted joins 2026-09-28 22:29:52 +01:00
synmark Port Clock functions to use Duration class (#19229) 2025-12-01 13:55:06 +00:00
tests chore: fix up test 2026-09-28 22:29:52 +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 Align comments in .dockerignore with synapse-private pro branch (#20224) 2026-09-17 10:09:17 -05: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 libc from 0.2.174 to 0.2.189 in the patches group (#20249) 2026-09-22 11:38:31 +00:00
Cargo.toml Fix building rust with nightly (#15906) 2023-07-10 16:24:04 +01:00
CHANGES.md Better align case and canonical "third party rules" spelling 2026-09-22 17:37:07 -05: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 Support configuring a username for Redis connections (#20187) 2026-09-15 17:16:47 +00:00
pyproject.toml 1.162.0rc1 2026-09-22 13:52:38 -05:00
README.md meta: Update README 2026-09-28 22:29:52 +01:00
README.rst Fix a few readme links regarding ESS (#19070) 2026-09-24 09:58:57 +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