# @open-matrix/federation Matrix federation layer for cross-realm messaging with: - **Tolerant MXURI parsing** (legacy compact + segmented `/-/` form) - **Dual mailbox namespaces** (Strangler Fig) - legacy: `public.ingress.` (Matrix-3 compatibility) - mx ingress: `mx/in/1//` (MXINGRESS/1) - **Dual envelope profiles** (Strategy) - legacy: Matrix-3 request/reply envelopes - mxenv1: MXENV/1 envelopes (`Cmd|Evt|Result|Sub|Unsub|Nack`) - **Edge gateway** bridging mailbox messages ↔ internal bus (`mx/1//`) - **Federation subscription leasing** (streaming Evt forwarding) - **Session directory** (principal → active tab realms) for unsolicited push - **Hierarchical routing overlay** (MXROUTE-style route inbox forwarding) - **Pluggable transport** with in-memory brokers for deterministic tests No external npm dependencies are required to run unit + integration tests. ## Run ```bash npm test ``` ## Read the full design Start with `DESIGN.md`. ## Code map - Encoding + routing primitives - `src/uri.ts` — tolerant MXURI parsing + canonicalization - `src/topics.ts` — mailbox topics + internal topics + route inbox topics - `src/envelope.ts` + `src/envelope_codec.ts` — legacy + MXENV/1 envelopes, tolerant decoding, profile-specific encoding - Transports - `src/transport/base.ts` — transport port - `src/transport/inmem.ts` — in-memory exact-match broker + wildcard-filter broker - Runtime components - `src/runtime/edge_gateway.ts` — mailbox ↔ internal bus bridge - `src/runtime/component_host.ts` — helper for registering internal "accepts" handlers - `src/runtime/federation.ts` — subscription leases + Evt forwarding - `src/runtime/directory.ts` — session directory + protocol facade - `src/runtime/router.ts` — hierarchical routing overlay bridge - `src/runtime/discovery.ts` + `src/runtime/resolved_client.ts` — endpoint resolution + fallback client - Security building blocks - `src/security/*` — replay cache, rate limiter, policy hooks, principal derivation - Tests - `tests/unit/*` — codecs and matching - `tests/integration/*` — end-to-end request/reply, subscriptions, directory push, discovery fallback, routing overlay, security