/** * OpenKernel — RoboPark Control dashboard (served by a mesh node). * * A single self-contained page (no external assets — CSP-clean, ships in dist as * a compiled string). It polls GET /fed/status, renders the fleet + this node's * hardware + a live activity feed, and runs allow-listed actions via * POST /fed/command and POST /fed/apply. The browser authenticates every request * with the ?token= it was loaded with (browsers can't set Bearer on navigation). * * Three tabs: * Fleet — node cards + this-node hardware + live activity feed * Park — isometric live map of the mesh (nodes placed on a floor, agent * movement + tool-use pulses streamed from /fed/stream; click a robot * for its cam / mic / speaker / hardware drawer) * Sessions & Telemetry — RoboPark scheduler stats + production_mode + controls * * The Park cam panel relays RoboVisionAI_PI's existing MJPEG feed through the * authenticated mesh. LiveKit remains the voice transport but is deliberately * not used for dashboard video, avoiding camera ownership conflicts on robots. * * Kept free of backticks and ${...} so the whole page fits inside this TS * template literal without escaping; the client JS uses string concatenation. */ export declare const DASHBOARD_HTML = "\n\n\n\n\n\nRoboPark Control\n\n\n\n\n
\n
connection lost \u2014 retrying
\n
\n \n
\n \n
\n RoboPark Control\n
connecting\u2026
\n
\n
\n
\n \n set operator\n
\n\n
\n
\n
\n
\n
\n
Production command center

Fleet intelligence

Live readiness, workload, release compliance, hardware pressure, and operator actions across every RoboPark device.

\n
\n
\n
\n
\n
Operational readinesslive
\n
Robot workloadsessions / triggers
\n
Needs attention0 issues
\n
\n
\n
\n

Fleet

\n
\n
\n
\n \n
\n
\n\n
\n
\n \n
\n hub\n robot\n peer\n dispatch\n telemetry\n
\n \n
drag to pan \u00B7 scroll to zoom \u00B7 click a robot for cam / mic / speaker \u00B7 ctrl+drag a robot to reposition (persists)
\n
\n
\n
\n
\uD83E\uDD16
\n
robot
satellite
\n idle\n \n
\n
\n
\n
\n\n
\n
\n \"\"\n
Robot camera
RoboVision mesh relay
\n
\n
\n
\n
\n \"Live\n
opening RoboVision camera...
\n
REC / CONNECTING
\n
--:--:--
\n
\n
\n \n
\n
\n\n
\n
\n

RoboPark \u00B7 sessions & telemetry

\n
\n \n
\n
\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n \n
\n
\n
\n

Fleet health \u00B7 sessions (last 60 min) \u2014

\n \n
\n
Top robots by activity
\n
\n
Recent activity last 20
\n
\n
\n\n \n
\n
\n
\n
\n \n \n
\n
\n \n \n \n \n \n
RobotSessionStartedDurationEnd reasonActions
\n
\n
No active sessions right now \u2014 sessions appear here the moment a robot joins a LiveKit room.
\n
\n\n
\n
\n
\n
\n \n \n Commands are allowlisted and audited.\n
\n
Loading robot terminals...
\n
\n\n
\n
\n \n \n
\n Polling authenticated robot journals every 6 seconds.\n
\n
Loading robot log streams...
\n
\n\n
\n
\n
\n
\n
Authenticated engineering fabric

Live Infinicode mesh

SSE READY
\n \n
\n \n
\n
\n \n
\n
Select a robot
Idle
\n
Select a robot and send a management task.
\n
CTRL + ENTER TO DISPATCHAUTHENTICATED / AUDITED / PERSISTENT
\n
\n
\n
\n
\n\n
\n
Authenticated mesh relay. VNC and noVNC remain loopback-only on every Pi.
\n
\n
Choose an online robot to open its interactive desktop.
\n
\n\n \n
\n
\n
One-click managed access

Character conversation links

Configure a call or copy a reusable, credential-free ElevenLabs join link directly from a character card.

\n
Loading characters and ElevenLabs agents...
\n
\n
\n
\n
ElevenLabs management channel
Royal Voice Studio
\n
No active session
\n
\n
\n \n
\n
\"RobotROBOT VISION
\n
\n
\n \"\"\n
RP
\n
\n
\n
Ready when you areselect character and beginElevenLabs primary
\n
ready to start00:00
\n
\n
--Total response
\n
--STT to LLM
\n
--LLM to TTS
\n
\n
\n \n \n \n \n \n \n
\n
System Voice pipeline is standing by.
\n
\n
\n
Conversation0 messages
\n
Your live transcript and typed messages appear here.
\n
\n \n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n \n \n \n
SessionRobotStartedEndedDurationEnd reasonTurnsPipelineLatencyActions
\n
\n
No sessions match the current filters.
\n
\n \u2014\n
\n \n \n
\n
\n
\n\n \n
\n
\n All\n \uD83E\uDD16 Robot\n \uD83D\uDCE1 Device\n \uD83C\uDF99 Session\n \uD83D\uDDA5 Server\n \uD83D\uDDE3 Voice\n \uD83C\uDFAD Character\n
\n \uD83D\uDC64 by me\n \n
\n
\n \n \n \n \n \n
TimeCategoryActionTargetDetailsOperator
\n
\n
No audit events match the current filter.
\n
\n\n \n
\n
Liveness polling mesh + scheduler + devices
\n
\n
\n
mesh
\n
\u2014
\n
awaiting first poll\u2026
\n
\n
\n
scheduler
\n
\u2014
\n
awaiting first poll\u2026
\n
\n
\n
cameras
\n
\u2014
\n
awaiting first session\u2026
\n
\n
\n
production mode
\n
\u2014
\n
awaiting first poll\u2026
\n
\n
\n\n
Active incidents 0
\n
\n All\n \u2717 critical\n \u26A0 warning\n \u00B7 info\n
\n \n
\n
\n \n \n \n \n \n
SeverityRobotReadinessFirst seenDurationMessage
\n
\n
no active incidents
\n\n
Acknowledged 0
\n
\n \n \n \n \n \n
Acked atByRobotReadinessMessage
\n
\n
no acknowledged incidents
\n
incidents are derived from /api/telemetry readiness codes. Acknowledgments are stored in your browser (localStorage) so multiple operators on different machines each get their own list. When a robot's readiness returns to \"ready\" or \"in_session\" the incident auto-closes.
\n
\n\n \n
\n
\n
\n
\n
Operational readinessscheduler
\n
Robot workloadsessions / triggers
\n
Needs attention0 issues
\n
\n
\n
Robots live + idle + offline
\n
\n
\n\n \n
\n
\n

Voice provider secret

\n
\n
\n \n
\n
not configured \u00B7 cached voice speaker tests require this key
\n
\n\n \n
\n

Add LiveKit server

\n
\n
\n \n \n
\n
\n
\n Advanced \u2014 ID, URL, credentials, capacity\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n \n
\n

Add robot (mint enrollment token)

\n
\n
\n
\n
\n
\n \n
\n
the robot self-reports its IP and hardware on first heartbeat \u2014 you only need a name and (optionally) a character preset to get started.
\n
\n
\n \n
\n
\n Advanced \u2014 pre-set network/voice config before the robot connects\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n \n
\n

Runtime health \u00B7 scheduler \u00B7 LiveKit \u00B7 Docker

\n
\n
not checked
\n \n
\n
ContainerStateImageActions
\n
Docker controls are protected by the hub token. Logs are limited to the latest 100 lines.
\n
\n\n
\n\n \n
\n
\n
\n

RoboPark Easy Setup

Set up or repair a complete robot in about one minute. Choose three things, copy one command, and paste it on the robot.

\n
\n
\n
\n
Guided robot setup

One command. Complete RoboVoice runtime.

The command installs RoboPark and creates the unified mesh, camera, audio, motion, motor, and RoboVoice hardware runtime. Direct ElevenLabs agents use the separate commands below because the two engines must not own the same media devices at once.

ABOUT 1 MINUTE
\n
\n
Step 1Use the permanent physical robot name.
\n
Step 2Only real character presets appear here.
\n
Step 3Choose LAN when the robot is onsite.
\n
OptionalShown in fleet and session history.
\n
\n
\n
Checking setup...
\n
1Open Terminal on the Raspberry Pi.
2Paste the copied command and press Enter.
3Wait for enabled and started systemd unit. The robot then appears in Fleet.
\n
\n
\n Advanced tools, addresses, diagnostics, and recovery\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n

Add a persistent command

\n
\n
\n
\n
\n
Saved only in this operator browser.
\n
\n
\n
\n
\n
\n\n \n
\n
\n
\n

Character & Voice Studio

Build reusable personas and production voice pipelines in one place. Changes are applied centrally and become available immediately in Voice Studio, Fleet, and every Park robot panel.

\n
\n
\n
\n
\n
VOX

Voice stacks

Speech recognition, language model, synthesis, turn-taking, and wake behavior.

0 stacks
\n
\n
\n
\n
\n
\n
AI

Character presets

Persona, prompt, robot avatar, park placement, motors, and default voice stack.

0 presets
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n

Details

\n \n
\n
\n
\n
\n\n\n
\n\n\n\n";