Skip to content

Introduction to XMTP

XMTP (Extensible Message Transport Protocol) is an open protocol, network, and standards for secure, private web3 messaging.

Why XMTP?

Developers build with XMTP SDKs to provide messaging between blockchain accounts in their apps. The XMTP messaging API client takes care of:

Find your XMTP client SDK

XMTP client SDKs require you to use ethers or another web3 library capable of supplying an ethers Signer. These wallet connection tools, as well as others, provide this capability.

Try messaging with XMTP

A great way to start learning how to build an app with XMTP is to use one!

Pick an identity you want to use to message with XMTP

You can use an Ethereum address to start.

If you have an ENS name, UNS name, or Lens handle associated with the address, you can tell people to use it to message you instead of using your full Ethereum address.

Don’t have an Ethereum address? Create one using a compatible wallet app of your choice. For example:

Pick an app

Explore apps on https://xmtp.org/.

Send a message

To send a message to an address it must have an XMTP identity already created on the network. Share this page with someone you want to message to help them get on the network if they aren't already there.

In the meantime, need someone to message with? Send a message to the XMTP message bot at gm.xmtp.eth (0x937C0d4a6294cdfa575de17382c7076b579DC176) and get an immediate gm reply. You can message the ENS name or the raw 0x address.

See the portable inbox in action

Try a second app and see all of your conversations in both apps, regardless of the app you used to start them. This also means you and a friend can each use your own preferred app to exchange messages.

With XMTP, you own and control your messages and are always free to use the app that best suits your needs.

Understand what works with XMTP

XMTP has been implemented to work with Ethereum Virtual Machine (EVM)-compatible wallet apps and blockchain accounts (wallets), though XMTP itself does not use EVMs. XMTP also works with other web3 identities that apps built with XMTP can derive from Ethereum accounts, such as ENS names and Lens profiles.

To learn more, see Works with XMTP.

Understand XMTP concepts

The XMTP message API revolves around a network client that allows retrieving and sending messages to other network participants.

A client must be connected to a wallet on startup. If this is the very first time the client is created, the client will generate a key bundle that is used to encrypt and authenticate messages.

The key bundle persists encrypted in the network using a wallet signature. The public side of the key bundle is also regularly advertised on the network to allow parties to establish shared encryption keys.

A user can send and receive encrypted XMTP messages using an app with an embedded XMTP messaging API client. XMTP network nodes transport and persist the user's messages.

For the protocol specification, see The XMTP Protocol in the proto GitHub repo.