Plattform · SDK
Code in sechs Sprachen ausliefern — auf einer Laufzeit, die die Box besitzt.
Das MOS4-SDK ist ein sprachagnostisches Embedded-Application-Development-Kit. Es bietet eine Container-Laufzeit, eine In-Process-MQTT-Bridge, 89 typisierte Protobuf-Schnittstellen und Konsolen-Tooling für Python-, Rust-, Lua-, Go-, C- und C++-Entwickler. Die Plattform verantwortet Netzwerk, Fahrzeug, Strom und Speicher; das Team schreibt Anwendungslogik.
Kennzahlen
Die Zahlen, die die Integration dimensionieren.
Sprach-Laufzeiten
Sechs Sprachen mit getesteten Basis-Images.
-
Python
numpy, scipy, PyTorch funktionieren wie gewohnt. Von einem CI-verifizierten Basis-Image starten.
-
Rust
Erstklassig. Eine #[component]-Annotation verdrahtet Lifecycle, Dispatch und Observability.
-
C
Legacy-Bibliotheken einbinden. Native Bindings über dieselbe OCI-Container-Oberfläche.
-
C++
Moderne Toolchain. Gleiche Oberfläche wie C. Cross-Compile-SDK bereitgestellt.
-
Go
OCI-Container-Beispiel mit CI-erzwungenem Image-Größen-Budget.
-
Lua
Tiny static-musl interpreter (~600 KB on disk). Embedded scripting for ops glue without a heavyweight runtime.
OCI-Container-Beispiele werden mit CI-erzwungenen Image-Größen-Budgets über 15 (Sprache, Szenario)-Paare geliefert. System-Schicht-Updates — ein CPython-3.12-Laufzeit-Bump zum Beispiel — propagieren über die Flotte via einer einzelnen Digest-Änderung; keine Kunden-Rebuilds.
Alle sechs SDK-Client-Sprachen teilen dieselbe Wire-Protokoll-Abdeckung — Request/Response, Server-Streaming, EventBus-Subscription — mit Quickstart-Snippets aus der Live-Test-Suite. Dieselben Protobuf-Definitionen und dieselbe MQTT-Bridge bedienen jede Sprache.
Installation
SDK in einem Kommando hinzufügen.
Zwei Referenz-Client-Bibliotheken decken Rust und Python ab. Andere Sprachen erreichen MOS4-Services über die MQTT-Bridge — kein sprachspezifisches SDK erforderlich.
Rust-Client
cargo add mos-sdk-client Rust-Crate. Generiert typisierte Proxies und Direkt-Modus-Clients aus den 89 Proto-Schnittstellen.
Python-Client
pip install mos-sdk-client Python-Wheel. Gleiche typisierte Oberfläche, async-first, mit asyncio-Coroutines.
Lua, Go, C und C++ erreichen dieselbe Service-Oberfläche über die In-Process-MQTT-Bridge — siehe die Quickstart-Dokumentation für sprachspezifische Beispiele.
MQTT-Bridge
Jeder Client. Jede Sprache. Kein Munic-SDK.
MOS4 bettet einen MQTT-Broker In-Prozess ein. Payloads werden als reines JSON oder als typisiertes binäres Format akzeptiert; JSON wird am Eingang transcodiert. Ein retained Service-Katalog ermöglicht Clients, verfügbare Services zur Verbindungszeit zu entdecken.
MQTT-Bridge-Handshake. Ein Python-Container mit paho-mqtt veröffentlicht einen JSON- oder typisierten-binären Payload auf dem Topic mos/rpc/MspService/LoadGraph. Der In-Prozess-MQTT-Broker empfängt die Nachricht und transcodiert JSON zum typisierten Aufruf am Eingang, dann leitet LoadGraph gegen den MSP-Service weiter. Der Service gibt eine Antwort zurück; der Broker veröffentlicht sie auf dem Reply-Topic für den Python-Client. Jede MQTT-Client-Bibliothek, jede Sprache erreicht jeden MOS4-Service ohne Munic-SDK.
sequenceDiagram participant Py as Python-Container<br/>(paho-mqtt) participant MQ as MQTT-Broker<br/>(in-process) participant Svc as MSP-Service Py->>MQ: PUBLISH mos/rpc/MspService/LoadGraph<br/>JSON oder typisierter Payload Note over MQ: JSON zu typisiertem Aufruf am Eingang transcodieren MQ->>Svc: typisierter Aufruf LoadGraph(graph) Svc-->>MQ: Antwort MQ-->>Py: PUBLISH mos/rpc/MspService/LoadGraph/reply Note over Py,MQ: beliebige MQTT-Client-Bibliothek, beliebige Sprache — kein Munic-SDK erforderlich
Python-MQTT-Client → MOS4-Service
import json
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("localhost", 1883)
# Über MQTT-Bridge zu jeder micro service-Schnittstelle publizieren
client.publish(
"mos/rpc/MspService/LoadGraph",
payload=json.dumps(graph_json),
) Container → obdstacks-Signale
Jede Container-Sprache erreicht jeden micro service über die MQTT-Bridge. Ein
Python-Container, der topic mos/data/vehicle.speed abonniert, empfängt
das dekodierte, benannte Signal, das von obdstacks veröffentlicht wird — kein Service-Code,
kein Rust, kein Munic-SDK erforderlich.
Rust-micro service-Authoring
Eine Annotation. Dreißig Zeilen.
Rust-Entwickler, die einen nativen micro service schreiben, annotieren eine Struct mit #[component] und fügen einen build.rs-Aufruf hinzu. Das Framework generiert Service-Dispatch, Proxy-Erstellung, Lifecycle-Verdrahtung, Config-Accessoren, Observability-Instrumentierung und einen Fake für Unit-Tests.
use mos_sdk::component;
#[component]
pub struct MyService {
config: MyConfig,
}
#[async_trait::async_trait]
impl provided::my::MyServiceServer for MyService {
async fn do_thing(&self, req: Request) -> Result<Response> {
// Ihre Logik — Observability und Lifecycle werden vom Framework verdrahtet
Ok(Response { ok: true })
}
}
// build.rs — einzelner Aufruf generiert Server-Trait, Proxy, Fake, Metriken
fn main() {
build_api::generate_component_code(env!("CARGO_MANIFEST_DIR"), "src");
} Generierte Fakes kompilieren ohne einen laufenden MOS4-Daemon — Unit-Tests laufen auf jedem Host.
Live-Medien
RTSP / ONVIF und WebRTC-Streaming.
Der Kamera-Capture-micro service stellt Live-RTSP / ONVIF- und WebRTC-Pfade neben seinen MIPI-CSI-, GMSL2- und UVC-Eingaben bereit. SDK-Anwendungen, die über MQTT oder den Frame-Transport abonnieren, empfangen gemeinsame GPU-Frames unabhängig von der Quelle. Siehe Vision für die vollständige Eingabe-Matrix.
Konsole
Ein Binary. Shell, REST, Web, Seriell.
Vier Transporte, ein Prozess
Das Konsolen-Binary stellt jeden registrierten MOS4-micro service, Config-Schlüssel und Datenbankeintrags über HTTP REST + Web-UI, eine interaktive Shell und eine serielle Shell bereit — gleichzeitig, aus einem Binary. Null Pro-Service-Transport-Code.
Zero-Friction-Services
services call <schnittstelle> <methode> inspektiert jeden registrierten
Service. Feld-Debug, am Gerät.
Container-Laufzeit
Produktions-Container-Isolation.
Der Container-Manager erzwingt CPU-, Memory- und I/O-Limits pro Container als Vertrag — nicht
als Best-Effort. Docker-Compose-v3-Datei-Parsing nutzt bestehende Compose-Workflows nach. Das mcm Standalone-CLI ist auf Produktions-Images vorinstalliert. Für Observability und Flotten-Telemetrie
siehe Operations.
Overhead
<5% CPU/RAM
RSS pro Container
~10 MB
Isolation
erzwungen
CLI
mcm (vorinstalliert)
Cloud-gesteuerte Flows
Jeden micro service aus der Cloud über die RPC-Bridge aufrufen.
Die RPC-Bridge leitet JSON-Aufrufe von externen Clients zu jedem registrierten MOS4-Service —
einschließlich Container. method ListServices() stellt den Live-Katalog
zur Laufzeit bereit. Anwendungsfälle: Remote-Debug, Entsperren seltener Feldsituationen und Hybrid-Flows,
bei denen ein KI-Agent oder ein Cloud-Service das Gerät steuert. Siehe micro services für Cloud-seitige Oberflächen und Integrations-Muster.
Der interne RPC-Port ist standardmäßig nicht verfügbar. Externer Zugriff geht über die MQTT-Bridge oder die RPC-Bridge — keine direkte Port-Exposition für Tooling.
Plattform-Commodities
Die Infrastruktur, die Ihre App nicht schreibt.
-
Netzwerke
Modem, WiFi, BTLE, GNSS. Auto-Failover; Policy via TOML setzen. Offline-Pufferung und opportunistischer Upload bei begrenztem Datentarif.
-
Fahrzeug
CAN, OBD, 16-Protokoll-obdstacks. Dekodierte Signale über MQTT — kein Munic-SDK erforderlich.
-
Strom
Wake-Bedingungen, Batterieladestrategie, Sleep/Wake, Low-Power-Scheduling via konfigurierbarer TOML-Policy.
-
Speicher
Stromausfallsicher mit Wear-Levelling. Transaktionale API. Pro-Container-Quota.
-
Konfiguration
Zentralisierte Geräteeinstellungen. API-gesteuert. OTA-deploybar.
-
Telemetrie
MD21-Protokoll — multiplexiert, komprimiert, bidirektionales Live-Messaging.
Vollständigen Katalog durchsuchen, um alle verfügbaren micro services und ihre Schnittstellen zu sehen.
Was Sie bringen vs. was wir bringen
Ehrliche Aufteilung.
Sie bringen
- · Anwendungscode in Python, Rust, C, C++, Go oder Lua.
- · Domänenexpertise — Fahrzeugdekodierregeln, KI-Modelle, Geschäftslogik.
- · Tests für Ihre Anwendungsoberfläche.
- · Den Use-Case und den Datenvertrag.
Munic bringt
- · OS, Laufzeit, Supervisor, Hot-Swap in 10 s.
- · Plattform-Commodities: Netzwerk, Fahrzeug, Strom, Speicher.
- · 89 typisierte Schnittstellen — eine Abhängigkeit.
- · Observability, Flotten-OTA und Sicherheits-Pipeline.
FAQ
Häufig gestellte Fragen
-
Welche Sprachen werden mit vorgefertigten Basis-Images geliefert?
Python, Rust, C, C++, Go und Lua — sechs Sprach-Laufzeiten mit OCI-Container-Beispielen und CI-erzwungenen Image-Größen-Budgets über 15 (Sprache, Szenario)-Paare.
-
Wie funktioniert die MQTT-Bridge?
MOS4 bettet einen MQTT-Broker In-Prozess ein — kein externer Broker erforderlich. Payloads werden als reines JSON oder als typisiertes binäres Format akzeptiert; JSON wird am Eingang transcodiert. Ein retained Service-Katalog ermöglicht Clients, verfügbare Services zur Verbindungszeit zu entdecken. Jede MQTT-Client-Bibliothek, jede Sprache — erreicht MOS4-Services ohne Munic-SDK.
-
Wie schnell ist Hot-Swap?
10 Sekunden vom Ende des Compilierens bis zum ersten erfolgreichen Service-Aufruf auf einem echten Gerät. Wenn ein neuer Prozess einen micro service mit einer bestehenden component.id registriert, stoppt der Master die alte Instanz, injiziert serialisierten Zustand und startet den Ersatz. Kein Reflash. Hot-Swap ist eine Rust-micro service-Funktion; Container (Python, C, C++, Go) folgen einem anderen OTA-Update-Pfad.
-
Was ist das Container-Overhead-Budget?
Das MCM-Container-Budget-Envelope liegt unter 5% CPU/RAM-Overhead und ca. 10 MB RSS pro Container. Das mcm-Standalone-CLI ist auf Produktions-Images vorinstalliert.
-
Ist der interne RPC-Port für direktes Tooling verfügbar?
Der interne RPC-Port ist standardmäßig nicht verfügbar. Die RPC-Bridge leitet JSON-Aufrufe von externen Clients zu jedem registrierten MOS4-Service weiter; MQTT-Bridge oder RPC-Bridge für externen Zugriff verwenden.
-
Wofür ist die RPC-Bridge?
Die RPC-Bridge ruft jeden MOS4-Service — einschließlich Container — aus der Cloud via API auf. Anwendungsfälle: Remote-Debug, Entsperren seltener Feldsituationen und Hybrid-Flows, bei denen ein KI-Agent das Gerät steuert. Kein Protokoll- oder Verdrahtungs-Code über die Services und einen Cloud-seitigen Endpunkt hinaus.
Entwicklerwerkzeuge
KI-bewusste Werkzeuge für MOS4-Entwickler.
Das MOS4-Entwicklerpaket erweitert das SDK um einen MCP-Connector, einen Konfigurationslinter, Log-Reader und Projektgraph-Abfragen — damit die KI-Tools, die Ihr Team bereits verwendet, die Plattform verstehen. Verfügbar mit Engineering.
Entwicklerwerkzeuge ansehen →Code ist ein Pfad. Die No-Code-Engines decken Signalverarbeitung, Policy-Automation, Fahrzeug-Stacks und KI-Funnels ab — wählen Sie den Pfad, der zur Aufgabe passt.
Einen Beispiel-Workspace gewünscht?
Der Quickstart deckt die SDK-Oberfläche, die Sprachwahl und den Wire-Protokoll-Vertrag ab.