TUI Overview

Complete guide to the Argus MCP terminal UI: screens, keybindings, command palette, theming, multi-server mode, and widget reference.

Argus includes an interactive terminal UI built with Textual. The TUI connects to a running Argus server via the management API and to the argusd daemon via Unix Domain Socket, providing real-time monitoring, capability browsing, container/pod management, and server control.

Launching

# Via the argus-cli package
argus-tui

# Or via the server package
argus-mcp tui

# Connect to remote server
argus-tui --server http://192.168.1.100:9000

# With authentication
argus-tui --token my-management-token

# Multi-server mode
argus-tui --servers-config ~/.config/argus-mcp/servers.json

Screens

The TUI has twelve primary modes plus several modal/utility screens, accessible via keybindings or the command palette.

Dashboard (key: 1 or d)

The default screen showing an overview of the Argus instance:

  • Server Info -- Name, version, uptime, transport URLs
  • Backend Status -- Connection state and health for each backend, with status dots and phase icons from the shared design module
  • Event Log -- Real-time event stream with severity indicators
  • Capability Summary -- Quick counts of tools, resources, and prompts

Tools (key: 2)

Full-screen capability explorer:

  • Browse all aggregated tools, resources, and prompts
  • Filter by capability type (key: t tools, r resources, p prompts)
  • Search by name
  • View detailed capability information including schemas

Registry (key: 3)

Server browser and discovery:

  • Browse available MCP servers from the registry
  • View server details and metadata
  • Install panel for adding new backends

Settings (key: 4 or s)

Configuration and preferences:

  • View current config (read from server)
  • Theme selection
  • TUI preferences

Skills (key: 5)

Skill pack management:

  • Browse installed skills with enable/disable status
  • Enable, disable, and apply skills
  • View skill manifests and workflow details

Editor (key: 6)

Tool parameter editing and testing:

  • Edit tool parameters with type-aware input fields
  • JSON schema visualization
  • Test invocation (dry-run)

Audit (key: 7)

Audit log viewer:

  • Browse structured audit events
  • Filter by method, backend, and status
  • View event details with timing information

Health (key: 8 or h)

Backend health monitoring:

  • Per-backend health status and history
  • Health check configuration
  • Version drift detection

Security (key: 9)

Security overview:

  • Authentication status and configuration
  • Active sessions and middleware chain
  • Secrets and network isolation status

Operations (key: 0 or o)

Operational controls:

  • Backend management (reconnect, restart)
  • Server groups and sync status
  • Workflow management

Containers (key: c)

Docker container management powered by argusd:

  • Overview -- Container list with status, resource usage, uptime
  • Logs -- Multi-container log viewer with severity coloring
  • Stats -- Reactive CPU/memory percentage bars from argusd push stream
  • Exec -- Placeholder for interactive terminal (future)

Note:

Requires argusd to be running.

Kubernetes (key: k)

Kubernetes pod management powered by argusd:

  • Pods -- Pod list with status, node, IP, restarts, age
  • Logs -- Per-pod log viewer with severity coloring
  • Events -- Kubernetes events for the selected pod
  • Details -- Describe output for the selected pod

Note:

Only available when argusd has a Kubernetes connection.

Keybindings

KeyAction
qQuit
1 or dSwitch to Dashboard
2Switch to Tools
3Switch to Registry
4 or sSwitch to Settings
5Switch to Skills
6Switch to Editor
7Switch to Audit
8 or hSwitch to Health
9Switch to Security
0 or oSwitch to Operations
cSwitch to Containers
kSwitch to Kubernetes
tShow Tools tab
rShow Resources tab
pShow Prompts tab
nCycle theme
T (Shift)Open theme picker
Ctrl+PCommand palette
wOpen Setup Wizard (hidden)
xExport client config (hidden)

Command Palette

Press Ctrl+P to open the command palette with quick access to:

  • All TUI modes (Dashboard, Tools, Registry, Settings, Skills, etc.)
  • REPL-style navigation verbs (e.g. backends list, health, audit)
  • Theme switching with live preview
  • Server details and connection info
  • Tools/Resources/Prompts tab switching

Polling

The TUI polls the management API every 2 seconds to refresh:

  • Health status
  • Backend states
  • Capabilities
  • Events

Connection Handling

  • Connection lost: TUI shows a connection-lost indicator and continues polling. It will reconnect automatically when the server becomes available.
  • Connection restored: TUI resumes normal operation and refreshes all data.

Multi-Server Mode

With a servers.json config, the TUI shows a server selector widget allowing you to switch between multiple Argus instances:

{
  "servers": [
    { "name": "local", "url": "http://127.0.0.1:9000" },
    { "name": "staging", "url": "http://staging:9000", "token": "tok" }
  ],
  "active": "local"
}

The server selector appears at the top of the dashboard. Selecting a different server reconnects the TUI to that instance.

Theming

The TUI ships with 16 built-in YAML color palettes and supports Textual's theme system. Cycle through themes with n or open the theme picker with T (Shift+T) for a visual preview.

Built-in themes: catppuccin-frappe, catppuccin-latte, catppuccin-macchiato, catppuccin-mocha, dracula, everforest, gruvbox, kanagawa, monokai, nord, one-dark, rose-pine, rose-pine-moon, solarized-dark, solarized-light, tokyo-night.

When a Textual theme is selected, the matching YAML palette is activated automatically so Rich output (status dots, tables, etc.) stays visually consistent with the TUI chrome. Custom YAML palettes can be placed in ~/.config/argus-mcp/themes/.

Design System

Both the TUI and REPL share a unified visual language defined in argus_cli/design.py:

ConventionExamples
Status dotshealthy, connected, degraded, disconnected, error
Phase iconspending, initializing, ready, degraded, failed
Transport badgesstdio, SSE, StreamableHTTP

Screen Architecture

All screens extend ArgusScreen (a common BaseScreen) and implement compose_content() for layout. The TUI uses Textual's mode system -- each screen is registered as a mode in ArgusApp.

ArgusApp
├── DashboardScreen       (mode: "dashboard",       key: 1/d)
├── ToolsScreen           (mode: "tools",            key: 2)
├── RegistryScreen        (mode: "registry",         key: 3)
├── SettingsScreen        (mode: "settings",         key: 4/s)
├── SkillsScreen          (mode: "skills",           key: 5)
├── ToolEditorScreen      (mode: "editor",           key: 6)
├── AuditLogScreen        (mode: "audit",            key: 7)
├── HealthScreen          (mode: "health",           key: 8/h)
├── SecurityScreen        (mode: "security",         key: 9)
├── OperationsScreen      (mode: "operations",       key: 0/o)
├── ContainersScreen      (mode: "containers",       key: c)
├── KubernetesScreen      (mode: "kubernetes",       key: k)
├── BackendConfigModal    (modal — backend installation form)
├── BackendDetailModal    (modal — lifecycle status for a backend)
├── ServerDetailModal     (modal — registry server detail / install)
├── CatalogBrowserScreen  (screen — catalog import pipeline)
├── ClientConfigScreen    (modal — client-side config editor)
├── ServerLogsScreen      (screen — live server log viewer)
├── ExportImportScreen    (screen — config export/import)
├── SetupWizardScreen     (screen — first-run configuration wizard)
├── ExitModal             (modal — exit confirmation with resume options)
├── ElicitationScreen     (triggered by backends)
└── ThemePickerScreen     (key: T)

Screen Details

DashboardScreen

File: tui/screens/dashboard.py | Key: 1 or d

The primary monitoring screen with a grid layout showing server info, backend status, event log, and a tabbed capability section.

Dashboard Widgets

WidgetFilePurpose
ServerSelectorWidgetwidgets/server_selector.pyMulti-server dropdown
ServerInfoWidgetwidgets/server_info.pyServer details panel
BackendStatusWidgetwidgets/backend_status.pyBackend status grid
EventLogWidgetwidgets/event_log.pyEvent stream
CapabilitySectionwidgets/capability_tables.pyTabbed capability tables

ToolsScreen

File: tui/screens/tools.py | Key: 2

Full-screen capability explorer with filtering and search. Tab switching: t (tools), r (resources), p (prompts).

RegistryScreen

File: tui/screens/registry.py | Key: 3

Server browser for discovering and managing MCP servers with registry browser listing and install panel.

SkillsScreen

File: tui/screens/skills.py | Key: 5

Manage installed skill packs: list installed skills with enable/disable toggles, view skill manifests, install/uninstall skills.

ToolEditorScreen

File: tui/screens/tool_editor.py | Key: 6

Edit and test tool parameters with type-aware input fields, JSON schema visualization, and test invocation (dry-run).

AuditLogScreen

File: tui/screens/audit_log.py | Key: 7

Extends BaseLogScreen (shared log infrastructure with pause/resume, export). Timestamped audit events with method, backend, and status columns.

HealthScreen

File: tui/screens/health.py | Key: 8 or h

Backend health monitoring with per-backend health status and history, health check configuration, and version drift detection.

SecurityScreen

File: tui/screens/security.py | Key: 9

Security overview: authentication status, active sessions, middleware chain visualization, secrets and network isolation status.

OperationsScreen

File: tui/screens/operations.py | Key: 0 or o

Operational controls: backend management (reconnect, restart, remove), server groups and sync status, workflow management and optimizer controls.

ContainersScreen

File: tui/screens/containers.py | Key: c

Docker container management via argusd. Tabbed layout with Overview, Logs, Stats, and Exec panes. All data flows through DaemonClient over the argusd Unix Domain Socket.

KubernetesScreen

File: tui/screens/kubernetes.py | Key: k

Kubernetes pod management via argusd. Tabbed layout with Pods, Logs, Events, and Details panes. Only available when argusd has a Kubernetes connection.

ScreenFileAccessPurpose
BackendConfigModalbackend_config.pyRegistry or DashboardTransport-specific backend configuration form
BackendDetailModalbackend_detail.pyEnter on backend rowFull lifecycle status for a backend
ServerDetailModalserver_detail.pySelect in RegistryServer metadata and install button
CatalogBrowserScreencatalog_browser.pyCommand paletteCatalog import pipeline with YAML editor
ClientConfigScreenclient_config.pySettings screenClient-side configuration editor
ServerLogsScreenserver_logs.pyDashboard or OperationsLive server log viewer
ExportImportScreenexport_import.pyCommand palette or SettingsConfiguration export and import
SetupWizardScreensetup_wizard.pyFirst run or command paletteStep-by-step configuration wizard
ExitModalexit_modal.pyQuit action (q)Graceful exit with resume options
ElicitationScreenelicitation.pyTriggered by backendsHandle MCP elicitation protocol requests
ThemePickerScreentheme_picker.pyT (Shift+T)Visual theme selection with previews

Widget Reference

WidgetFileDescription
BackendStatusWidgetbackend_status.pyBackend lifecycle display
CapabilitySectioncapability_tables.pyTabbed tables for tools/resources/prompts
ContainerLogViewercontainer_logs.pyMulti-container log stream with severity coloring
ContainerStatsPanelcontainer_stats.pyReactive CPU/memory bars
ContainerTablecontainer_table.pyContainer list with status, uptime, resources
ContainerStatusBarcontainer_table.pyContainer summary (running/stopped counts)
ElicitationFormWidgetelicitation_form.pyDynamic elicitation form
EventLogWidgetevent_log.pyScrollable event timeline
FilterBarfilter_bar.pyInline text filtering input
FilterToggleWidgetfilter_toggle.pyCapability filter controls
HealthPanelWidgethealth_panel.pyPer-backend health status and history
InstallPanelWidgetinstall_panel.pyBackend installation form
JumpOverlayjump_overlay.pyJump-mode label overlay for keyboard navigation
MiddlewarePanelWidgetmiddleware_panel.pyMiddleware chain visualization
ModuleContainermodule_container.pyCollapsible container for modular screen sections
NetworkPanelWidgetnetwork_panel.pyNetwork isolation status
OptimizerPanelWidgetoptimizer_panel.pyOptimizer controls and metrics
OtelPanelWidgetotel_panel.pyOpenTelemetry tracing display
ParamEditorWidgetparam_editor.pyTool parameter editor
PercentageBarpercentage_bar.pyProgress/utilization bars
PodTablepod_table.pyKubernetes pod list with status
PodStatusBarpod_table.pyPod summary (running/pending/failed counts)
QuickActionsquick_actions.pyContext-sensitive action buttons
RegistryBrowserWidgetregistry_browser.pyServer registry browser
RegistryPanelWidgetregistry_panel.pyRegistry panel
SecretsPanelWidgetsecrets_panel.pySecrets management display
ServerConnectionsPanelserver_connections_panel.pyServer connection panel
ServerGroupsWidgetserver_groups.pyServer group management
ServerInfoWidgetserver_info.pyServer details (name, version, uptime)
ServerSelectorWidgetserver_selector.pyMulti-server dropdown with connect action
SessionsPanelWidgetsessions_panel.pyActive session tracking
SyncStatusWidgetsync_status.pyConfig sync status indicator
Toolbartoolbar.pyAction bar
ToolOpsPaneltool_ops_panel.pyTool operations panel
ToolPreviewWidgettool_preview.pyTool JSON schema display
TPlottplot.pyPlotext-based charts for metrics visualization
VersionBadgeWidgetversion_badge.pyVersion display badge
VersionDriftWidgetversion_drift.pyVersion drift detection across backends
WorkflowsPanelWidgetworkflows_panel.pyWorkflow management panel

Custom Events

EventFileTrigger
CapabilitiesReadyevents.pyBackend capabilities loaded
ConnectionLostevents.pyServer connection lost
ConnectionRestoredevents.pyServer connection restored
ServerSelectedwidgets/server_selector.pyUser selects a server