Web UI

3xcode ui

A local, browser-based workspace for managing conversions, sessions, and files, launched with a single command.

Overview

3xcode ui starts a local web server and opens it in your default browser. It gives you a visual alternative to the CLI and interactive shell for the same underlying operations: uploading files, running single or bulk conversions, tracking sessions, and browsing output. It's backed by the same workspace and session data the CLI uses.

It is not a hosted product and does not sync anything to the cloud beyond the same authenticated calls the CLI already makes (login, license validation, conversion). Everything else (your source SQL, your generated PySpark, your session history) stays on your machine.

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. Any active backend announcements are printed to the terminal first. Leave the terminal running: closing it stops the server.

Pages & Features

The UI is a single-page app with a sidebar covering every stage of a conversion, from upload to downloadable output.

Dashboard

Landing page after login: account status and any active platform announcements at a glance.

Convert: Single File

Upload one SQL file and run a conversion with live progress, or fire off a quick detached conversion.

Convert: Bulk

Upload and convert multiple SQL files in a single batch, the same engine behind `3xcode pyspark convert --dir`.

Sessions

List, create, resume, pause, cancel, rename, and delete sessions, with per-file status and a live event stream.

Files

Browse and download converted output, and browse the source files 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 appear throughout the UI rather than as their own page: your account profile and plan usage, a theme toggle (light/dark/auto), and a responsive sidebar for smaller windows.

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.

Your Code Stays Local

Source SQL is read from and written to your workspace directory only. Conversion still requires the same login and license check as the CLI.

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.

"Claude Code CLI not found"

The underlying AI engine shells out to the Claude Code CLI binary, which isn't installed or isn't on PATH. Install it with `curl -fsSL https://claude.ai/install.sh | bash`, then restart `3xcode ui`.

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.

A phase times out on a large or complex file

This is usually transient. Retry the conversion. For consistently large files, consider splitting them before converting.

"Claude process failed (exit ...)"

The underlying Claude CLI subprocess exited non-zero; the error includes the actual stderr reason. This is commonly an auth or session issue: try `3xcode login` again.