TUI Reference¶
Starting the TUI¶
The terminal client lives in tui/ (OpenTUI + React, run with bun). It spawns
the Python backend (nova serve) itself, so no separate server step is
needed:
When running directly from a source checkout, ./nova-tui is also available.
Both commands preserve the directory where you launched Nova as the default
workspace for the session. nova tui resolves the OpenTUI client from the
installed Nova checkout, so it can be run from any directory after an
editable install (pip install -e .).
nova tui prefers the bundled client at tui/dist/index.js and falls back to
the TypeScript source at tui/src/index.tsx when the bundle is absent. Build
the bundle from the checkout with:
The build externalizes @opentui/* and react and leaves them in
node_modules, so node_modules and the tui/assets/ tree-sitter grammar
must remain next to dist/. Run nova tui from the same checkout to keep
them in place.
Two reasons for the external list:
@opentui/coredeclares eight platform packages asoptionalDependenciesguarded byos/cpu, so only the current platform's binary is installed. Its runtime deliberately doesawait import("@opentui/core-<platform>")for every platform as string literals; a plainbun buildstatically resolves all of them and fails on the missing ones.reactmust be a singleton.@opentui/reactandreact-reconcilerload React fromnode_modulesat runtime, so inlining a second React copy into the bundle makes hooks fail withresolveDispatcher() is null.
The server port defaults to 8765 and can be set with server.port in ~/.nova/config.json. The TUI reads the same file, so both sides always agree.
In-Chat Commands¶
| Command | Description |
|---|---|
/new |
Start a new session |
/sessions |
Browse and load past sessions |
/clear |
Clear the screen |
/models |
Show available models |
/theme |
View or switch UI theme |
/install-skill <slug> |
Install a skill from ClawHub |
/list-agents, /create-agent, /delete-agent |
Manage agents |
/quit, /q, exit |
Exit the app |
Server Mode¶
Start the HTTP backend:
The server runs on http://127.0.0.1:8765 by default.
Frontend Mode¶
Start backend, then Vite dev server:
Open http://localhost:5173 in your browser.