Skip to main content

Components

CarMate runs as a Docker Compose stack on the Linux Compute Node. This page describes each containerized service: its purpose, inputs and outputs, configuration, and source location.

For the overall data flow between components, see the Architecture page.


Eclipse AutoWRX SDV Runtime

PropertyValue
Service namesdv_runtime
Imageghcr.io/eclipse-autowrx/sdv-runtime:latest
Sourceeclipse-autowrx
NetworkHost

Purpose

The Eclipse AutoWRX SDV Runtime is the primary middleware layer that manages the vehicle software stack. It hosts the Eclipse Kuksa Databroker and provides the core SDV service orchestration for the CarMate blueprint.

Configuration

VariableDefaultDescription
RUNTIME_NAMECarMateDisplay name for the runtime instance

Eclipse Mosquitto MQTT Broker

PropertyValue
Service namemqtt
Imageeclipse-mosquitto:2.0
Sourceeclipse/mosquitto
Config volume./mosquitto/config:/mosquitto/config

Purpose

The MQTT broker is the central message bus for all sensor data entering the Compute Node. Both the CARLA simulator bridge and the MCU node publish raw telemetry to MQTT topics, which downstream providers then consume.

Topics

TopicPublisherConsumerSignal
carla/vehicle/speedCARLA-Kuksa ProviderMQTT-Kuksa ProviderVehicle speed (km/h)
carla/vehicle/latCARLA-Kuksa ProviderMQTT-Kuksa ProviderGPS latitude
carla/vehicle/lonCARLA-Kuksa ProviderMQTT-Kuksa ProviderGPS longitude
carla/vehicle/altCARLA-Kuksa ProviderMQTT-Kuksa ProviderAltitude (m)
carla/vehicle/wetnessCARLA-Kuksa ProviderMQTT-Kuksa ProviderRoad wetness / humidity (%)
mcu/temperatureMCU Node (ThreadX)MQTT-Kuksa ProviderAmbient temperature (°C)
compute/colorCarMate AgentMQTT-Kuksa ProviderAmbient lighting color command

Eclipse Zenoh Router

PropertyValue
Service namezenoh
Imageeclipse/zenoh
Sourceeclipse-zenoh/zenoh
NetworkHost

Purpose

The Zenoh router is the uProtocol transport layer used for internal service-to-service communication on the Compute Node. All uProtocol RPC calls between CarMate I/O, the CarMate Agent, and the Vehicle Data Accessor are routed through Zenoh.


MQTT-Kuksa Provider

PropertyValue
Service namemqtt_provider
Build contextcompute/MQTT_KUIKSA_Provider/
Sourcecompute/MQTT_KUIKSA_Provider/mqtt_kuksa_provider.py
NetworkHost

Purpose

The MQTT-Kuksa Provider bridges the MQTT message bus to the Eclipse Kuksa Databroker. It subscribes to all vehicle and sensor MQTT topics, translates the raw values to VSS signal paths, and writes them into the Kuksa Databroker via gRPC.

Signal Mapping

MQTT TopicVSS Signal Path
carla/vehicle/speedVehicle.Speed
carla/vehicle/latVehicle.CurrentLocation.Latitude
carla/vehicle/lonVehicle.CurrentLocation.Longitude
carla/vehicle/altVehicle.CurrentLocation.Altitude
carla/vehicle/wetnessVehicle.Exterior.Humidity
mcu/temperatureVehicle.Cabin.HVAC.AmbientAirTemperature

Configuration

Configured directly in mqtt_kuksa_provider.py:

ParameterDefaultDescription
MQTT_BROKERlocalhostMQTT broker hostname
MQTT_PORT1884MQTT broker port
KUKSA_HOSTlocalhostKuksa Databroker gRPC hostname
KUKSA_PORT55555Kuksa Databroker gRPC port

CARLA-Kuksa Provider

PropertyValue
Service namecarla_provider
Build contextcompute/Carla_Provider/
Sourcecompute/Carla_Provider/carla_provider.py
NetworkHost

Purpose

The CARLA-Kuksa Provider connects the CARLA driving simulator to the MQTT message bus. It reads vehicle dynamics data from a CARLA actor over the CARLA Python API and publishes each value to the corresponding MQTT topic in real time.

When started with the --nocarla flag (the default in the Dockerfile), it generates mock telemetry data instead of connecting to a real CARLA server. This allows the full CarMate stack to run and be evaluated without simulation hardware.

Modes

ModeStart CommandUse Case
Mock (default)python carla_provider.py --nocarlaEvaluation without CARLA
CARLApython carla_provider.pyReal simulation

Configuration

Configured directly in carla_provider.py:

ParameterDefaultDescription
CARLA_HOST192.168.43.249IP address of the Windows machine running CARLA
CARLA_PORT2000CARLA server port
MQTT_BROKERlocalhostMQTT broker hostname
MQTT_PORT1884MQTT broker port

Eclipse Kuksa Databroker

PropertyValue
Hosted bysdv_runtime container
ProtocolgRPC
Default port55555
Sourceeclipse-kuksa/kuksa-databroker

Purpose

The Eclipse Kuksa Databroker is the central vehicle signal store. It provides a gRPC API that other services use to read, write, and subscribe to VSS-aligned vehicle signals. All sensor data ingested through the MQTT-Kuksa Provider is stored here as typed VSS values.

The Databroker acts as the single source of truth for vehicle state in the CarMate blueprint.


Vehicle Data Accessor

PropertyValue
Service namevehicle_data_accessor
Build contextcompute/Vehicle_data_accessor/
Sourcecompute/Vehicle_data_accessor/vehicle_data_accessor.py
NetworkHost

Purpose

The Vehicle Data Accessor is a bridge service between the Kuksa Databroker and the CarMate Agent. It reads the current values of all relevant VSS signals from the Databroker via gRPC and exposes them in a structured format that the CarMate Agent can consume when building LLM prompts.

Signals Read

All signals listed in the Signal Mapping table in the MQTT-Kuksa Provider section above.


CarMate Agent

PropertyValue
Service namecarmate_agents
Build contextcompute/carmate_agents/
Sourcecompute/carmate_agents/carmate_agents.py
NetworkHost

Purpose

The CarMate Agent is the AI reasoning core of the blueprint. It acts as a uProtocol RPC server, receiving text queries from CarMate I/O, enriching them with real-time vehicle context from the Vehicle Data Accessor, calling the configured LLM, and returning the AI-generated response.

Supported LLM Backends

ProviderAI_PROVIDER valueModel (default)
Ollama (local)ollamaphi3
OpenAIopenaigpt-4o-mini
Google Geminigeminigemini-1.5-flash
xAI Grokgrokgrok-beta
Groqgroqllama-3.3-70b-versatile

VSS Resource Map

The agent maps numeric uProtocol resource IDs to VSS signal names:

Resource IDSignal
1001Speed
1002Latitude
1003Longitude
1004Altitude

Configuration

All AI configuration is in compute/carmate_agents/carmate_agents.py under the HARDCODED AI CONFIGURATION section. See the Configuration Reference in the Getting Started guide for full details.


CarMate I/O

PropertyValue
Service namecarmate_io
Build contextcompute/car_mate_io/
Sourcecompute/car_mate_io/car_mate_io.py
NetworkHost
Web UI port5000

Purpose

CarMate I/O is the driver-facing component. It is a Flask web application that provides:

  • Speech-to-Text (STT) — Records the driver's spoken input and converts it to text using the speech_recognition library
  • Text-to-Speech (TTS) — Converts the AI-generated text response back to speech for the driver
  • Web UI — The driver interaction panel accessible at http://localhost:5000
  • Cluster display — Serves the instrument cluster visualization (static assets in compute/car_mate_io/static/)
  • uProtocol RPC client — Sends the transcribed driver query to the CarMate Agent and receives the response

Endpoints

EndpointMethodDescription
/GETMain driver Web UI
/listenPOSTTriggers STT recording and returns transcribed text
/speakPOSTAccepts text and returns synthesized audio
/queryPOSTSends a text query to the CarMate Agent via uProtocol and returns the response