Skip to content

serp mini ivi

Oleksandr Geronime edited this page Jun 29, 2026 · 2 revisions

serp-mini-ivi

serp-mini-ivi — a SERP demonstration project modeled as a small automotive IVI (In-Vehicle Infotainment) system.

This project is intended to demonstrate SERP capabilities, not to serve as a polished production IVI stack. It shows how a non-trivial service architecture can be described in specs, generated, deployed in multiple topologies, inspected at runtime, and evolved through scoped AI sessions.

The project was built end-to-end with AI assistance: architecture, SerpIDL specs, implementation, debugging, and fixes were all produced through the SERP AI-driven workflow. Some areas may still be rough or incomplete; treat it as a living showcase of the process and platform.

Demonstrates a larger SERP workspace: 15+ services, multiple deployment topologies, HMI frontends, and generated infrastructure from declarative specs.


What's Included

Domain Services
Platform HALs VehicleHal, ClimateHal, AudioHal, RadioHal, LocationHal, BtGateway, PersistenceHal
System Services CarPropertyService, CarPowerManager, PersistenceService, CarNotificationManager
High-Level Services CarClimateManager, CarMediaManager, CarAudioManager, CarRadioManager, CarNavigationManager, CarCallManager, CarContactsManager, CarUserManager
HMI Console frontend, Qt Quick 6 graphical frontend

Deployment Variants

Variant Mode Transport HMI
monolith Single process inprocess Console
multiprocess_dbus_console Multiprocess DBus Terminal (mouse + keyboard)
multiprocess_dbus_qtquick Multiprocess DBus Qt Quick 6 graphical
multiprocess_grpc_qtquick Multiprocess gRPC Qt Quick 6 graphical

Build and Run

git clone https://github.com/OleksandrGeronime/serp-mini-ivi
cd serp-mini-ivi

# Generate code from specs:
./scripts/generate.sh

# Build a deployment:
./scripts/build.sh -d multiprocess_dbus_console

# Run:
./scripts/run.sh -d multiprocess_dbus_console

# Stop:
./scripts/stop.sh

Console HMI Controls

Input Action
18 Switch screens: Home, Media, Radio, Navigation, Phone, Climate, Settings, Vehicle
H / L or arrow keys Navigate within screens
Mouse Click interactive elements
Q Quit

Architecture Highlights

  • HAL layer → Manager layer → HMI layer: clean separation; each layer only talks to the one below via generated interfaces
  • Two HMI frontends share the exact same backend services via IHmiGateway, demonstrating a truly transport-agnostic architecture
  • Spec-first: all 15+ services are defined in specs/, generated code lives in gen/, hand-written logic lives in src/
  • Four deployments from the same service codebase — only the deployment specs differ

Exploring the Code

Path Contents
specs/serp.sidl Project workspace root
specs/interfaces/ All service interface contracts
specs/deployments/ Four deployment configurations
src/services/ Business logic implementations
gen/ Generated code (after running generate.sh)

What This Project Is Good For

  • Understanding how to structure a multi-service SERP project
  • SerpIDL interface design at scale
  • Deployment spec configuration for different topologies
  • Multiprocess architecture with DBus and gRPC transport
  • Comparing two HMI implementations over the same service boundary
  • Seeing an end-to-end SERP project created through AI-driven architecture, implementation, debugging, and fixes

What This Project Is Not

  • A production-ready automotive IVI platform
  • A reference implementation of automotive domain behavior
  • A guarantee that every screen, service, and deployment path is complete

Clone this wiki locally