Solana.Mail
WALLET-NATIVEMAILPLATFORM

Mail betweenWallets, notinboxes.

Send messages between Solana wallets. Sign in with a signature — no email, no password, no recovery codes. Built for the open network.

Free

Zero on-chain fees

Signed

ed25519 wallet auth

Direct

Wallet → wallet

SOL

BUILT FOR THE OPEN NETWORK

PhantomSolflareBackpackGlow+and more
[01]

Signature

Auth

[02]

0.000 SOL

Cost

[03]

< 100 ms

Latency

[04]

Zero

Tracking

[01] LIVE DEMO

Seethewire.

A simulated stream of what flows through a wallet-native mail node. Same shape as production.

scroll
network · mail.flight live
9xQe…WkT4SENDERJ385…5ZCuRECIPIENT
sig:ed25519 ok
ack received
throughput · ~38 msg/sp99 · 86ms
~/log/solana-mailtail -f
[00:00:00] node.boot ok
[00:00:01] db.open mail.sqlite wal
[00:00:02] router.ready /api/* · 8
[00:00:04] auth.verify 9xQe…WkT4 · ok
[00:00:05] mail.send → 6tWf…Lkr1 84B
$

[02] FEATURES

Whatyougetondayone.

A small, sharply-scoped feature set — every one live in this demo build.

scroll
stable

Signature sign-in

One offline signMessage proves wallet ownership. No password anywhere to leak.

Learn more
stable

Mail by pubkey

Send to any base58 wallet address. The recipient doesn't need to be pre-registered.

Learn more
stable

Wallet-native ID

Your Solana pubkey is the address. No emails, no usernames, no central registry.

Learn more
stable

Auditable handshake

ed25519 signature verified with tweetnacl, sealed in an HMAC cookie.

Learn more
stable

Zero trackers

No Google login, no Apple ID, no captcha, no analytics scripts.

Learn more
stable

No on-chain fees

Wallet auth is a signature, not a tx. Nothing is broadcast to validators.

Learn more

[03] HOW IT WORKS

Threesteps.Tenseconds.

From cold open to first sent message.

scroll
01

Connect wallet

Phantom, Solflare, Backpack — anything that speaks the Wallet Standard.

step 01 of 03
02

Sign one message

Your wallet signs a short prompt. We verify it server-side and issue a session.

step 02 of 03
03

Send to any wallet

Paste a wallet address, write your message, hit send. They see it next sign-in.

step 03 of 03

[04] UNDER THE HOOD

Plaincode,nomagic.

Wallet sign-in fits in fifteen lines. Verified server-side with tweetnacl.

scroll
src/components/ProfileGate.tsxTypeScript
01mu// 1) ask wallet to sign a fresh timestamped prompt
02const timestamp = Math.floor(Date.now() / 1000);
03const message = `solana-mail :: login :: ${timestamp}`;
04const sig = await wallet.signMessage(new TextEncoder().encode(message));
05
06mu// 2) send signature + wallet to /api/auth/login
07await apiLogin({
08 wallet: wallet.publicKey.toBase58(),
09 signatureBase58: bs58.encode(sig),
10 timestamp,
11});
12
13mu// server: tweetnacl.sign.detached.verify → 24h HMAC cookie
ed25519

Solana wallets natively produce ed25519 sigs. We verify same curve server-side.

HMAC session

Cookie is a small base64 blob signed with a server HMAC key. No DB lookup per request.

No tokens

No JWTs, no OAuth, no refresh dance. Verified in O(1).

[05] PREVIEW

Alookinside.

The actual UI post sign-in.

scroll
~/inbox · 5 messages
  • J3

    gm — wagmi?

    2m

    J385…5ZCu · Just looped you into the contract review…

  • 6T

    protocol upgrade — review

    14m

    6tWf…Lkr1 · Pushed the new audit doc. Diff is small but…

  • 9X

    re: airdrop coordinates

    3h

    9xQe…WkT4 · Forwarded the snapshot list, lmk if you need…

  • A1

    thanks for the link

    1d

    A1bC…q8Pz · That repo saved my weekend, owe you a coffee

  • DE

    re: re: gm

    2d

    dEf2…7nMa · gm

↑↓ nav · ↵ open · d del2 unread

Anatomy of a mail

  • Fromsender wallet pubkey
  • Torecipient wallet pubkey
  • Subject≤ 200 chars
  • Body≤ 10 KB plaintext
  • Timestampserver millis

Honesty disclaimer

Demo build — messages stored plaintext in SQLite. For a real product, layer E2E encryption on top of the same API.

[06] FEEDBACK

Whatdevsaresaying.

Replies in inbox, paraphrased. Pubkeys are real.

scroll

Finally a messaging app where my username can't be squatted. The pubkey IS the username — no platform politics.

anon dev · 9xQe…WkT4

Sign-in literally took one click. No email confirmation, no recovery setup. I forgot how good Web3 auth feels.

anon trader · 6tWf…Lkr1

Used this to coordinate with three other contributors across timezones. Sent and received without anyone setting up an inbox.

anon op · J385…5ZCu

[07] FAQ

Straightanswers.

No legalese, no marketing fog.

scroll
Yes. Wallet auth is just a signature — nothing is broadcast to Solana, so no SOL is spent.
In a SQLite database on the server. Wallet is used for identity, not storage. Future work could add per-recipient encryption so the server only holds ciphertext.

[08] READY?

Connect a wallet,
send first mail.

Click the wallet button in the top-right of the page. Whole flow takes under ten seconds.