DK Studio/Documentation
ProductChangelog

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

  1. 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.json in the studio's working directory.

  2. 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.

  3. 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.

  4. 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 admin role.

    On success the wizard writes .setup-complete and clears .setup-progress.json.

  5. 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:

PrefixEditionMax agentsFeatures
STR0–STR4starter3core, agents
PRF0–PRF4professional10core, agents, analytics, api
PR00–PR04pro25core, agents, analytics, api, advanced
ENT0–ENT4enterprise999core, 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-2026

It exists so you can evaluate the platform without a sales conversation. The response marks it with isDemo: true and reports maxAgents 999.

Keep the demo key out of production

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:

StepdataResult
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=status reports isComplete, currentStep, startedAt and needsResume.
  • POST /api/system/setup?action=reset starts over: it removes the four wizard files and, for SQLite, the database file.

What the wizard writes

FileWritten atPurpose
.studio-license.jsonLicence stepThe edition, key, issue date and feature list.
.db-config.jsonDatabase stepThe driver and its connection details, plus initializedAt.
.setup-progress.jsonEach stepWhich step was last reached, so setup can resume.
.setup-completeAdmin stepThe marker that makes the studio serve the app instead of the wizard.
The wizard can be resumed

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: