Setup Wizard
The first time the studio starts it has no licence, no database and no users. The setup wizard
walks you through the five steps that turn a bare process into a working platform, and it drives
them one at a time through POST /api/system/setup.
Open http://localhost:3000 β the studio redirects you into the wizard automatically until setup is complete.
The five steps
- Licence
Enter the licence key that came with your deployment. The key's format is
xxxx-xxxx-xxxx-xxxxβ four groups of four alphanumeric characters. The first group selects the edition; the rest is the key body.The wizard shows you the edition it resolved, the number of agents the edition allows and the feature list, then writes the licence to
.studio-license.jsonin the studio's working directory. - Database
Choose a driver and point it at your database:
- SQLite β the default. Give a file name; the file is created under
DATA_DIR. Best for a single-server deployment. - PostgreSQL β give host, port, database name and username. If the database does not exist, the wizard creates it.
- MySQL β the same fields. If the database does not exist, the wizard creates it.
The wizard tests the connection before accepting it, and writes the result to
.db-config.json. - SQLite β the default. Give a file name; the file is created under
- Initialise
The schema is created from
lib/db/init.<driver>.sqlβ one file per dialect, the same 21 tables in all three. If the tables already exist, this step is skipped and reported as such.For SQLite, an existing file at the chosen path is replaced with a fresh one.
- Admin
Create the first user: name, email, password and a confirmation. The password must be at least 8 characters. This account is created with the
adminrole.On success the wizard writes
.setup-completeand clears.setup-progress.json. - Complete
The wizard closes out setup and hands you to the sign-in page, where the account you just created is waiting.
The licence step in detail
The key's first group is the edition prefix. The edition decides how many agents the platform licences and which features are available:
| Prefix | Edition | Max agents | Features |
|---|---|---|---|
STR0βSTR4 | starter | 3 | core, agents |
PRF0βPRF4 | professional | 10 | core, agents, analytics, api |
PR00βPR04 | pro | 25 | core, agents, analytics, api, advanced |
ENT0βENT4 | enterprise | 999 | core, agents, analytics, api, advanced, enterprise |
Licences issued this way are perpetual β expiresAt is null and nothing in the platform
expires them on a schedule.
The demo licence
One key always verifies and grants the enterprise edition:
ENT0-DKST-UDIO-2026It exists so you can evaluate the platform without a sales conversation. The response marks it with
isDemo: true and reports maxAgents 999.
The demo key has no limits and the wizard stores whatever key you give it. Use the key from your own deployment for anything but evaluation.
The steps over the API
The wizard is a client of POST /api/system/setup. Every step is one request with a step and its
data:
| Step | data | Result |
|---|---|---|
license | {licenseKey} | edition, maxAgents, features, and isDemo for the demo key. |
database | {dbType, host, port, database, username, password} | The connection result and the resolved file path for SQLite. |
initialize | β | The tables created, or skipped when the schema is already there. |
admin | {email, name, password, confirmPassword} | The admin account, created with the admin role. |
complete | β | redirectUrl pointing at the sign-in page. |
The same endpoint serves the rest of the wizard's needs:
GET /api/system/setup?action=statusreportsisComplete,currentStep,startedAtandneedsResume.POST /api/system/setup?action=resetstarts over: it removes the four wizard files and, for SQLite, the database file.
What the wizard writes
| File | Written at | Purpose |
|---|---|---|
.studio-license.json | Licence step | The edition, key, issue date and feature list. |
.db-config.json | Database step | The driver and its connection details, plus initializedAt. |
.setup-progress.json | Each step | Which step was last reached, so setup can resume. |
.setup-complete | Admin step | The marker that makes the studio serve the app instead of the wizard. |
If the process restarts mid-setup, the studio picks up where it left off: the progress file
records the current step, and GET /api/system/setup?action=status reports it. The wizard also
offers a reset, which deletes the four files above and β for SQLite β the database file.
After setup
The studio now serves the application. Sign in with the admin account you created, then create the licences your agents will need:
- Connect Your First Agent β issue a licence and register a bench.
- Agent Management β how licences, revocation and presence work.