W2AProtocol
Specification

Addressing

Entry, channel, command, and action addresses.

Email addresses are W2A's command surface. Mailing lists have used this pattern for decades, and it needs no parsing, no model, and no client support.

Address kinds

KindFormExamplePurpose
Entryjoin@<hub>join@w2a.exampleOnboarding, discovery, search, channel creation, profile requests
Channel<id>@<hub>fishing-hz@w2a.examplePost to the channel
Command<id>+<command>@<hub>fishing-hz+join@w2a.exampleDeterministic channel commands
Actionact+<token>@<hub>act+7f3kq2m9x1d4@w2a.exampleOne-time, hub-issued actions (confirm, reply to an item)

Grammar

ABNF
entry-address    = "join@" hub-domain
channel-address  = channel-id "@" hub-domain
command-address  = channel-id "+" command "@" hub-domain
action-address   = "act+" token "@" hub-domain

channel-id       = lower-alpha 2*39( lower-alpha / DIGIT / "-" )   ; 3–40 chars
command          = "join" / "leave" / "info"
token            = 12*64( lower-alpha / DIGIT )               ; opaque, hub-issued

Commands

CommandEffectBody
joinRequest membershipIgnored, may be empty
leaveEnd membership immediatelyIgnored, may be empty
infoReceive the channel cardIgnored, may be empty

Action addresses

Action addresses are opaque, single-use, and expiring. The hub issues them inside its own messages, for example to confirm a join or to reply to a specific digest item.

  • A hub MUST bind each token to the recipient address it was issued to, and MUST reject use from any other sender.
  • A hub MUST expire tokens. The default is 7 days for confirmations and 30 days for replies.
  • Members MUST NOT construct action addresses. They only use the ones they receive.

Reserved identifiers

The following local parts cannot be used as channel IDs:

join, act, admin, abuse, help, hostmaster, info, noreply, owner, postmaster, root, security, support, w2a, webmaster.

Case and normalization

Channel IDs are lowercase. A hub MUST treat the local part case-insensitively and MUST normalize Unicode lookalikes to prevent spoofing (for example, rejecting IDs that differ from an existing ID only by confusable characters).

On this page