No description
Find a file
Espen M a13ad369ab docs: amend S4 — wasm32 build verified, bundle gate re-passed
Follow-up to b4a1b10: the rustup `gentoo` toolchain has wasm32-unknown-unknown
installed, so the S4 wasm constraint proof is no longer dep-graph analysis
only — it's an actual compile + bundle-size smoke test.

Verified on the rustup gentoo toolchain:
- cargo check -p ims-engine --target wasm32-unknown-unknown --features wasm
- cargo check -p ims-wasm   --target wasm32-unknown-unknown
- cargo build -p ims-wasm   --release  --target wasm32-unknown-unknown
- wasm-bindgen --target web → examples/tab-two-member/pkg/

Bundle gate: 415,802 bytes gzipped total (~406 KB) vs S1's 417,450 (~408 KB).
The X.509 credential support adds zero to the wasm bundle (x509-cert is
no_std-friendly, ed25519-dalek was already transitive via openmls_rust_crypto).

ims-wasm's `new_identity` switched to `Identity::new_basic` (the renamed
legacy constructor) so the browser bridge keeps compiling for the S1 demo;
production browser code calls `with_x509` once S5 lights up the cert-fetch
flow.

Co-Authored-By: opencode <opencode@anomaly.com>
2026-07-26 21:50:44 +02:00
crates docs: amend S4 — wasm32 build verified, bundle gate re-passed 2026-07-26 21:50:44 +02:00
docs docs: amend S4 — wasm32 build verified, bundle gate re-passed 2026-07-26 21:50:44 +02:00
examples/tab-two-member chore: initial project commit 2026-07-18 22:01:08 +02:00
.gitignore chore: initial project commit 2026-07-18 22:01:08 +02:00
Cargo.toml docs: S4 X.509-anchored MLS leaf credentials (engine-only) 2026-07-26 21:46:21 +02:00
README.md chore: initial project commit 2026-07-18 22:01:08 +02:00

mimi-ims

A self-hosted MIMI/MLS-based end-to-end encrypted messaging service. Backend embeds mimi-core (Apache-2.0) + openmls (RFC 9420). Browser client loads an OpenMLS engine compiled to wasm32-unknown-unknown.

Status: Phase 0 (spikes). Not a usable service. See examples/tab-two-member/README.md for the S1 feasibility + bundle-size gate.

Layout

crates/
  ims-engine/   pure MIMI/MLS engine; builds for native AND wasm
  ims-wasm/     wasm-bindgen browser bindings over ims-engine
  ims-server/   internal API server (skeleton; Phase 2)
examples/
  tab-two-member/   S1 spike: two tabs, one MLS group, one message

Why MIMI / MLS, not Matrix

MIMI is built around MLS (RFC 9420) end-to-end. Matrix's MLS support is still incomplete. MIMI is pre-standard (draft-ietf-mimi-protocol-06, expires Oct 2026); this project tracks the drafts and accepts the churn.

Build

# Native (smoke):
cargo build -p ims-server

# WASM (S1 spike):
cargo build --release -p ims-wasm --target wasm32-unknown-unknown
wasm-bindgen --out-dir examples/tab-two-member/pkg --target web --no-typescript \
    target/wasm32-unknown-unknown/release/ims_wasm.wasm

S1 gate

Gzipped ims_wasm_bg.wasm must be ≤ 1.5 MB to GO. See examples/tab-two-member/README.md.