apps/web) is a React-based Single Page Application (SPA) that serves as the primary operator interface for the Palyra daemon (palyrad). It communicates exclusively with the /console/v1/* API surface of the daemon to provide observability, session management, and administrative control over the agent’s runtime environment apps/web/README.md#1-5.
The dashboard is designed for same-origin deployment, utilizing secure session cookies and CSRF protection for all mutating operations apps/web/README.md#62-65.
System Architecture
The dashboard is structured around a central state manager and a specialized API client. It uses a “Section” based navigation model where the UI is partitioned into functional domains (Chat, Observability, Control, Agent, and Settings) apps/web/src/console/navigation.ts#26-52.Web Console Component Hierarchy
Sources: apps/web/src/App.tsx#11-33, apps/web/src/console/ConsoleSectionContent.tsx#26-108, apps/web/src/console/useConsoleAppState.tsx#164-165ConsoleApiClient and Application State
TheConsoleApiClient is the core class responsible for all network communication with the daemon. It handles the lifecycle of the operator session, including:
- Authentication & Handoff: Consuming
desktop_handoff_tokenfrom the URL to automatically bridge sessions from the Desktop Companion apps/web/src/console/useConsoleAppState.tsx#109-123. - Security: Automatic attachment of
x-palyra-csrf-tokenheaders for POST/PUT/DELETE requests apps/web/src/consoleApi.test.ts#44-90. - Resilience: Retry logic for bootstrap sessions, specifically handling rate limits (429) and transient auth failures apps/web/src/console/useConsoleAppState.tsx#74-86.
useConsoleAppState hook, which orchestrates domain-specific hooks for authentication, configuration, support, and overview data apps/web/src/console/useConsoleAppState.tsx#21-25.
For details, see ConsoleApiClient and Application State.
Sources: apps/web/src/consoleApi.ts#1-162, apps/web/src/console/useConsoleAppState.tsx#1-165, apps/web/src/App.test.tsx#69-107
Chat Interface and Session Management
The Chat section is the primary workspace for real-time interaction with the agent. Unlike administrative sections, the chat interface involves complex state management for:- Run Streaming: Handling NDJSON streams of events during agent execution.
- Session Continuity: Managing
ChatCheckpointRecordandChatCompactionArtifactRecordto maintain context budgets apps/web/src/console/sections/SessionsSection.tsx#6-10. - Branching: Supporting session branching and lineage tracking via
parent_session_idapps/web/src/consoleApi.ts#38-40.
ChatConsolePanel serves as the entry point for this workspace, integrating the transcript, composer, and session sidebar apps/web/src/console/ConsoleSectionContent.tsx#32-39.
For details, see Chat Interface and Session Management.
Sources: apps/web/src/consoleApi.ts#17-78, apps/web/src/console/sections/SessionsSection.tsx#38-100, apps/web/src/console/ConsoleSectionContent.tsx#30-40
Console Sections and Operator Workflows
The dashboard is divided into 19 distinct sections mapped to specific operational capabilities apps/web/src/console/sectionMetadata.ts#1-33. These are grouped into logical navigation rails:| Group | Key Sections | Purpose |
|---|---|---|
| Observability | Overview, Sessions, Usage, Logs | Monitoring deployment health, token consumption, and runtime logs apps/web/src/console/navigation.ts#35. |
| Control | Approvals, Cron, Channels, Browser | Managing sensitive action gates, scheduled routines, and browser automation apps/web/src/console/navigation.ts#40. |
| Agent | Agents, Skills, Memory | Configuring agent personalities, installing WASM skills, and managing long-term memory apps/web/src/console/navigation.ts#45. |
| Settings | Auth, Access, Config, Secrets | Managing model provider keys, pairing devices, and mutating daemon configuration apps/web/src/console/navigation.ts#50. |