ROBOPARK / ROBOVOICE
Production simplification plan
One proven call path. One control plane.

Remove orchestration from the conversation.

Keep the existing RoboVoice call stack exactly where it works. Make each Pi a headless participant with local motion detection, camera, microphone and speaker. Rebuild RoboPark as fleet control, monitoring, history and remote operations around that path.

01 / TARGET

Simplified production topology

The session scheduler leaves the critical path. LiveKit remains media transport, not business orchestration.

Pi motionLocal detector decides when to start. No remote polling required.
Headless Pi callCamera + mic publish. Speaker subscribes. Stable hardware profile.
LiveKit roomOne robot and one RoboVoice agent. Strict 1:1 session.
RoboVoiceExisting STT, LLM, TTS, VAD, interruption and character behavior.
Control CenterObserves events, video, transcripts, health and remote commands.
Control path: browser -> livekit-1 -> robot LAN satellite. Voice path: Pi -> LiveKit -> RoboVoice -> LiveKit -> Pi. The Control Center is never required for an onsite conversation to continue.
02 / OWNERSHIP

One owner for every responsibility

RoboVoice-main

Conversation authority

Characters, prompts, voice stacks, STT, LLM, TTS, VAD, endpointing, interruptions, LiveKit agent jobs, transcripts and call timing.

Robot Pi

Hardware authority

Motion detection, camera capture, microphone capture, speaker playback, local media locks, reconnects and device health.

RoboPark Control

Operations authority

Fleet identity, production toggles, health, history, audit, always-on preview, tests, configuration editing and remote lifecycle commands.

Keep

  • Existing RoboVoice web-call AgentSession behavior
  • Existing Pi-local motion and trigger logic
  • Existing RoboVision camera feed and hardware access
  • LiveKit as the proven bidirectional audio transport
  • Infinicode mesh for remote management through livekit-1

Remove from the critical path

  • Scheduler session allocation before a robot can talk
  • Duplicate character and voice-stack interpretations
  • Multiple media owners opening the same ALSA/V4L2 devices
  • Camera availability tied to conversation sessions
  • Alias records such as separate BMW and VIXEN devices
03 / CONTRACT

Direct 1:1 call lifecycle

IDLE>MOTION>CONNECTING>GREETING>LISTENING>THINKING>SPEAKING>ENDED
RuleProduction contract
Room identityOne deterministic room per active robot call. The second start request returns the current call instead of creating another room.
Motion modeLocal motion opens the same RoboVoice call used by the web UI, with the robot as the headless browser participant.
Manual modeThe operator starts the same call from Control Center or CLI. Only the initiation source differs.
CameraRoboVision MJPEG remains always-on and independent of LiveKit calls. LiveKit video is optional for vision tools, not dashboard preview.
EventsRobot and RoboVoice emit state transitions to a thin event API. Events never block audio.
FailureIf Control Center or its database is down, the local motion-to-RoboVoice call still works.
04 / CONTROL API

Thin management API inside RoboVoice

Extend the proven backend instead of running a second scheduler database and state machine.

Robot registry

Canonical ID, display name, character, hardware profile, site, production mode and last heartbeat.

Session history

Call source, timestamps, state events, transcript, latency, errors, end reason and selected voice stack.

Remote commands

Start/stop call, arm motion, reconnect camera, media tests, restart runtime and update package.

Endpoint familyPurpose
/api/control/robotsRegistry, heartbeat, production mode, hardware inventory and effective configuration.
/api/control/sessionsStart, stop, active call, history, transcript, latency and end reason.
/api/control/eventsAppend-only lifecycle events and server-sent live updates.
/api/control/mediaAlways-on camera relay, microphone diagnostics and speaker test requests.
/api/control/configExisting RoboVoice characters, prompts, voice stacks and provider settings.
05 / UI

Port the complete Control Center

Fleet

Rich robot cards, live state, production mode, camera thumbnail, current character, latency, health and alerts.

Park

Spatial robot view, always-on camera, fullscreen operations, current conversation stage and quick controls.

Live operations

Current transcript, listening/thinking/speaking state, audio levels, errors, timers and remote stop.

Sessions

Persistent paged history, full transcripts, timeline, latency breakdown, selected stack and end reason.

Voice Studio

Keep the original RoboVoice call UI, browser devices, character editor, prompt editor and voice-stack editor.

Setup + diagnostics

Copy-ready commands, camera/audio tests, heartbeat, logs, update, permissions and audit trail.

06 / CLI

Small idempotent command surface

One control URL, one robot token, one runtime per Pi. Re-running setup repairs configuration instead of creating duplicates.

Start control hostlivekit-1
robopark hub up --robovoice-path C:\ROBOVOICE-main --port 47913 --lan --tailscale --auto-start
Provision robotPi
robopark robot install --name bmw --control-url http://192.168.0.9:47913 --token <robot-token> --profile usb-standard --motion always --auto-start
Always-on productionOperator
robopark production on bmw robopark production status bmw
Regular callOperator
robopark session start bmw robopark session stop bmw
Verify hardwareRemote
robopark test camera bmw robopark test audio bmw robopark test motion bmw robopark test call bmw --require-turn
Operate runtimeRemote
robopark status bmw robopark logs bmw --follow robopark restart bmw robopark update bmw
07 / RELIABILITY

Hard production rules

Single media owner

One Pi runtime opens camera, microphone and speaker. All tests request access through that owner.

Stable hardware profile

Match USB product identity and udev aliases, not volatile hw:2,0 indexes. Persist tested gain and volume.

Independent watchdogs

Camera, call and control reconnect independently. A camera fault does not restart voice; a UI fault does not stop motion.

Offline tolerance

Local motion continues using cached effective config. Events queue locally and upload after reconnect.

Canonical identity

One immutable robot ID with editable display name. BMW and VIXEN cannot become separate device records.

Evidence-based tests

A call passes only after transcript input, LLM output, TTS output and physical playback are all recorded.

08 / MIGRATION

BMW-first migration with rollback

PHASE 0

Freeze and measure

Record a successful RoboVoice web call and Pi local motion call. Capture configuration, latency and device paths. No architecture changes yet.

Gate: baseline saved
PHASE 1

Direct headless call

Point BMW motion directly at the existing RoboVoice call entrypoint. Remove scheduler allocation from this path while retaining current rollback command.

Gate: 10 real turns
PHASE 2

Native control events

Persist call lifecycle and transcripts from RoboVoice. Add Pi heartbeat and effective hardware/config reporting.

Gate: full history
PHASE 3

Port Control Center

Connect Fleet, Park, Sessions, Voice Studio and Setup pages to the RoboVoice-native control API and camera relay.

Gate: no old API calls
PHASE 4

Unattended BMW soak

Run motion sessions for four hours. Test reconnects, silence endings, repeated triggers, camera continuity and Control Center restart.

Gate: zero manual repair
PHASE 5

Fleet rollout

Apply the identical USB hardware profile and runtime to each robot. Keep per-robot differences limited to identity, character and site.

Gate: all five green
PHASE 6

Deprecate legacy scheduler path

Make old session-allocation endpoints read-only, export historical data, remove UI calls, then delete only after the rollback window.

Gate: 7-day stability
09 / MVP EXIT

Definition of production-ready

Acceptance gateRequired evidence
Motion-to-greetingBMW begins audible greeting within 1.5 seconds of accepted motion.
Real conversationAt least ten consecutive onsite turns persist user transcript, LLM response, TTS completion and robot playback.
Call paritySame RoboVoice AgentSession, character, model, endpointing and interruption behavior as the web UI call.
Always-on videoCamera remains visible before, during and after calls and reconnects automatically.
Failure isolationRestarting Control Center does not stop motion detection or an active conversation.
Remote recoveryOperator can inspect logs, test hardware, restart and update without onsite assistance.
SoakFour-hour BMW run and one-hour five-robot run complete without duplicate sessions or media ownership conflicts.