Skip to content

Web Interface

The Web Interface is the primary way to interact with Axiom: send messages, watch background tasks, edit memory, manage providers and skills, and tune behavior in Settings.

With the default Docker Compose setup, you open it at http://localhost:3000. If you changed HOST_PORT in your .env, use that port instead.

Admin vs. user. Most pages are admin-only — only users with role admin see them. Regular users land on Chat and stay there. The locked screen on every other page is intentional: an Axiom deployment is single-tenant by design, and configuration is the operator's job.

Screenshot of the Axiom web interface

Layout

The app shell has three regions:

  • Sidebar (left) — version badge, navigation, and the user menu at the bottom. Collapses to an icon-only rail on narrow desktop windows and to a slide-over drawer on mobile.
  • Page header — title, subtitle, and per-page action buttons (refresh, save, create…). On mobile the buttons teleport into the global header bar to save vertical space.
  • Page body — whatever the current page renders.

The sidebar is the canonical map of the interface. Every entry below has its own dedicated page in this section, except for Settings — that one is large enough to have its own Settings tree.

Pages

Sidebar entryWhat it's for
DashboardOperations overview — provider health, activity today, active tasks, recent health checks.
ChatThe main agent conversation. Streaming, attachments, voice input/output, thinking level.
TasksList, inspect, kill, and restart background tasks.
CronjobsCreate, edit, and manage recurring scheduled tasks and reminders.
MemoryEdit SOUL.md, MEMORY.md, daily notes, user profiles, and the wiki.
Activity LogsBrowse historical agent activity — tool calls, sessions, and errors.
Token UsageToken consumption and estimated cost broken down by provider, model, and time range.
UsersAdd, remove, and manage local accounts and Telegram-linked users.
ProvidersConfigure LLM providers and pick the active default model.
SkillsInstall, inspect, and toggle skills. Browse the built-in tool catalog.
InstructionsEdit AGENTS.md, HEARTBEAT.md, and CONSOLIDATION.md — the agent's behavior rules.
SettingsRuntime configuration — provider, scheduler, telegram, voice, secrets, etc.

Conventions across all pages

A few patterns recur on almost every admin page. Knowing them once means every page reads faster:

  • Page header with a single primary action. The header carries the page title and at most one or two primary buttons (Refresh, Save, New …). Destructive actions live inside row menus, never in the header.
  • Save is explicit. Forms (Settings, Cronjobs, Providers, Memory editors) never auto-save. You see exactly what changes when you click Save.
  • Confirm dialogs for destructive actions. Killing a task, deleting a cronjob, removing a user, or resetting memory always goes through a ConfirmDialog. Destructive confirm buttons are styled red.
  • Polling, not WebSockets, for list pages. Tasks, Activity Logs, and the Dashboard refresh every few seconds via a poll loop. The Chat page is the exception — it uses a persistent WebSocket so messages stream live.
  • Empty states are helpful, not loud. Every list page has an empty state with an icon, a one-line title, and a sentence explaining what would put rows there.

Where to next?

  • New to the app? Start with Dashboard for the lay of the land, then move to Chat.
  • Want to understand what runs in the background? Tasks and Cronjobs.
  • Need to configure something? Jump straight to Settings.

Released under the MIT License.