Web UI

A local, browser-based dashboard for the same workspaces, sessions, and batches the CLI manages: a guided batch wizard to start a run, and live cards to watch it finish.

Overview

3xcode ui starts a local web server and opens it in your default browser. It is a visual alternative to the CLI and interactive shell for the same underlying operations: creating a batch, running a single or bulk conversion, tracking progress, and browsing output. It reads and writes the same workspace and session data the CLI uses, so a batch started in one shows up correctly in the other.

It is not a hosted product. Beyond the same authenticated calls the CLI already makes (login, license and quota checks, conversion), it doesn't sync anything to the cloud on its own: your source SQL, generated PySpark, and session history stay on your machine, and, exactly like the CLI, conversion itself calls your configured AI provider directly rather than routing through 3XDE's servers.

Launching the UI

Terminal
# Launch on the default port (3210)
3xcode ui

# Launch on a custom port
3xcode ui --port 8080
FlagDefaultPurpose
--port3210Port the local web server listens on

The command starts a local server and, after a short delay, opens http://localhost:3210 (or your chosen port) in your default browser. Leave the terminal running: closing it stops the server.

The Batch Creation Wizard

Starting a batch from the browser walks you through three steps, the same batch lifecycle as the CLI's batch create / seal / run, without needing to remember the commands.

1

Upload Files

Drop in the .sql files for this batch, or point at files already in your workspace.

2

Configure

Set a worker ceiling and an optional model override before running.

3

Convert

Seals the batch and runs it, with live progress from the moment it starts.

Upload Files

Add one file for a quick single-file conversion, or many for a batch. This is the browser equivalent of batch create --dir.

Configure

The worker field sets a ceiling adaptive tuning is allowed to grow to, not a fixed count, same as -w on the CLI. Leave it at auto unless you have a reason to cap it.

Batch Cards & Live Dashboard

The Sessions page lists every batch as a card, collapsed by default: done/total file counts, a failed count, and a confidence-distribution bar so you can see the shape of a batch's quality without opening it. Expand a card for the full per-file table.

Confidence-distribution bar

Each batch card shows a bar segmented by confidence band (Low / Medium / High / Perfect), the same bands used in the CLI's BATCH_SUMMARY.md report, updating live as files complete.

Filter chips

Narrow the list by batch state (running, completed, failed, ...) or by confidence band, using chip toggles above the card list. Clear a chip to widen the view again.

Progress updates live while a batch runs, no manual refreshing needed, with a polling fallback if the live connection ever drops.

Session & batch actions

ActionWhat it doesCLI equivalent
CreateStart a new session, or a new batch inside onesession create / batch create
ResumeContinue an interrupted or partially-completed batchbatch resume
Pause / CancelPause a running batch, or cancel it cleanlybatch pause / batch cancel
Per-file detailDrill into a batch card to see individual file status, cost, duration, and errorssession info

The Rest of the Sidebar

Dashboard

Landing page after login: account and plan status, a usage ring chart (confidence, success rate, cost this month), and your active provider (BYOK vs platform key).

Files

Browse and download converted output for any completed batch, and browse the source files already in your active workspace.

Workspaces

Set up, switch, initialize, or delete local workspaces, with a native directory browser for picking a folder.

Settings

App configuration, BYOK provider key entry and testing, and provider auto-detection.

Help

In-app reference for getting unstuck without leaving the browser.

Cross-cutting elements

Your account profile and plan usage, a theme toggle (light/dark/auto), and a responsive sidebar all appear throughout rather than as their own page.

Local-Only by Design

127.0.0.1 Only

The server binds to your local machine. It is not exposed to your network or the internet.

Single-User

Built for one developer working locally. There is no multi-user login screen or shared team session.

Data flow matches the CLI

Source SQL is read from and written to your workspace directory. Conversion sends it directly to your configured AI provider, the same as the CLI, never to 3XDE's servers.

Login & Session Cookie

The UI does not have its own login form. It relies on the same credentials as the CLI: if you're not logged in, the UI shows an auth gate banner: "Not logged in. Run 3xcode login in your terminal to get started." This stays until you authenticate from a terminal.

Each time you run 3xcode ui, a fresh session cookie is minted for that launch. If you restart the server while a browser tab from a previous launch is still open, that tab can get stuck failing every request with a 403 because it's serving a cached page tied to the old cookie. Hard-refresh or reopen the tab after restarting 3xcode ui to pick up the new session.

Troubleshooting

UI shows "Not logged in" even though I'm logged in

Run `3xcode login` in a terminal (the UI shares CLI credentials, it has no login form of its own). If you were already logged in before restarting `3xcode ui`, hard-refresh the browser tab: a tab left open across a server restart can be stuck on a stale session cookie and 403 on every API call.

API calls fail with 403 after restarting the UI

A new session cookie is minted every time `3xcode ui` starts. Close and reopen the browser tab (or hard-refresh) so it picks up the fresh cookie instead of the one from the previous launch.

"No workspace found"

Initialize one with `3xcode workspace init <path> --name <name>`, or use the directory browser on the Workspaces page to switch to an existing workspace.

A batch card is stuck with no progress

Check whether a worker is actually still running: open the batch card for its current phase and heartbeat. If it looks idle, resume it from the card's actions or with `3xcode batch resume <session_id> <batch_id>` in a terminal.

Conversion fails with a prompt/knowledge-base error

Conversion prompts and the knowledge base are served from the 3XDE backend at run time (never shipped locally), so this fails when you're not logged in or the backend is unreachable. Run `3xcode login` and confirm your connection, then retry.