Web UI

tota ships a full browser-based dashboard that runs entirely on your machine. No cloud account, no telemetry, no data leaving 127.0.0.1.

#Quick start

tota ui

Opens http://127.0.0.1:3001 in your default browser. The React SPA is bundled into the package — no separate install needed.

#Options

FlagDescription
--port <n>Custom port (default: 3001)
--no-openStart the server without opening a browser tab
--attachProxy to an already-running tota daemon instead of booting a new instance
tota ui --port 4000          # custom port
tota ui --no-open            # server only, no browser
tota ui --attach             # connect to existing daemon

#How it works

tota ui starts the agent with the UI channel enabled. The channel:

  1. Starts an HTTP server on the configured port
  2. Serves the built-in React SPA (bundled at build time into dist/)
  3. Exposes a REST API the SPA communicates with
  4. Opens a WebSocket connection for real-time message and log streaming

When you use --attach, the UI proxies to the agent's existing API rather than booting a new agent process — useful when tota is already running as a daemon.

#Pages at a glance

PageURLDescription
Chat/chatFull conversation interface with streaming, slash commands, file upload (up to 50 MB), voice recording with auto-transcription, inline media preview
Dashboard/dashboardAgent status, model, uptime, token budget
Memory/memoryBrowse, add, edit, and delete Second Brain facts
Scheduler/schedulerCreate, edit, toggle, and cancel scheduled tasks
Skills/skillsInstalled skills list; add, edit, or delete skills
Settings/settingsAgent behaviour config, provider and API key status
Logs/logsLive log viewer with severity filter; auto-refreshes every 5 s
Integrations/integrationsChannel status, tools, and provider overview

#Enable via config (auto-start with daemon)

Pre-enable the UI channel in ~/.tota/config.json so it starts automatically when the daemon boots:

{
  "channels": {
    "ui": {
      "enabled": true,
      "port": 3001
    }
  }
}

Or configure it interactively:

tota setup ui

#Security

The server binds to 127.0.0.1 (loopback only) — it is never exposed to the network.

If you run tota on a remote server and want to reach the UI from your local machine, use an SSH tunnel:

ssh -L 3001:127.0.0.1:3001 user@your-server
# then open http://127.0.0.1:3001 in your local browser

#Tech stack

LayerTechnology
FrontendReact 18 + React Router + Tailwind CSS
BuildVite (output served from dist/ui-app/)
APINode.js http.createServer (no Express)
Real-timeWebSocket (ws) — one persistent connection per browser tab
IconsLucide React