XmtpElixirSdk

Elixir-first XMTP SDK ported from the browser SDK surface, with a minimal browser shim kept only for browser-only runtime concerns such as workers and browser storage.

This SDK is built as a port from qntx/xmtp.

Rust source explainer

Installation

The package is designed to be published to Hex and can be installed by adding xmtp_elixir_sdk to your list of dependencies in mix.exs:

def deps do
  [
    {:xmtp_elixir_sdk, "~> 0.1.0"}
  ]
end

Scope

Browser Wallet Signing

Keep browser wallet providers at the app layer. The Elixir SDK stays provider neutral and exposes generic signature-request flows for app code to complete.

The intended browser flow is:

  1. Build an XMTP client from the wallet address you want to use as the XMTP identity.
  2. Ask the SDK for the current signature request text.
  3. Have the browser wallet sign that exact text.
  4. Send the resulting signature back to the server.
  5. Apply the signature request and continue with the XMTP action.

That pattern lets Phoenix and LiveView apps use Privy, injected wallets, or any other browser signer without adding wallet-vendor code to the Hex package.

Publishing

Build the package locally with:

mix hex.build

Publish it with:

mix hex.publish