How it works

Chat

Gas-free relayed messages, money attached to them, and the two things the relayer learns anyway.

Chat is the free one. Multiple conversations, sealed messages, and value attached to a message so that paying someone and telling them why are one action — and sending an ordinary message costs nothing, because it is not a Starknet transaction at all.

That last clause is the whole trade. Mail puts a sealed memo on chain inside a proved pool transaction and charges the pool fee for it. Chat hands ciphertext to our relay and charges nothing, and in exchange nothing about it is on chain and nothing is durable. Both surfaces ship, because they are answers to different questions.

Chat architecture from pool registration-key reads and browser-side room derivation through the bounded ciphertext relay to the recipient browser
Chat flow: chain reads establish the room, but messages stay off chain and browser history is the only history. Click the image to expand it.

Open the PNG version.

Chat and Mail, side by side

Chat (/chat)Mail (/mail)
Cost to sendNothing. Not a transaction.The live pool fee plus gas, unless a covered transaction applies.
On chain?No. Nothing is written.Yes — the pool posts the sealed memo to our Mailbox in the same proved transaction as the payment.
TransportOur relay carries the ciphertext over one multiplexed stream.No message relay. The recipient reads the Mailbox event from Starknet.
PersistenceUp to 50 ciphertext envelopes per relay room for 30 idle minutes, plus this browser's bounded local log.Chain-persistent. The ciphertext is a Mailbox event.
Recovery on a new deviceNot recovered. A cleared browser loses its history.Rebuilt from the chain and the viewing key alone.
What the relay learnsIP, timing, sizes, the sender key hint, and which rooms share one client connection. It can correlate the participants conservatively described by the app's disclosure.Only the transaction request and IP/timing, and only when it submits a covered transaction.
MoneyOptional attachment; the payment is a separate fee-bearing pool transaction.Required: a chosen amount or 0.01-token postage and the memo settle atomically.

Attaching money is a transaction either way. "Gas-free" describes sending an ordinary chat message. A payment sent from inside a room is an ordinary pool transaction with an ordinary fee — the message rides the relay, the money does not.

The honest parts

The auditor is inside the trust boundary. Room keys derive from the same viewing keys that are escrowed to the auditor at registration, so the auditor can derive the room secret and read the messages.

It is not on-chain, decentralized, or persistent either. Those words get used loosely about messaging and none of them is true here. One process holds the backlog, in memory, and if it restarts the backlog is gone.

One socket, disclosed. Every conversation rides a single multiplexed connection. That means a multiplexed subscribe tells the relayer that those rooms share one participant. The app's own copy says so rather than implying otherwise — the alternative, a socket per room, has its own timing tells and costs more.

The relayer holds a short backlog. Ciphertext only, in memory, bounded, dropped after a quiet period. It holds no key of yours.

The exact bounds are 50 envelopes per room and 30 idle minutes. They help a reconnect; they are not a mailbox and cannot fill a gap after the browser has been closed longer than that.

The name directory

Claiming a name publishes name → address on-chain. That is its entire function — a directory nobody can read is not a directory — and it is opt-in.

Search, however, is private. The client fetches the whole list and matches locally, so the relayer never learns who you looked for. That asymmetry is deliberate: publishing your own name is your choice, and looking someone up should not be a disclosure.

On this page