Skip to main content
The Palyra Web Console is a React-based administrative interface providing comprehensive visibility and control over the palyrad daemon. It is organized into functional sections categorized under Observability, Control, Agent, and Settings groups. The console facilitates everything from real-time chat and usage tracking to low-level configuration mutations and security audit log reviews.

Architecture and Navigation

The console utilizes a section-based navigation model defined in apps/web/src/console/navigation.ts. The ConsoleApp component serves as the entry point, managing the transition between the boot screen, authentication screen, and the main shell. The UI is divided into five logical groups:
  • Chat: Direct interaction with agents via the ChatConsolePanel.
  • Observability: High-level status via Overview, Sessions, Usage, Logs, Inventory, and Support.
  • Control: Active management of Approvals, Routines (Cron), Channels, and Browser automation.
  • Agent: Configuration of Agents, Skills, and Memory.
  • Settings: System-level Auth profiles, Access control, Config mutations, and Secrets.

Request Pipeline and ConsoleApiClient

All communication with the daemon is brokered by the ConsoleApiClient. This client handles endpoint routing, JSON serialization, and security headers. Key Features: Console Request Flow The following diagram illustrates the path from a UI action to the Daemon API. Title: Console Request Pipeline Sources: apps/web/src/consoleApi.ts#1, apps/web/src/console/useConsoleAppState.tsx#165, apps/web/src/consoleApi.test.ts#44-90

Desktop Handoff Flow

Palyra supports a “Desktop Handoff” mechanism where the Tauri-based desktop application can launch the web console in a standard browser while maintaining the authenticated session.
  1. Token Generation: The desktop sidecar generates a short-lived desktop_handoff_token.
  2. Redirection: The browser is opened with the token in the query string: ?desktop_handoff_token=....
  3. Consumption: The useConsoleAppState hook detects the token, calls api.consumeDesktopHandoff(), and then clears the token from the address bar to prevent reuse or leakage apps/web/src/console/useConsoleAppState.tsx#109-153.
  4. Fallback: If handoff fails, the app attempts a standard bootstrap session refresh apps/web/src/console/useConsoleAppState.tsx#117-122.
Sources: apps/web/src/App.test.tsx#69-107, apps/web/src/console/useConsoleAppState.tsx#58-60

Console Sections Detail

1. Overview and Observability

2. Control and Automation

3. Settings and Security

4. Support and Diagnostics

The Support section provides tools for incident remediation: Code Entity Space Mapping The following diagram maps UI sections to their primary data structures in consoleApi.ts. Title: Console Data Mapping Sources: apps/web/src/consoleApi.ts#29-49, apps/web/src/consoleApi.ts#97-108, apps/web/src/console/sections/AccessSection.tsx#69-72, apps/web/src/console/sections/SupportSection.tsx#73-74

State Management and Auto-Refresh

The console uses a TTL-based auto-refresh strategy to keep observability data current without overloading the daemon. TTLs are defined per section in useConsoleAppState.tsx.
SectionTTL (ms)
Overview10,000
Channels8,000
Config / Secrets15,000
Access10,000
Support10,000
The shouldAutoRefreshSection function evaluates if a section requires a background update based on the lastRefreshedAt timestamp apps/web/src/console/useConsoleAppState.tsx#42-72. Sources: apps/web/src/console/useConsoleAppState.tsx#42-54, apps/web/src/console/useConsoleAppState.tsx#62-72