WebUI Connection Info
Dev Server Address
The WebUI dev server runs under Portless on a *.localhost:1355 URL.
scripts/dev.mjs picks the subdomain from the current git branch:
- Branch contains an
FR-XXXXtoken →http://fr-XXXX.localhost:1355(e.g.04-24-feat_fr-2701_...→fr-2701.localhost). - Otherwise →
<branch>.<project>.localhost:1355(Portless's defaultrunform).
Never assume port 1355: when another Portless daemon is already bound there (another Claude session / worktree), the server lands on 1356, 1357, … — always confirm the real port from one of the sources below.
To find the actual URL for a running instance, check these sources in order:
- The boot records —
~/.local/state/fw/dev-servers/*.json, one per Portless app, written by thedev-serverskill. Each carriesurl(the gateway URL a teammate can open),localUrl,branch,pid,startedAt/stoppedAtand the PRs it serves. A record withstoppedAtset is a server that is gone. This is the only source that says which branch and PRs a server is for, so start here. portless list— live routes on this box.- The
pnpm run devterminal output — Portless prints the full URL on startup.
If no dev server is running, tell the user to start it with pnpm run dev (requires Portless: npm install -g portless).
API Endpoint & Credentials
Read e2e/envs/.env.playwright to get the current server endpoint and login credentials.
Key variables:
E2E_WEBSERVER_ENDPOINT— Backend.AI API server URLE2E_ADMIN_EMAIL/E2E_ADMIN_PASSWORD— admin accountE2E_USER_EMAIL/E2E_USER_PASSWORD— regular user account- Additional:
E2E_USER2_*,E2E_MONITOR_*,E2E_DOMAIN_ADMIN_*
Always read the file fresh — credentials and endpoints change. Do not hardcode or cache them.
Login Flow
The WebUI login page requires:
- Email/Username
- Password
- Endpoint (may be hidden under "Advanced" toggle)
The app uses config.toml with connectionMode = "SESSION". If apiEndpoint is empty, the user must enter the endpoint manually on the login page.
Gotchas
- The
.env.playwrightfile may have multiple endpoints commented out (e.g., LTS vs main). Use the uncommentedE2E_WEBSERVER_ENDPOINT. - Passwords may contain special characters — handle quoting carefully.
- The webpack-dev-server overlay can intercept clicks. Remove it via:
document.getElementById('webpack-dev-server-client-overlay')?.remove() - If the "Endpoint" input field is not visible on the login page, click "Advanced" to expand it.