TheDocumentation Index
Fetch the complete documentation index at: https://ekso.dev/llms.txt
Use this file to discover all available pages before exploring further.
/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
Afterdocker compose up -d and the API has finished applying the database schema, navigate to:
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:| Field | What to enter | Required |
|---|---|---|
| Your name | The first user (you). Becomes the admin user. | Yes |
| Your email | Admin user’s email. Used for sign-in, password recovery, and outbound email’s Reply-To. | Yes |
| Password | Admin user’s password. Subject to the default password policy (8+ chars, mixed case, digit). | Yes |
| Organization | Tenant display name — typically your company name. Shown in the UI header and outbound email. | Yes |
| Public URL | The hostname users will reach Ekso at — e.g. https://ekso.acme.com. Used as the OAuth audience and in outbound email links. | Yes |
| License activation | The 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 provider | OpenAI, Anthropic, or none. Empty disables AI features entirely until configured in Settings → AI. | No |
| AI model + key | Required 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:- Creates the first tenant with the organization name you entered.
- Creates the first user (admin role) with the email and password.
- Stores the public URL on the tenant record.
- Saves the license activation JWT if you provided one — verified later by
LicenseProvider. - Writes a
ConfigAIrow if you picked a provider, so the next request sees AI enabled. - 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.
- Marks the install as configured. The
/startupendpoint flips to 410 Gone for every subsequent caller — there’s no way back through the wizard.
After the wizard
You land on the dashboard. From here:- Configure authentication — turn on Microsoft Entra SSO or harden the password policy under Settings → Authentication.
- Verify AI — if you skipped the AI step, configure providers under Settings → AI.
- Set up the mailbox — if you’re running ticketing, connect IMAP or Microsoft 365 under Settings → Mailbox.
- Invite users — add team members under Settings → User.
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.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.