Skip to content

Vauxl Client

A Discord-style Matrix client. Tauri v2 shell, React (web) UI, and a Rust core. Today it runs entirely on an in-memory MockBackend. Replies, edits, own-message redaction, and reactions are functional mock behavior only. They are not homeserver operations or real Matrix interoperability.

Layout

client/
  core/        vauxl-core: contract types and MockBackend (no Tauri, no Matrix)
  src-tauri/   the Tauri shell: command and event wrappers, tauri-specta bindings export
  src/         the React UI (web). src/bindings.ts is GENERATED from Rust, do not edit it by hand
  docs/        DATA_INTERFACE.md explains the contract and the security boundary

The UI depends only on core (through the generated bindings), not on Tauri or Matrix, so the shell and the protocol stay swappable. See docs/DATA_INTERFACE.md.

Prerequisites

  • Rust (stable) and cargo
  • Bun
  • Linux desktop libraries for the Tauri webview. On Fedora: sudo dnf install webkit2gtk4.1-devel libsoup3-devel

Run

bun install
bun run tauri dev      # launches the window; runs Vite + the Rust app, needs a display

In debug builds, src/bindings.ts is regenerated automatically on launch. To regenerate it without launching the GUI:

cargo test -p vauxl-app export_bindings

Build

cargo build                 # compiles the workspace (core + app)
cargo test                  # runs core + binding-export tests
bun run build               # typechecks and builds the frontend into dist/
bun run tauri build         # produces a packaged desktop bundle

Replacing the mock with Matrix

Implement the current command set used by the UI with matrix-rust-sdk, then update AppState and the constructor in src-tauri/src/lib.rs. Add a shared backend trait only when a second backend exists. Crypto stays in vodozemac through the SDK.

About

Vauxl Matrix client (Matrix-first MVP)

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages