Every Matrix identity is a Matrix User ID (MXID) of the form:
@localpart:server-name
For example:
@alice:your-name.hagency.cloud
@ is the sigil that marks this as a user. Other sigils are ! for rooms, # for room aliases and $ for events (more below).[a-z0-9._=-] plus / in historical accounts, with length up to 255 chars. Case is usually preserved but compared case-insensitively.The MXID is permanent. Your display name (a human-friendly label like "Alice Chen") and avatar can change at any time; the MXID cannot. This is important when people verify each other's identities — you verify an MXID, not a display name, because display names are easy to spoof.
Matrix uses four prefix characters to mark what kind of thing an identifier refers to:
| Sigil | Meaning | Example |
|---|---|---|
@ | User (account) | @alice:your-name.hagency.cloud |
! | Room (internal ID) | !AbCdEfGhIjKlMn:server |
# | Room alias (friendly name) | #general:your-name.hagency.cloud |
$ | Event (message, reaction, etc.) | $event_hash:server |
Internal room IDs (!…) are opaque and unique forever. A room alias (#general:server) is a human-friendly pointer at a room ID; the same room can have many aliases and they can be changed by room admins.
You can also bind "external" identifiers to your Matrix account: email addresses, phone numbers, and (historically) Microsoft/Google accounts. These 3PIDs let someone find you by email or phone even if they don't know your MXID. Binding is stored in an identity server (Hagency runs its own) and is revocable at any time.
bob@example.com to a room.3PID lookup is opt-in: you have to explicitly bind the 3PID to make yourself discoverable. Many Matrix users operate anonymously behind just a localpart and never touch 3PIDs.
Identity servers are a classic privacy trade-off. You gain discoverability but you also publish "this 3PID belongs to a Matrix user" to anyone who looks. Hagency's per-workspace identity server is scoped to your workspace — external servers can't enumerate it. If you don't care about 3PID discovery, don't bind anything.
When you sign in from a new client — laptop, phone, tablet, server-side bot — the homeserver gives that session a device ID (e.g. WOXXHRVJKP). One MXID can have many device IDs simultaneously, one per place you're signed in.
Devices are the unit of E2EE trust: when someone verifies "Alice", what they're really verifying is Alice's cross-signing key, which in turn vouches for all of Alice's devices. New devices get added to the list and need to be re-verified (or they piggyback on cross-signing, which we cover in the encryption section).
Your Hagency Cloud platform account and your Hagency Server account are separate. After creating the server, open its account center at /auth/ and register the first administrator. That account has its own credentials and Matrix ID on the server.
Set a custom Matrix ID domain before creating server users. To manage users and rooms from Hagency Cloud, authorize platform management in the server settings. Additional server users can be created through the management tools or self-registration when enabled.