A Matrix <-> Zulip bridge written in Rust.
Maintainer: Palpo Team
- Rust-only implementation
- Matrix appservice + Zulip client bridge core
- HTTP endpoints for health/status
- Database backends: PostgreSQL and SQLite (feature-gated)
- Dockerfile for container deployment
- Rust toolchain
- A Matrix homeserver configured for appservices
- A Zulip server with bot credentials
- Create your config file:
cp config.example.yaml config.yaml-
Set the required values in
config.yaml:bridge.domainbridge.homeserver_urldatabase.urlregistration.appservice_token,registration.homeserver_token
-
Build and run:
cargo build --release
cargo run --releaseSee config.example.yaml for the YAML configuration or config.example.kdl for the KDL configuration.
When running in the Palpo environment, you can use KDL format for configuration. See config.example.kdl for the full annotated example.
Key sections in KDL format:
bridge {
homeserver_url "http://localhost:8008"
domain "example.com"
bind_address "0.0.0.0"
port 28464
}
database {
db_type "postgres"
url "postgresql://user:password@localhost:5432/matrix_zulip_bridge"
max_connections 10
}
registration {
bridge_id "zulipbridge"
sender_localpart "zulipbridge"
appservice_token "your_appservice_token_here"
homeserver_token "your_homeserver_token_here"
}
zulip {
puppet_separator "_"
puppet_prefix "zulip_"
member_sync "half"
max_backfill_amount 100
}
room {
default_visibility "private"
}
limits {
matrix_event_age_limit_ms 300000
}
logging {
level "info"
}docker build -t matrix-bridge-zulip .
docker run --rm \
-p 28464:28464 \
-v "$(pwd)/config:/data" \
matrix-bridge-zulipApache-2.0