Starting the Web UI
Features
- Axum + WebSocket backend - Real-time streaming of agent responses
- React + Tailwind frontend - Modern, responsive UI
- Session management - Via sidebar
- Tool approval modal - For manual permission mode
- Sub-agent viewer - Monitor background agents
- Worker management panel - Control scheduled tasks
- Embedded terminal - Full PTY support for shell access
- Plugin management - Install, start, stop, configure, and view plugin logs
- Browser control - Launch, navigate, screenshot, and manage tabs
- Background processes - Start, monitor, and kill processes
- Memory management - View and edit global and project memory
- Password authentication - Optional with JWT tokens
- Hot-swap provider - Switch model and provider while agents are running
Authentication
Set a password inconfig.json:
REST API
The web UI exposes a comprehensive REST API (all endpoints require authentication when password is set):Configuration
GET /api/config- Get full configurationPUT /api/config- Save configurationGET /api/config/{key}- Get specific config valuePUT /api/config/{key}- Set specific config valueGET /api/tools- List available tools
Providers & Models
GET /api/providers- List all providersGET /api/models- Get available modelsGET /api/providers/{name}/models- Fetch models from provider APIPUT /api/providers/{name}/models- Override provider modelsPUT /api/providers/active- Switch active provider (hot-swap)POST /api/models- Add custom model entryPOST /api/providers/{name}/test- Test provider connection
Credentials
GET /api/credentials- Get stored credentialsPUT /api/credentials- Save credentials
Plugins
GET /api/plugins- List installed pluginsGET /api/plugins/remote- List plugins from registryPOST /api/plugins/install- Install plugin from local pathPOST /api/plugins/install-remote- Install from registryDELETE /api/plugins/{name}- Remove pluginPOST /api/plugins/{name}/start- Start pluginPOST /api/plugins/{name}/stop- Stop pluginPOST /api/plugins/{name}/restart- Restart pluginGET /api/plugins/{name}/config- Get plugin configPUT /api/plugins/{name}/config- Update plugin configGET /api/plugins/{name}/logs- Tail plugin logsGET /api/plugins/{name}/commands- List plugin commandsPOST /api/plugins/{name}/commands/{cmd}- Execute plugin commandGET /api/plugins/{name}/tools- Get plugin toolsGET /api/plugins/{name}/auth/qr- Get QR code for plugin authGET /api/plugins/{name}/auth/status- Check plugin auth status
Memory
GET /api/memory/global- Get global memoryPUT /api/memory/global- Save global memoryGET /api/memory/project- Get project memoryPUT /api/memory/project- Save project memoryGET /api/memory/project/active- Check if project memory is activePUT /api/memory/project/active- Toggle project memory
Workers
GET /api/workers- List workersPOST /api/workers- Create workerPUT /api/workers/{id}- Update workerDELETE /api/workers/{id}- Delete workerPUT /api/workers/{id}/toggle- Enable/disable workerGET /api/workers/{id}/runs/{run_id}- Get run result
Browser
POST /api/browser/launch- Launch browserGET /api/browser/status- Get browser statusPOST /api/browser/navigate- Navigate to URLGET /api/browser/screenshot- Take screenshotGET /api/browser/tabs- List open tabsPOST /api/browser/close- Close browser
Background Processes
GET /api/processes- List background processesPOST /api/processes/background- Start background commandGET /api/processes/{pid}/log- Get process logPOST /api/processes/{pid}/kill- Kill process
Transcription
GET /api/transcription/status- Check transcription plugin statusPOST /api/transcription/transcribe- Transcribe audio file
Events
POST /api/events/consume- Consume pending eventsGET /api/events/history- Get event historyDELETE /api/events/history- Clear event history
Files
GET /api/files?path=...- List directory contentsGET /api/cwd- Get current working directory
WebSocket Events
The web UI communicates with the backend via WebSocket (GET /ws) for:
- Real-time message streaming
- Tool call requests and approvals
- Session updates
- Worker notifications (broadcast to all clients)
- Terminal I/O (base64-encoded)
Terminal Support
The Web UI includes a full embedded terminal with PTY allocation. Terminal sessions support:- Input/output via WebSocket messages
- Resize events
- Multiple terminal sessions
- Session lifecycle management (create, list, destroy)
