-
Notifications
You must be signed in to change notification settings - Fork 0
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.
| 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 |
| 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 |
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| Input | Action |
|---|---|
1–8
|
Switch screens: Home, Media, Radio, Navigation, Phone, Climate, Settings, Vehicle |
H / L or arrow keys |
Navigate within screens |
| Mouse | Click interactive elements |
Q |
Quit |
- 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 ingen/, hand-written logic lives insrc/ - Four deployments from the same service codebase — only the deployment specs differ
| 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) |
- 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
- A production-ready automotive IVI platform
- A reference implementation of automotive domain behavior
- A guarantee that every screen, service, and deployment path is complete
Getting Started
The Development Model
Architecture Language
Code Generator
- Generator Overview
- Generated Code Layout
- Deployment Configurations
- Lifecycle Backends
- CMake Integration
Framework Internals
- Core Concepts
- Services & Lifecycle
- Methods
- Properties
- Notifications
- Timers & Watchdog
- Promises & Async
- Streams
- Commands
- Logging
- Test Engine
- Transports
- Runtime & Debug Tools
VS Code Plugin
Examples