# The elvix Account (end-user self-serve)

> What a signed-in user can do on their elvix account: edit profile, manage sign-in methods and passkeys, see and revoke sessions, export their data, and deactivate or leave an app. Each surface maps to a drop-in <Elvix*> SDK component you can embed in your own app.

Every elvix user gets a hosted account surface at `https://elvix.is/account`. Every part of it is also a drop-in SDK component, so you can embed the same self-serve flows inside your own app. Account data is shared across every app the user signs into; per-app data (username, app passkeys, membership) is scoped to one app.

## Profile

- **Identity** (`ElvixIdentityForm`): name, pronouns, birthdate, gender.
- **Region** (`ElvixRegion`): country, timezone, currency, first day of week.
- **Languages** (`ElvixLanguages`): preferred languages.
- **Addresses** (`ElvixAddressBook`): shipping + billing, with autocomplete and a default.
- **Legal entities** (`ElvixLegalEntities`): company name, tax country, VAT id (for B2B billing / KYC).
- **Photos** (`ElvixAvatar`, `ElvixBanner`): avatar + cover image, R2-backed.

## Security (sign-in methods)

- Primary email (OTP): always on, can't be removed. Secondary actions are OTP-gated.
- Additional emails: add, verify, archive, promote to primary.
- Google: connect / disconnect.
- Passkeys: add, rename, remove (account-level here; per-app passkeys via `ElvixAppPasskeys`).

## Sessions, apps, data

- **Sessions** (`ElvixSessions`): see every device the user is signed in on; revoke one or all (sign-out-everywhere is OTP-gated).
- **Connected devices** (`/account/devices`): the CLIs and headless tools the user authorized via device-login (e.g. `plm login`). Each holds an `eak_` Personal Access Token with `source=device` bound to this user; revoke any of them here.
- **Apps**: the roll-call of apps the user belongs to; per app they can manage their username, app passkeys, **deactivate** (`ElvixDeactivate`, reversible 90-day grace) or **leave** (`ElvixLeave`, soft-delete with grace).
- **Data export** (`ElvixExport`): GDPR Article 15 export, OTP-gated, delivered as a zip, identity-level or per-app.
- **Lifecycle** (`ElvixLifecycleWatcher`): if an app owner bans / pauses / deletes the user, the watcher evicts the open session in real time.

> **Note:** To embed any of these in your own app, mount the matching `<Elvix*>` component inside `<ElvixProvider>`. See the Components guide, or ask the MCP `get_component` with the slug. Account components need a signed-in user; gate them behind your auth.
