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.

MOS4-SDK-Architektur: Ihren Container entwickeln, ausführen, testen, ausliefern und betreiben — über eine Geräteflotte und die Cloud hinweg. Die Plattformebene ist in Cyan dargestellt; die drei Dinge, die Ihnen gehören — Ihr Code, Ihr Container und Ihr Cloud-Endpunkt — sind in Gold dargestellt.
Entwickeln → ausführen → testen → ausliefern → betreiben. Die Plattform verantwortet Laufzeit, Transporte und Commodities (Cyan); Ihnen gehören Ihr Code, Ihr Container und Ihr Cloud-Endpunkt (Gold).

Kennzahlen

Die Zahlen, die die Integration dimensionieren.

89 typisierte Schnittstellen Services über 16 gemeinsame Typ-Pakete
180 Plattform-Features deklarierte Service-Oberflächen im OS
10 s Hot-Swap Rust-micro service, Ende-Compilierung bis zum ersten Service-Aufruf auf Gerät
<5% Container-Overhead CPU/RAM; ~10 MB RSS. MCM-Container-Budget-Envelope.
Sechs Sprach-Symbole (Py, R, Lua, Go, C, ++), die mit Pfeilen in eine einzelne Container-Umriss-Form fließen — Bernstein auf dem Container

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
In-Prozess-MQTT-Broker übersetzt Pub/Sub-Topics in typisierte Service-Aufrufe. JSON oder typisierte binäre Payloads.

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.

Bauen Sie auf MOS4?

Eine Antwort vom Engineering-Team, ~24 h. Kein Deck, kein NDA.

Mit Engineering sprechen