transport #2 · E2E-encrypted · xmtp.org
GDBx over XMTP
One MLS group room per .gdbx address (gdbx/<addr>) carrying the same signed LWW-CRDT envelope as Nostr — verified identically by every receiver and the edge FirewallGuard.
1 · WebSocket <150ms
2 · XMTP E2E MLS
3 · Nostr kind-23124
4 · WebRTC P2P
1 · Connect XMTP identity
Identity = your EVM wallet (MetaMask / any injected provider). XMTP client runs on production env.
not connected
2 · Open address room
Room name = gdbx/<58-char .gdbx address>. Existing room is reused, otherwise a self-only MLS group is created.
no room open
3 · Live envelopes streaming
Open a room to stream signed GDBx envelopes…
Sending signs with your GDBx identity (seed login via Dashboard) + PoW, posts to XMTP, and offers one-click edge ingest through FirewallGuard.
Use it in your app
import { GDBxXMTP, ethereumSigner } from "https://gdbx.pages.dev/sdk/gdbx-xmtp.js";
const mesh = new GDBxXMTP(); // env: production
await mesh.connect({ signer: await ethereumSigner() });
await mesh.openRoom(addr); // gdbx/<addr>
await mesh.send({ addr, pubkey, pubkeyHex, ts, nonce, diff, hash, deltas, sig });
mesh.stream(async (parsed) => {
console.log(parsed.deltas);
await mesh.syncViaHttp(parsed); // merge into edge state
});