Continuwuity, a community driven fork of conduwuit & Conduit, focusing on user experience and new features. https://continuwuity.org
Find a file
Tom Foster b481ff31c0
Some checks failed
Checks / Build / Publish / Pre-commit & Formatting (pull_request) Successful in 31s
Deploy / Documentation / Build and Deploy Documentation (pull_request) Successful in 36s
Checks / Build / Publish / Clippy and Cargo Tests (pull_request) Successful in 3m21s
Checks / Build / Publish / Build linux/amd64 (pull_request) Failing after 3m41s
Checks / Build / Publish / Build linux/arm64 (pull_request) Failing after 4m12s
Checks / Build / Publish / Publish Multi-Platform (pull_request) Failing after 0s
ci: Consolidate workflows and optimise build pipeline performance
Merge rust-checks.yml and release-image.yml into unified ci-build.yml
workflow that runs faster and more efficiently. The previous setup ran
4+ parallel jobs immediately (format, clippy, test, builds), causing
resource contention. The new pipeline runs max 2 jobs in parallel at
each stage, catching lint/format issues quickly before attempting
expensive compilation.

Extract all Rust setup logic from both workflows into reusable
rust-with-cache composite action. This replaces 6 separate actions
(rust-toolchain, sccache, timelord, plus inline APT/cache steps) with
a single action that handles:
- Rust toolchain installation with component selection
- Cross-compilation configuration (previously scattered across
  release-image.yml)
- System dependency installation with proper error handling
- Comprehensive caching (sccache, cargo registry, cargo target, uv
  tools)
- Timeline tracking and performance monitoring

The previous release-image.yml had cross-compilation support but it
was implemented inline with complex environment variables. The new
rust-with-cache action centralises this with proper parameters for
pkg-config paths, foreign architecture setup, and toolchain selection.

Performance improvements make the pipeline fast enough to consolidate:
- Warmed sccache cache shared between check and build stages
- Optimised cargo target cache to exclude incremental/ and binaries
  (was caching entire target/ directory via buildkit-cache-dance)
- Add restore-keys fallback for better cache hit rates
- Parallel background tasks for Rust setup while APT runs
- Fail-fast on format/lint errors before expensive compilation
- Enable Haswell CPU optimisations for x86_64 builds (AVX2, FMA, etc.)
- Add cross-language LTO (Link-Time Optimisation) for better performance

Fix ARM64 cross-compilation reliability issues:
- Move APT installations from background to foreground (background
  processes would hang during package downloads despite
  DEBIAN_FRONTEND=noninteractive)
- Set proper pkg-config environment for cross-compilation
- Configure APT sources to ports.ubuntu.com for foreign architectures
- Replace hardened_malloc with jemalloc (ARM64 unsupported)

Modernisation from previous commit (b0ebdb59):
- prefligit renamed to prek (avoid typosquatting)
- Direct uvx rustup replacing custom rust-toolchain action
- Workflow renames: deploy-element, deploy-docs, docker-mirror
- Renovate configuration for .forgejo/ workflows
- fix-byte-order-marker replacing check-byte-order-marker

Docker improvements:
- Remove buildkit-cache-dance injection (now handled natively)
- Align tag naming between arch-specific and multi-platform builds
- Add branch- prefix for non-default branches
- Reserve latest-{arch} tags for version releases only
- Remove dynamic library extraction logic (ldd doesn't work for
  cross-compiled binaries; Rust --release produces mostly-static binaries)

Additional improvements based on maintainer feedback:
- Generate SBOM (Software Bill of Materials) for security compliance
- Include SBOM in uploaded build artefacts alongside binary

The consolidated pipeline completes in ~10 minutes with better
resource utilisation and clearer failure diagnostics. Both x86_64 and
ARM64 builds now work reliably with the centralised cross-compilation
configuration.
2025-08-15 22:50:41 +01:00
.cargo feat: Generate admin command documentation 2025-07-06 22:58:00 +01:00
.forgejo ci: Consolidate workflows and optimise build pipeline performance 2025-08-15 22:50:41 +01:00
.github chore: Update funding file 2025-07-30 19:23:38 +01:00
.vscode chore: Add words to cspell dictionary 2025-04-15 22:35:39 +00:00
arch fix(arch): fix config.toml not being loaded from LoadCredentials directory 2025-08-06 20:01:36 +03:00
bin skip a few flakey complement tests 2025-03-15 19:14:45 -04:00
debian fix: Use boolean where expected in services 2025-07-16 23:27:14 +01:00
docker feat: Almost-functional musl builds on Alpine 2025-07-24 23:22:27 +01:00
docs docs: Make traefik router names consistent 2025-07-30 19:55:48 +01:00
nix/pkgs/main include xtask 2025-07-07 14:18:09 -07:00
src refactor: address code review feedback for auth and pagination improvements 2025-08-12 05:29:41 +01:00
tests chore: Update rocksdb, feature flag changes 2025-07-24 21:51:52 +01:00
theme docs: Fix spacing at the top 2025-07-24 13:37:52 +01:00
xtask feat: Generate binary documentation 2025-07-06 22:58:01 +01:00
.dockerignore chore: Docker ignore forgejo files 2025-05-20 21:31:41 +01:00
.editorconfig ci: fixes 2025-06-21 19:17:21 +01:00
.envrc chore: Disable direnv's nix flake interfering with cargo cache 2025-07-20 16:36:01 +01:00
.git-blame-ignore-revs chore: Add commit to ignored revs 2025-06-21 18:03:38 +01:00
.gitattributes chore: fix end of files & trailing whitespace 2025-06-21 17:59:01 +01:00
.gitignore fix .gitignore to allow /target to be a symlink 2024-12-10 05:40:45 +00:00
.mailmap chore: Update Olivia Lee in mailmap 2025-04-15 21:58:39 +01:00
.markdownlintignore add markdownlint and run lychee in documentation CI workflow 2024-07-03 11:30:16 -04:00
.pre-commit-config.yaml ci: Consolidate workflows and optimise build pipeline performance 2025-08-15 22:50:41 +01:00
.typos.toml chore: Remove false positives in typo checks 2025-07-19 20:31:54 +01:00
book.toml Update mdBook config for continuwuity 2025-04-16 15:49:46 +01:00
Cargo.lock chore: Release 2025-07-25 14:10:06 +01:00
Cargo.toml chore: Release 2025-07-25 14:10:06 +01:00
clippy.toml fix some nightly clippy lints 2025-03-13 08:37:34 -04:00
CODE_OF_CONDUCT.md docs: Add vias to matrix.to links 2025-07-24 13:31:58 +01:00
committed.toml feat: Advertise support for spec v1.8, 1.12, 1.13, and 1.14 2025-07-01 18:38:48 +01:00
conduwuit-example.toml feat(policy-server): Add configurable timeout 2025-07-23 17:49:08 +01:00
CONTRIBUTING.md chore: Update rocksdb, feature flag changes 2025-07-24 21:51:52 +01:00
default.nix feat: support non-flake users 2024-02-11 21:56:55 -05:00
development.md docs: add some more conduwuit development info 2024-09-06 20:33:02 -04:00
engage.toml chore: Update rocksdb, feature flag changes 2025-07-24 21:51:52 +01:00
flake.lock chore: Update toolchain hash & flake.lock 2025-07-07 20:47:29 +01:00
flake.nix fix: RocksDB build 2025-07-07 20:47:30 +01:00
LICENSE remove nightly only feature, small housekeeping stuff 2023-11-29 21:59:18 -05:00
README.md docs: Fix documentation link in README 2025-07-28 19:28:34 +01:00
renovate.json ci: Consolidate workflows and optimise build pipeline performance 2025-08-15 22:50:41 +01:00
rust-toolchain.toml build: Upgrade to Rust 1.87 2025-06-20 21:45:29 +01:00
rustfmt.toml bump nix lock, update to rust 2024 and 1.85.0 toolchain 2025-02-23 01:17:30 -05:00
SECURITY.md docs: Tiny phrasing changes to the security policy 2025-06-14 16:34:58 +01:00

continuwuity

A community-driven Matrix homeserver in Rust

Chat on Matrix Join the space

continuwuity is a Matrix homeserver written in Rust. It's a community continuation of the conduwuit homeserver.

forgejo.ellis.link Stars Issues Pull Requests

GitHub Stars

GitLab Stars

Codeberg Stars

Why does this exist?

The original conduwuit project has been archived and is no longer maintained. Rather than letting this Rust-based Matrix homeserver disappear, a group of community contributors have forked the project to continue its development, fix outstanding issues, and add new features.

We aim to provide a stable, well-maintained alternative for current conduwuit users and welcome newcomers seeking a lightweight, efficient Matrix homeserver.

Who are we?

We are a group of Matrix enthusiasts, developers and system administrators who have used conduwuit and believe in its potential. Our team includes both previous contributors to the original project and new developers who want to help maintain and improve this important piece of Matrix infrastructure.

We operate as an open community project, welcoming contributions from anyone interested in improving continuwuity.

What is Matrix?

Matrix is an open, federated, and extensible network for decentralized communication. Users from any Matrix homeserver can chat with users from all other homeservers over federation. Matrix is designed to be extensible and built on top of. You can even use bridges such as Matrix Appservices to communicate with users outside of Matrix, like a community on Discord.

What are the project's goals?

Continuwuity aims to:

  • Maintain a stable, reliable Matrix homeserver implementation in Rust
  • Improve compatibility and specification compliance with the Matrix protocol
  • Fix bugs and performance issues from the original conduwuit
  • Add missing features needed by homeserver administrators
  • Provide comprehensive documentation and easy deployment options
  • Create a sustainable development model for long-term maintenance
  • Keep a lightweight, efficient codebase that can run on modest hardware

Can I try it out?

Check out the documentation for installation instructions.

There are currently no open registration Continuwuity instances available.

What are we working on?

We're working our way through all of the issues in the Forgejo project.

Can I migrate my data from x?

  • Conduwuit: Yes
  • Conduit: No, database is now incompatible
  • Grapevine: No, database is now incompatible
  • Dendrite: No
  • Synapse: No

We haven't written up a guide on migrating from incompatible homeservers yet. Reach out to us if you need to do this!

Contribution

Development flow

  • Features / changes must developed in a separate branch
  • For each change, create a descriptive PR
  • Your code will be reviewed by one or more of the continuwuity developers
  • The branch will be deployed live on multiple tester's matrix servers to shake out bugs
  • Once all testers and reviewers have agreed, the PR will be merged to the main branch
  • The main branch will have nightly builds deployed to users on the cutting edge
  • Every week or two, a new release is cut.

The main branch is always green!

Policy on pulling from other forks

We welcome contributions from other forks of conduwuit, subject to our review process. When incorporating code from other forks:

  • All external contributions must go through our standard PR process
  • Code must meet our quality standards and pass tests
  • Code changes will require testing on multiple test servers before merging
  • Attribution will be given to original authors and forks
  • We prioritize stability and compatibility when evaluating external contributions
  • Features that align with our project goals will be given priority consideration

Contact

Join our Matrix room and space to chat with us about the project!