Another yet federated messenger.
Find a file
kiper220 442826a89d chore: initial project structure (#1)
Reviewed-on: #1
Reviewed-by: Hermes <hs@wetgrape.su>
2026-07-29 17:53:08 +00:00
crates chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00
docs chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00
.env.example chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00
.gitignore chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00
Cargo.lock chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00
Cargo.toml chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00
LICENSE Initial commit 2026-07-23 12:32:10 +00:00
README.md chore: initial project structure (#1) 2026-07-29 17:53:08 +00:00

GuildWine

Federated, cryptographic messenger server foundation for MLS.

The current codebase establishes architecture and correctness primitives, including typed and transactional RocksDB, exact indexed TTL, reliable per-device event replay, signed commands, bounded runtime admission, and the atomic persistence boundary for spaces and MLS-conversation projections.

Product workflows, the MLS engine itself, QR enrollment wire operations, federation transport, and LiveKit provisioning remain intentionally unimplemented. Their contracts are documented before feature development starts.

Development

cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets

Run the server with environment variables:

GW_SERVER__BIND="127.0.0.1:8080" \
GW_SERVER__DATABASE="./db" \
GW_REGISTRATION__INITIAL_TOKEN="replace-me" \
GW_REGISTRATION__INITIAL_TOKEN_MAX_REGISTRATIONS=1 \
GW_WELLKNOWN__DOMAIN="example.org" \
cargo run -p guildwine-server

Double underscores separate nested configuration keys, so fields containing an underscore remain unambiguous (GW_SERVER__REQUEST_BODY). A local .env is loaded for development. Real environment values override it, and both override /etc/guildwine/config.*.

Перед добавлением функциональности прочитайте русскоязычное руководство разработчика.