element-hq/synapse with patches for starstruck.systems https://starstruck.systems
  • Python 95.6%
  • Rust 3%
  • HTML 0.4%
  • Shell 0.4%
  • Go 0.2%
  • Other 0.1%
Find a file
2026-08-22 19:51:31 +01:00
.ci Dust off make_full_schema and add CI using it to show schema diffs. (#20027) 2026-08-11 12:55:59 +01:00
.github Dust off make_full_schema and add CI using it to show schema diffs. (#20027) 2026-08-11 12:55:59 +01:00
changelog.d Merge remote-tracking branch 'mlm/madlittlemods/remove-flawed-msc4311-partial-implementation' into starnapse 2026-08-18 19:25:11 +01: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 Document how to capture a JSON snapshot of a Grafana dashboard (#20048) 2026-08-05 11:11:30 -05:00
debian 1.159.0 2026-08-18 11:07:08 -05: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 Run with PYTHONUNBUFFERED=1 so we can always see log output (#20075) 2026-08-10 10:22:04 -05:00
docs Update stream cheatsheet docs to re-link synapse/config/workers.py with more references (#20086) 2026-08-11 10:27:02 -05:00
rust Merge remote-tracking branch 'mlm/madlittlemods/remove-flawed-msc4311-partial-implementation' into starnapse 2026-08-18 19:25:11 +01:00
schema 1.159.0rc1 2026-08-11 11:25:53 -05:00
scripts-dev Dust off make_full_schema and add CI using it to show schema diffs. (#20027) 2026-08-11 12:55:59 +01:00
stubs Write union types as X | Y where possible (#19111) 2025-11-06 14:02:33 -06:00
synapse Always include admin metadata in soft-failed events 2026-08-22 19:51:31 +01:00
synmark Port Clock functions to use Duration class (#19229) 2025-12-01 13:55:06 +00:00
tests Merge remote-tracking branch 'mlm/madlittlemods/remove-flawed-msc4311-partial-implementation' into starnapse 2026-08-18 19:25:11 +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 the patches group with 6 updates (#20042) 2026-08-06 10:09:27 +00:00
Cargo.toml Fix building rust with nightly (#15906) 2023-07-10 16:24:04 +01:00
CHANGES.md Move package notice back 2026-08-18 11:08:10 -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 Bump gitpython from 3.1.57 to 3.1.58 (#20079) 2026-08-11 10:42:32 +00:00
pyproject.toml 1.159.0 2026-08-18 11:07:08 -05:00
README.md meta: Update README 2026-08-18 19:12:01 +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.