SDODS
Getting started

The web UI

What the SDODS web application offers and how it relates to the CLI.

What you'll learn

What each page of the web application does, which role can do what, and why the UI never does anything the CLI cannot.

Start it

The command depends on how SDODS got onto the machine, not on your operating system — the CLI is identical on macOS, Linux and Windows.

sdods users create --admin --username admin --password '<at least 8 chars>'
sdods serve --open

The UI is at http://127.0.0.1:4444. --open launches your browser. On Windows the same commands work in PowerShell and in cmd; inside WSL, use the Linux form rather than the PowerShell one.

The first user

On a database with no users, serve prints a one-time setup URL:

ℹ First run: create the admin at http://127.0.0.1:4444/setup?token=<token> (or: sdods users create --admin --username <name> --password <pw>)

Open it and fill the form, or use sdods users create — whichever suits. The browser path is the one to hand someone who should never touch a terminal. If you lose the token, restart serve to print a new one, or paste it into the field on /setup.

--admin makes a platform admin and owner of every organization without one. Add more people with --role viewer|editor|admin, and scope them with sdods users grant <username> --workspace <slug> --role editor.

Run users create and serve from the same workspace root. The platform database is <workspace>/.sdods/sdods.db, and each command walks up from the current directory to find the workspace. Run them in different places and you create the admin in one database while the server reads another — the sign-in then fails with entirely correct credentials. SQLITE_PATH pins both to one file if you want to be certain.

Signing out clears the session on the server and every cached query in the browser, so nothing from one session is readable in the next on a shared machine. If a session ends while the app is open — it expires, an admin runs sdods users deactivate, or a token is revoked — the next request returns you to the sign-in form rather than leaving a half-loaded page behind.

If it does not start

SymptomCauseFix
Port 4444 is already in useanother serve, or the desktop appsdods serve --port 4445
A page saying the web UI is unavailablea clone with no built bundlebun run web:build, then restart
Sign-in fails with the right passwordtwo different .sdods/sdods.db filesrun both commands from one workspace root
An unexplained TypeError from a dependencyNode older than 22node -v, then nvm use 22 or fnm use 22
sdods: command not found after installinga version manager owns Node, and the global install belongs to a different versionre-install, or use the installer's bun path
Forgot the admin passwordno other admin can reset it from the Users pagesdods users set-password <username> --password '<new>'
/setup says the setup token is invalidthe token is minted when serve starts, and users were removed after thatrestart serve and use the new link

sdods doctor reports Node, bun, browsers, projects, environment variables and the database in one pass.

The server is a Fastify application. It spawns the same sdods commands you run by hand and streams their logs over Server-Sent Events, so a run started from a browser looks exactly like one started from a terminal.

Dashboard: pass-rate and duration trends, suite health per process, flaky scenarios, latest runs
Dashboard
Workspaces of the organization with each member's effective role
Organization → workspaces with roles. Owners and admins create workspaces and manage members.

Reinstall or reset

Three levels, from the lightest to a clean machine. Stop sdods serve first, and run every command from the workspace root — the same rule as creating the first user.

LevelKeepsRemovesCommand
Users resetprojects, runs, schedules, organizationsevery user, session, API token and membershipsdods users reset --yes
Factory resetyour project files (features, steps, envs)the whole platform database: users, runs, schedules, historysdods db reset --yes, or delete .sdods/
Reinstallyour workspacesthe sdods command itselfuninstall, then install

After a users reset or a factory reset, start serve again: with no users it prints a new one-time /setup link, exactly as on the first run. To keep a copy of the database before a factory reset, run sdods db export ./sdods-backup first; sdods db import ./sdods-backup brings it back.

Reset the users only:

sdods users reset --yes

Or reset everything the web UI stores:

sdods db reset --yes

db reset drops the database tables; run artifacts under .sdods/runs/ stay on disk. For a truly empty start, delete the whole state folder instead — it holds the database (sdods.db with its -wal and -shm files), runs, leases and agent jobs, and is recreated on the next start:

rm -rf .sdods

Then start again and open the printed /setup link:

sdods serve --open

To reinstall the CLI itself, uninstall and install again. Your workspaces are not touched.

curl -fsSL https://sdods.com/install.sh | sh -s -- --uninstall --yes
curl -fsSL https://sdods.com/install.sh | sh

On Windows, in PowerShell:

& ([scriptblock]::Create((irm https://sdods.com/install.ps1))) -Uninstall -Yes
irm https://sdods.com/install.ps1 | iex

sdods db reset works on SQLite only. On Postgres (DB_DRIVER=postgres), drop and recreate the database yourself; sdods users reset works on both.

To regain access without resetting anyone else, set a new password instead. It signs that user out everywhere, and --activate re-enables an account that was deactivated:

sdods users set-password admin --password '<at least 8 chars>' --activate

Pages

PageWhat it does
Dashboardpass-rate, duration and flaky trends; most-failing locators; latest runs; proposals inbox
Projectsthe project YAML as a form: layers, browsers, tag policy, screenshot policy, integrations, MCP servers
Environmentsbase URLs and non-secret settings; secret names shown with a presence indicator
Datasetsupload CSV, JSON or YAML, preview the first rows, choose file or database storage
Runsfilterable list, live log, scenario tree, step timeline with before/after comparison and API panels
Feature editorGherkin editing with step completion from your project, lint diagnostics, run this scenario
Recorderrecord a session as a pool user, save the spec, convert it with an agent
Agentsstart a role, watch it work, review the diff, accept or reject
IntegrationsGitHub and Jira settings, connection tests, MCP servers the project consumes
Schedulescron builder with the next fire times, history, pause and resume
Userscreate accounts, set platform roles and display names, deactivate
Settingsyour profile, password and sessions, preferences, free scoped API tokens, MCP client install snippets
Run detail: scenario tree grouped by module with badges and live log
Run detail
Feature editor with Gherkin highlighting, step completions and diagnostics
Feature editor
Schedules page with cron builder and next fire times
Schedules

Your account

The avatar at the foot of the sidebar opens the account menu: your profile, password and sessions, preferences, API tokens and MCP clients, the admin pages when you are an admin, the theme (system, light or dark) and Sign out.

Account menu open above the avatar: profile, password and sessions, preferences, API tokens, MCP clients, admin pages, theme submenu and sign out
The account menu
Settings tabWhat you can change
Profiledisplay name and email; shows your username, platform role, memberships, last sign-in and when you joined
Password & sessionschange your password (needs the current one); list signed-in browsers and sign out one of them or all others
Preferencestheme, and the organization, workspace and project the app opens on (saved in this browser)
API tokenscreate, copy once and revoke scoped tokens
MCP clientsthe endpoint, its tools and install snippets for each client
Settings, Profile tab: display name, email and username, with platform role, last sign-in and memberships
Settings → Profile
Settings, Password and sessions tab: change password form and the list of active sessions with this browser marked
Settings → Password & sessions

Changing your password signs you out of every other browser; the one you are using stays signed in. These settings need a browser session: an API token cannot change a password or end sessions. With authentication turned off there is no account to edit, so the Profile and Password & sessions tabs are unavailable.

A platform role is changed by an admin on the Users page or with the CLI:

sdods users set-role <username> editor

Roles

RoleCan
viewerread everything, download artifacts
editorstart and stop runs, edit features and datasets, run agents, accept proposals
adminmanage users, integrations, projects, tokens

Roles are per workspace: a user's effective role is the stronger of the explicit workspace membership and the one implied by the organization membership (member → viewer, admin and owner → admin). Platform admins are admin everywhere.

Next steps

Using an AI coding agent? Install SDODS:

Install the SDODS plugin in Claude Code: skills, subagents, commands and the MCP server.

  1. /plugin marketplace add YarlisAISolutions/sdods-skills
  2. /plugin install sdods@sdods
Learn more about using SDODS with AI tools

On this page