Matrix 生态中 Rust 扮演着越来越重要的角色------从底层协议库、高性能服务器到终端客户端,都有成熟的 Rust 实现。以下是完整的项目图谱:
🏗️ 一、基础设施层:Ruma
项目地址 :https://github.com/ruma/ruma
| 属性 | 说明 |
|---|---|
| 许可证 | MIT / Apache-2.0 |
| Stars | 600+ |
| 下载量 | 42万+ 次 |
Ruma 是整个 Matrix Rust 生态的基石,它不是一个可运行的应用程序,而是一套 Rust crate 集合,提供了 Matrix 协议中所有数据类型的序列化/反序列化实现。
ruma/
├── ruma-common # 通用类型和 traits
├── ruma-client-api # 客户端-服务器 API 端点类型
├── ruma-federation-api # 服务器间联邦 API 类型
├── ruma-events # 所有 Matrix 事件类型
└── ruma-appservice-api # 应用服务 API 类型
几乎所有其他 Matrix Rust 项目(SDK、服务器、客户端)都依赖 Ruma。例如 matrix-rust-sdk 的 ruma 依赖就是通过 ruma-client-api 引入的。
🎯 二、客户端 SDK 层:matrix-rust-sdk
项目地址 :https://github.com/matrix-org/matrix-rust-sdk
| 属性 | 说明 |
|---|---|
| 维护方 | Matrix.org 官方 |
| Stars | 1,200+ |
| Forks | 260+ |
这是官方维护的 Rust 客户端 SDK,所有上层客户端(桌面、移动、CLI)都基于它构建。架构上分为多个子 crate:
| Crate | 功能 | 说明 |
|---|---|---|
matrix-sdk |
主库 | 整合所有功能,提供高层 API |
matrix-sdk-base |
无 IO 状态机 | 房间状态、事件处理 |
matrix-sdk-crypto |
纯加密状态机 | Olm/Megolm 端到端加密 |
matrix-sdk-indexeddb |
存储层 | IndexedDB 持久化(WASM) |
matrix-sdk-qrcode |
二维码 | 设备验证等功能 |
跨平台绑定
matrix-sdk-crypto 提供了多种语言的绑定:
| 绑定 | 目标平台 | NPM 包 |
|---|---|---|
| Node.js | 服务端/桌面 | @matrix-org/matrix-sdk-crypto-nodejs |
| WASM | Web 浏览器 | @matrix-org/matrix-sdk-crypto-wasm |
| React Native | 移动端 | @unomed/react-native-matrix-sdk |
Node.js 绑定支持:Linux (x86_64/aarch64/arm/s390x)、macOS (x86_64/aarch64)、Windows (x86_64/aarch64/i686)
WASM 绑定使用示例:
javascript
import { initAsync, OlmMachine, UserId, DeviceId } from "@matrix-org/matrix-sdk-crypto-wasm";
await initAsync();
const machine = await OlmMachine.initialize(
new UserId("@alice:matrix.org"),
new DeviceId("DEVICEID")
);
// 处理同步数据...
const decrypted = await machine.receiveSyncChanges(...);
const outgoing = await machine.outgoingRequests();
⚠️ 历史漏洞
matrix-rust-sdk 0.7.0 版本存在一个漏洞:加密备份私钥会被记录到 debug 日志中,已于 0.7.1 修复。建议始终使用最新版本。
🖥️ 三、家庭服务器层(Homeserver)
Matrix 在 Rust 中主要有三个家庭服务器实现,按活跃度排序:
1. Tuwunel(推荐)
项目地址 :https://github.com/matrix-construct/tuwunel
| 属性 | 说明 |
|---|---|
| 维护方 | 全职团队,企业赞助 |
| 特点 | 轻量、高性能、低内存 |
Tuwunel 是 conduwuit 的官方继任者,主打资源效率------空闲时内存占用约 80MB,可在树莓派或低配 VPS 上运行。官方提供 Docker 镜像和预编译静态二进制。
最新版本:v1.4.9(修复了 CVE-2026-24471 安全漏洞)
2. continuwuity(社区延续)
项目地址 :https://gitea.com/fosscaports/continuwuity
| 属性 | 说明 |
|---|---|
| 维护方 | 社区志愿者 |
| 特点 | 从 conduwuit 无缝迁移 |
原 conduwuit 项目已归档,continuwuity 是其官方社区延续项目。目标是维持稳定可靠的 Rust Matrix 服务器,修复 bug 和性能问题,补充缺失功能。
最新版本:v0.5.1
3. Maelstrom(已停滞)
项目地址 :https://github.com/maelstrom-rs/maelstrom
高吞吐量设计,但最后一次更新是 4 年前,已不推荐使用。
⚠️ 安全提醒:CVE-2026-24471
2026 年 2 月披露了一个高危漏洞(CVSS 9.3/9.6),影响所有 Conduit 衍生服务器(包括 Tuwunel、continuwuity、Conduit、Grapevine):
- 攻击方式:恶意远程服务器可利用用户交互(离开/加入房间)诱骗受害者服务器签署任意事件
- 已修复版本:Tuwunel 1.4.9、continuwuity 0.5.1、Conduit 0.10.11
如果你使用的是旧版本,请立即升级。
📱 四、客户端应用
1. Iamb(终端 TUI 客户端)
项目地址 :https://github.com/ulyssa/iamb
| 属性 | 说明 |
|---|---|
| Stars | 690+ |
| 特点 | Vim 快捷键,纯终端界面 |
专为 Vim 爱好者设计的终端客户端,资源占用极低,支持完整的端到端加密。可通过 cargo install iamb 安装。
2. Robrix(GUI 客户端)
项目地址 :https://github.com/project-robius/robrix
| 属性 | 说明 |
|---|---|
| 技术栈 | Makepad UI + Robius 框架 |
| 状态 | Alpha 阶段 |
纯 Rust 编写的跨平台 GUI 客户端,目前处于早期开发阶段。
3. Netrix
crates.io :netrix
另一个使用 Makepad + Robius 的客户端,2026 年 3 月有更新。
🤖 五、机器人/Bot 框架
Headjack
项目地址 :https://github.com/arcuru/headjack
Rust 机器人框架/库,用于连接 Matrix。轻量级设计,适合开发自动化工具。
其他 Bot 工具
| 项目 | 功能 |
|---|---|
pokem |
HTTP 监听 + 转发到 Matrix(类似 ntfy.sh) |
matrix-tabsbot |
在房间中维护标签页的小型机器人 |
🔧 六、辅助工具
| 项目 | 功能 | 说明 |
|---|---|---|
rust-synapse-compress-state |
Synapse 状态压缩 | 官方工具,用 Rust 压缩 Python Synapse 的状态表 |
weechat-matrix-rs |
WeeChat Matrix 插件 | Rust 重写版 |
synapse-admin-api |
Synapse Admin API 类型 | Ruma 风格的类型定义 |
📊 七、总结:全栈 Rust 方案
| 层级 | 推荐项目 | 状态 |
|---|---|---|
| 协议基础 | Ruma | ✅ 稳定,广泛使用 |
| 客户端 SDK | matrix-rust-sdk | ✅ 官方维护,活跃 |
| 家庭服务器 | Tuwunel / continuwuity | ✅ 活跃,有全职/社区维护 |
| 终端客户端 | Iamb | ✅ 稳定可用 |
| GUI 客户端 | Robrix | 🚧 开发中 |
| Bot 框架 | Headjack | ✅ 可用 |
选型建议
如果你要从零搭建一套纯 Rust 的 Matrix 服务:
- 服务器 :选 Tuwunel(Docker 一键部署)
- 客户端开发 :使用 matrix-sdk + ruma 类型
- 日常使用 :终端用户用 Iamb ,图形界面用户用 Element(虽非 Rust,但兼容性最好)
- 跨语言集成 :使用 matrix-sdk-crypto 的 Node.js/WASM 绑定
你是想继续深入了解某个具体项目(如 Tuwunel 的配置细节、matrix-sdk 的 API 使用),还是准备开始动手部署了?