> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ns.rocks/llms.txt
> Use this file to discover all available pages before exploring further.

# Account

> Dormant self-serve account surface for profile, quota, keys, export, and deletion.

# Account

The account page is dormant during the current private beta. The shipped e2e
path is beta-key-only: use `/login` with the operator-issued API key from the
Nullspace team. Self-serve accounts, profile editing, key minting, export, and
deletion stay documented here because the plumbing remains in the API and
console for a later launch flip.

When self-serve Auth is enabled, this page uses your Supabase session and never
asks for a runtime API key.

## Profile

The profile panel shows the account email, display name, avatar URL, email
verification state, and current quota tier. Display name and avatar URL are
optional.

## Quotas

The quota panel shows the active tier and recent daily usage. Self-serve
machine create and timeout-extension requests are charged against the owning
team's tier.

When quota is exhausted, the API returns:

```json theme={"theme":{"light":"one-light","dark":"one-dark-pro"}}
{
  "error": "Daily machine create quota exceeded (100/100 for 2026-05-02). See https://docs.nullspace.io/account#quotas.",
  "code": "QUOTA_EXCEEDED",
  "request_id": "req_..."
}
```

Operators can override a user's tier from `/admin`. The override updates both
the user record and the user's personal team.

## Runtime API keys

Runtime API keys authorize SDK, CLI, and raw HTTP API requests. Create keys from
the **API Keys** page after self-serve Auth is re-enabled. During private beta,
operator-issued beta keys are the only active user key path.

Key actions:

* Create: mint a new key and reveal it once.
* Rotate: create a replacement key and schedule the old key to expire after the
  overlap window.
* Revoke: deactivate a key immediately.

## Export

After self-serve Auth is re-enabled, use account export when you need a JSON
snapshot of account metadata, teams, key metadata, quota usage, and machine
metadata. Export does not reveal API key secrets because Nullspace stores only
key hashes after creation.

## Deletion

After self-serve Auth is re-enabled, account deletion is two-stage:

1. A verified user requests deletion from the account page.
2. The account is soft-deleted and scheduled for hard deletion.
3. An operator can hard-delete the account from `/admin` after active resources
   are gone.

Hard delete is blocked while the account still has active machines, runtime
assignments, active shared-volume resources, or active desktop viewer sessions.
Blocked and successful hard-delete attempts are recorded in the operator audit
table.

## Operator access

When the operator console is enabled, the `/admin` console route and
`/v1/admin/*` APIs require a verified Supabase session whose
`public.users.is_operator` flag is true. Operators can search users, inspect
account details, set quota tier overrides, mint beta-compatible operator keys,
and hard-delete soft-deleted accounts.
