Skip to main content

Documentation Index

Fetch the complete documentation index at: https://ekso.dev/llms.txt

Use this file to discover all available pages before exploring further.

The /startup wizard runs the first time a fresh Ekso install boots. It collects everything Ekso needs to bootstrap the first tenant and the admin user, writes the install configuration to the database, and then closes itself permanently. Hit it from your browser; agents drive the same endpoints over JSON (agent onboarding).

When the wizard runs

After docker compose up -d and the API has finished applying the database schema, navigate to:
<your-install-url>/startup
For local Quickstart that’s http://localhost:6050/startup. For a customer install behind a reverse proxy it’s the proxy’s URL plus /startup. If you see a 410 Gone or get redirected straight into the application, the wizard has already been completed — Ekso’s bootstrapped and the wizard has closed itself. Sign in with the admin credentials you set during the wizard instead.

What the wizard asks

The wizard is a single page with five sections:
FieldWhat to enterRequired
Your nameThe first user (you). Becomes the admin user.Yes
Your emailAdmin user’s email. Used for sign-in, password recovery, and outbound email’s Reply-To.Yes
PasswordAdmin user’s password. Subject to the default password policy (8+ chars, mixed case, digit).Yes
OrganizationTenant display name — typically your company name. Shown in the UI header and outbound email.Yes
Public URLThe hostname users will reach Ekso at — e.g. https://ekso.acme.com. Used as the OAuth audience and in outbound email links.Yes
License activationThe JWT from your welcome email at ekso.app/get-started. Empty leaves the install in Free-tier defaults until pasted later via Settings → Account.No
AI providerOpenAI, Anthropic, or none. Empty disables AI features entirely until configured in Settings → AI.No
AI model + keyRequired only if you picked a provider. Suggested defaults: gpt-5.5 (OpenAI) or claude-sonnet-4-6 (Anthropic).Conditional
The Public URL doesn’t have to resolve from outside yet — Ekso just records it as the canonical install identity. You can start with http://localhost:6050 for evaluation and update the install later by editing the tenant’s record.

What happens on submit

When you submit the form, Ekso atomically:
  1. Creates the first tenant with the organization name you entered.
  2. Creates the first user (admin role) with the email and password.
  3. Stores the public URL on the tenant record.
  4. Saves the license activation JWT if you provided one — verified later by LicenseProvider.
  5. Writes a ConfigAI row if you picked a provider, so the next request sees AI enabled.
  6. Enqueues a background sample-data onboarding job so the tenant comes up with example items, fields, and processes — gives you something to click through immediately.
  7. Marks the install as configured. The /startup endpoint flips to 410 Gone for every subsequent caller — there’s no way back through the wizard.
You’re then redirected to the sign-in page. Use the email and password you just entered.

After the wizard

You land on the dashboard. From here:

Re-running the wizard

You can’t. By design — the wizard exists to bootstrap a fresh install. The 410 Gone middleware refuses every subsequent call, so nobody (operator or agent) can reset the install through this surface. To start over, drop the database (or point Ekso at a new empty one), restart, and the wizard reappears.
Dropping the database wipes every tenant, user, item, and attachment on this install. There’s no undo — back up first if anything matters.

Driving the wizard from an agent

The /startup endpoints are JSON-friendly and anonymous (no auth header). An AI agent acting on behalf of an operator can drive them programmatically — same fields, same outcome, same one-shot semantics. See agent onboarding for the request shapes, validation rules, and example flows.