Skip to main content
The Palyra Web Console is a React-based operator dashboard designed for real-time observability and administrative control of the palyrad daemon. It follows a modular architecture where the ConsoleShell acts as the primary layout container, routing between specialized functional sections.

Console Section Architecture

The console is organized into functional “Sections,” each represented by a unique ID and mapped to specific routes and UI components. This modularity allows the dashboard to scale across observability, control, agent management, and system settings. Routing is handled by the ConsoleShell and ConsoleSectionContent components, which map Section IDs to their respective React views apps/web/src/console/ConsoleSectionContent.tsx#26-106. Navigation is structured into five logical groups: Chat, Observability, Control, Agent, and Settings apps/web/src/console/navigation.ts#26-52.
GroupSection IDPathDescription
Chatchat/chatInteractive agent communication interface.
Observabilityoverview, sessions, usage, logs, inventory, support/control/*System status, run history, token usage, and diagnostics.
Controlapprovals, cron, channels, browser/control/*Human-in-the-loop approvals, scheduled tasks, and integrations.
Agentagents, skills, memory/agent/*Agent configuration, tool/skill management, and long-term memory.
Settingsauth, access, config, secrets, operations/settings/*Provider profiles, security policies, and daemon configuration.

Data Flow and State Management

Each section typically utilizes a specialized “Domain Hook” (e.g., useUsageDomain, useConfigDomain) to manage its local state and interface with the ConsoleApiClient. Global state, such as the active session and theme, is managed by useConsoleAppState apps/web/src/console/useConsoleAppState.tsx#164-211. Dashboard Data Flow Sources: apps/web/src/console/ConsoleSectionContent.tsx#26-106, apps/web/src/console/useConsoleAppState.tsx#164-211, apps/web/src/console/navigation.ts#54-74

Key Observability Sections

Overview and Usage

The Overview provides a high-level heartbeat of the system, while the Usage section (UsageSection) provides deep insights into token consumption, costs, and model performance.

Logs and Inventory


Control and Settings Sections

Config and Secrets Management

The Config section allows for safe mutation of the palyra.toml file through a “Migrate/Mutate/Recover” workflow, preventing manual syntax errors apps/web/src/App.config-access-support.test.tsx#40-69.

Governance and Approvals

The Approvals section (ApprovalsSection) is the inbox for ToolCallPolicy violations or high-sensitivity actions requiring human intervention.

Implementation Details

Auto-Refresh Logic

To ensure data freshness without overloading the daemon, sections have defined Time-To-Live (TTL) values. The shouldAutoRefreshSection utility determines if a section needs a background update apps/web/src/console/useConsoleAppState.tsx#42-72.
SectionTTL (ms)
Overview10,000
Usage / Operations10,000
Config / Secrets15,000

Model Registry and Failover

The Models view (part of Config/Auth) visualizes the ProviderRegistry. It displays the health state of model providers (OpenAI, Anthropic, etc.) and whether failover is currently active crates/palyra-cli/src/commands/models.rs#27-45. Model Registry Code Mapping Sources: apps/web/src/console/providerRegistry.ts#46-59, crates/palyra-cli/src/commands/models.rs#27-45

Support and Diagnostics

The Support section allows operators to trigger a SupportBundleJob. This collects daemon logs, redacted config, and system metadata into a ZIP file for troubleshooting apps/web/src/App.config-access-support.test.tsx#16-17. It leverages the runtime.doctor capability to generate JSON diagnostics apps/web/src/console/fixtures/m56ControlPlane.ts#73-79. Sources: