Web Interface¶
Pages¶
| Page | Route | Who can access |
|---|---|---|
| Chat | / |
All users |
| Chat History | /chats |
All users |
| Agents | /agents |
All users |
| Agent Detail | /agents/{id} |
Owner or admin |
| Models | /models |
All users |
| Files | /files |
All users |
| Monitors | /monitors |
All users |
| Audit Log | /audit |
Admin: all entries. User: own entries |
| Settings | /settings |
Admin |
| User Settings | /settings |
Non-admin users see a subset |
| Help | /help |
All users |
| Login | /login |
Unauthenticated |
| Setup | /setup |
First run only (no users) |
| User Management | /admin/users |
Admin only |
Chat (/)¶
The main interface. Multi-turn conversations with tool use, image uploads, and real-time streaming.
Key interactions: - Send a message with Enter or the Send button - Attach images/PDFs with the paperclip button - Switch models with the model picker button in the status bar - Confirm or deny tool actions when the confirmation modal appears - Start a new chat with the "New Chat" button
Model picker: Shows all available models grouped by provider, with capability badges (Vision, Tools, Online). The selected model is saved in localStorage and persisted across page refreshes.
Chat restoration: Navigating away and back restores the conversation state from memory. If the session is not in memory (e.g. after a page refresh), it is loaded from the conversations database table.
Chat History (/chats)¶
Lists all conversations for the current user, sorted by most recent. Shows title (derived from first message), date, and model used.
- Click a conversation to resume it in the chat view
- Titles can be renamed (double-click)
- Delete conversations you no longer need
Agents (/agents)¶
Create and manage goal-oriented agents with cron schedules.
Agent fields:
- Name — display name
- Prompt — the agent's instruction (what to do)
- Model — model override (uses default if empty)
- Schedule — cron expression (blank = manual only)
- Allowed Tools — checkboxes; unchecked = all tools available
- Max Tool Calls — per-agent limit (blank = use system default)
- Prompt Mode — how the agent prompt interacts with the standard system prompt:
- combined (default): agent prompt prepended to standard prompt
- system_only: standard system prompt only; agent prompt is the task message
- agent_only: agent prompt replaces the entire system prompt (no SOUL.md, no security rules)
- Can Create Sub-agents — whether this agent can spawn child agents
Run history tab: Shows all runs with status, token counts, start/end time, and result text.
Models (/models)¶
Browse all available models across configured providers.
- Filter chips: All / Vision / Tools / Online
- Search: Filters by model ID and name simultaneously
- Row click: Opens a detail modal with description, pricing, context window, and capability badges
Model metadata (pricing, capabilities) is fetched from OpenRouter and cached for 1 hour. Anthropic models are hardcoded.
Files (/files)¶
File browser scoped to the calling user's personal folder. Admins see the global filesystem whitelist roots.
- Browse directory trees
- Download individual files
- Download folders as ZIP
- Delete files (with confirmation)
Monitors (/monitors)¶
Manage RSS feed and page-change monitors.
RSS Feeds: - URL, cron schedule, agent to dispatch, max new items per run - Tracks seen item IDs to avoid re-processing
Page Monitors: - URL, CSS selector (or full page hash), cron schedule, agent to dispatch - Triggers when content at the selector changes
Audit Log (/audit)¶
Searchable, paginated log of all tool calls.
Filters:
- Date range (from/to in dd.mm.yyyy HH:MM format)
- Tool name (partial match, case-insensitive)
- Session ID (exact)
- Confirmed only
Access control: Admins see all entries. Non-admin users see only their own tool calls.
Click any row to see full arguments and result summary.
Settings (/settings)¶
Admin tabs (15 tabs)¶
| Tab | What's here |
|---|---|
| General | Agent pause/resume, default provider, runtime limits, audit retention |
| Whitelists | Email whitelist, Web Tier 1 domains, Filesystem sandbox, Browser trusted domains |
| Credentials | Encrypted key-value store (API keys, system settings) |
| CalDAV | CalDAV/CardDAV URL and credentials |
| Pushover | Pushover app token |
| Inbox | Email account configuration, trigger rules |
| Email Accounts | Multi-account IMAP/SMTP setup |
| Telegram | Bot token, chat ID whitelist, trigger rules |
| Personality | SOUL.md and USER.md editors |
| 2nd Brain | Brain database config, MCP key |
| MCP Servers | Model Context Protocol server connections |
| Security | Prompt injection options, canary tokens, LLM screening, output validation |
| Branding | Agent name, logo, brand name |
| Webhooks | Inbound webhook endpoints, outbound webhook targets |
| Profile | Change password, MFA setup, API key, user preferences |
Non-admin tabs (12 tabs)¶
API Keys, Personality, Inbox, Email Accounts, CalDAV/CardDAV, Telegram, MCP Servers, 2nd Brain, Pushover, Webhooks, Browser, Profile.
Navigation¶
The sidebar is always present. Navigation uses a lightweight SPA approach:
- Sidebar links call
navigateTo(url) - The target page's
<main>content is fetched and injected - Page-specific scripts are re-executed
- The browser URL is updated with
history.pushState
This avoids full page reloads and preserves WebSocket connections during navigation.
Status indicators¶
Sidebar: - Agent name + version - Pause/Resume button (turns red when paused) - Active run counter
Chat status bar: - Active model name (click to switch) - Token counts from last response - Queue depth (when background runs are active)