@buildautomaton/ui

The UI is the app host. The main screen starts as a blank buildautomaton prompt. After that prompt, the same product stays in the sidebar as a widget.

It is a thin Vite host: createUi with a sidebar layout. The main panel is the buildautomaton prompt, then the app that prompt becomes. The widget stays in sidebar. It talks to the runtime over HTTP (local CLI or a cloud host).

ui  (app host)
  ├── ui-runtime           sidebar shell
  ├── app surface          main: the running app
  └── buildautomaton       main prompt, sidebar widget
         ↓
      createUi → Vite app
import { createHostUi } from '@buildautomaton/ui';

const { App } = createHostUi();

createAppUi() is the generic host (prompt until the first /api/app transform). The host UI is the shell: nav, main, and the buildautomaton sidebar. The widget calls /api/work and /api/artifacts on the same server as /mcp.

local-cli app starts both. Dev (default) is Vite HMR at http://127.0.0.1:5173 so UI source changes apply live. Prod (--prod or NODE_ENV=production) serves packages/ui/dist from the runtime HTTP server.

npx @buildautomaton/local-cli app --cwd /path/to/repo
npx @buildautomaton/local-cli app --prod --cwd /path/to/repo