WWebBuddyMarketplace
Install and run

First admin and the admin panel

How the first platform admin is created (there are no default credentials), the super and support roles, and what each admin screen does.

3 min readUpdated Oct 17, 2026Applies to Reception AI 1.0.0

On this page

Reception AI ships with no default credentials and no setup wizard. Nobody can sign in until someone signs up, and nobody is an administrator until you say so in the environment and they prove they own that address.

Creating the first admin

1. Name the address

Set ADMIN_EMAILS in the environment and restart. It accepts several addresses separated by commas or spaces:

.env
ADMIN_EMAILS=you@example.com, partner@example.com

2. Sign up with that address

Sign up at /login with the address, before you share the site's URL with anyone else.

3. Verify the address

Sign-ups are open and a password proves nothing about who typed the address, so a listed address only becomes an admin once it is verified. Either:

  • Sign in with Google using that address (if Google sign-in is configured), or
  • Open the confirmation link. It is sent when the account signs up and again whenever the unverified account visits /admin (at most once every five minutes). The link works for one hour.

With SMTP configured, the link is emailed. Without SMTP, or if sending fails, it is printed in the server log:

Text
[admin] you@example.com is listed in ADMIN_EMAILS but has not verified that address, so it was not made an administrator.
[admin] (Email is not configured (SMTP_HOST is not set).)
[admin] To confirm it, open this link in the browser where you are signed in:
[admin]   <the confirmation link>

Open it in the browser where you are signed in, then visit /admin. You are promoted to super-admin on that visit, and the promotion is written to the audit log.

Tip

Where to find the log: your terminal for npm run dev, docker logs <container> for Docker, or your platform's log viewer (railway logs on Railway).

Note

The link is signed with BETTER_AUTH_SECRET. If that variable is not set, a restart invalidates any link already issued; request a new one by visiting /admin again.

Or: promote an account from the command line

Against a real database you can skip email entirely. The account must already exist (sign up first):

Terminal
npm run admin:grant -- you@example.com           # super-admin (default)
npm run admin:grant -- helper@example.com support

It needs DATABASE_URL (read from .env if present) and records the grant in the audit log with the actor cli. Inside a container, run it with the same environment as the app, for example docker exec reception-ai npm run admin:grant -- you@example.com.

Roles

Super-admin Support
Overview, Accounts, Plans, Service health Read and change Read only
Audit log and CSV export Yes Yes
Finance Yes No
Configuration Yes No (masked values still reveal a few characters)
Change a workspace's plan, edit plans, grant or revoke admins Yes No

Every admin sees every tab in the navigation; a support user who opens Finance or Configuration gets an error rather than a hidden tab. The last remaining super-admin cannot be revoked.

The admin screens

Screen Path What it is for
Overview /admin Platform totals and a list of missing essentials (OPENAI_API_KEY, APP_URL, DATABASE_URL, CREDENTIAL_ENCRYPTION_KEY).
Accounts /admin/tenants Search workspaces and change a workspace's plan.
Finance /admin/finance Provider cost rates, recorded costs, fixed costs and revenue you record, with margins. Super-admin only.
Plans /admin/plans Create and edit plans, their allowances and their Stripe price IDs. See Selling it as SaaS.
Service health /admin/health Recent success and failure of calls to each provider (OpenAI, xAI, carriers, Stripe, SMTP and others), with their latest error messages.
Configuration /admin/settings Every admin setting. See Configuration.
Audit /admin/audit Every admin action, CSV export, and granting or revoking admins.

Not in this version

  • No suspend, delete or impersonate for customer accounts. Accounts supports changing the plan only.
  • No password reset by email. Signed-in users can change their password under Settings. An administrator cannot reset someone else's password from the panel.
  • No team members or invitations. A workspace belongs to one user account.
  • No outgoing email other than the admin confirmation link.

How customers get in

  • Email and password sign-up is open by default. Turn FEATURE_SIGNUPS off to close it; existing users can still sign in.
  • Google sign-in appears when VITE_GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are both set. A Google sign-in links to an existing account with the same email.
  • New workspaces start on the Studio plan.
  • Customers can export their data and delete their workspace under Settings. Deleting a workspace does not cancel a Stripe subscription, so cancel it in Stripe first.