| Sign in | MetaMask / Coinbase / Rabby / any injected wallet → SIWE challenge → lx_session cookie. |
| Workspaces | Pick an existing workspace or stand up a new one (signed challenge, picks CONSUMER / SUPPLIER roles). |
/overview | Workspace dashboard. Wallet panel first; API keys below. |
/sessions | Request/Operate segmented toggle. Request opens a ”+ New session” modal and filters the list to consumer-side rows. Operate shows an operator status card (availability + coverage + device) with an Edit-in-modal button and filters the list to operator-side rows. |
/sessions/[sid] | Same toggle. Request renders the embedded WHEP viewer when LIVE. Operate renders the WHIP publisher in-page — no more standalone publish route. The publisher unmounts the moment the session transitions to ENDED / EXPIRED / CANCELLED. |
/settings | Workspace details. Identity card with an Edit button → modal that renames the workspace (only name is mutable in v1; slug + roles + wallet are locked). Supplier-only Operator config card with its own Edit modal (same form as the Operate tab). |
| API keys | Mint (plaintext shown once with a copy + confirm gate), list, revoke. Scopes presented as a checkbox grid. |
| Wallet | viem-reads ETH balance, USDC balance, and LuxxonSettlement.deposits(wallet) (your pool balance). Top up is two discrete steps — Approve USDC (one popup, only on first top-up), then Deposit (one popup per top-up). Withdraw pulls the balance back at any time — even while the contract is paused. |