Plataforma · SDK

Despliegue código en seis lenguajes, sobre un runtime que controla la caja.

El SDK MOS4 es un kit de desarrollo de aplicaciones embebidas agnóstico al lenguaje. Proporciona un runtime de contenedores, un puente MQTT en proceso, 89 interfaces protobuf tipadas y herramientas de consola para desarrolladores en Python, Rust, Lua, Go, C y C++. La plataforma controla red, vehículo, energía y almacenamiento; el equipo de ingeniería escribe la lógica de aplicación.

Arquitectura del SDK de MOS4: desarrolle, ejecute, pruebe, despliegue y opere su contenedor a través de una flota de dispositivos y la nube. La capa de plataforma está dibujada en cian; las tres cosas que usted posee — su código, su contenedor y su endpoint en la nube — están dibujadas en dorado.
Desarrollar → ejecutar → probar → desplegar → operar. La plataforma controla el runtime, los transportes y los servicios base (cian); usted posee su código, su contenedor y su endpoint en la nube (dorado).

Métricas clave

Los números que dimensionan la integración.

89 interfaces tipadas servicios en 16 paquetes de tipos compartidos
180 funciones de la plataforma superficies de servicio declaradas en el OS
10 s hot-swap micro service Rust, desde fin de compilación hasta primera llamada en dispositivo
<5% sobrecarga del contenedor CPU/RAM; ~10 MB RSS. Sobre de presupuesto del contenedor MCM.
Seis símbolos de lenguaje (Py, R, Lua, Go, C, ++) conectados por flechas a un único contorno de contenedor — acento ámbar en el contenedor

Runtimes de lenguaje

Seis lenguajes con imágenes base probadas.

  • Python

    numpy, scipy, PyTorch funcionan tal cual. Comience desde una imagen base verificada en CI.

  • Rust

    Primera clase. Una anotación #[component] conecta ciclo de vida, despacho y observabilidad.

  • C

    Envuelva librerías heredadas. Bindings nativos mediante la misma superficie de contenedor OCI.

  • C++

    Toolchain moderno. Misma superficie que C. SDK de compilación cruzada incluido.

  • Go

    Ejemplo de contenedor OCI con presupuesto de tamaño de imagen aplicado en CI.

  • Lua

    Intérprete estático-musl diminuto (~600 KB en disco). Scripting embebido para la lógica de operaciones, sin un runtime pesado.

Los ejemplos de contenedores OCI se incluyen con presupuestos de tamaño de imagen aplicados en CI en 15 pares (lenguaje, escenario). Las actualizaciones de la capa del sistema — como un bump del runtime CPython 3.12 — se propagan por toda la flota mediante un único cambio de digest; sin reconstrucciones del cliente.

Instalación

Añada el SDK con un comando.

Dos librerías cliente de referencia cubren Rust y Python. Otros lenguajes alcanzan los servicios MOS4 a través del puente MQTT — sin SDK específico del lenguaje requerido.

Cliente Rust

cargo add mos-sdk-client

Crate Rust. Genera proxies tipados y clientes en modo directo a partir de las 89 interfaces proto.

Cliente Python

pip install mos-sdk-client

Wheel Python. Misma superficie tipada, async-first, incluye corrutinas asyncio.

Lua, Go, C y C++ alcanzan la misma superficie de servicios a través del puente MQTT en proceso — ver la documentación de quickstart para ejemplos por lenguaje.

Puente MQTT

Cualquier cliente. Cualquier lenguaje. Sin SDK Munic.

MOS4 embebe un broker MQTT en proceso. Los payloads se aceptan como JSON plano o como el formato binario tipado; el JSON se transcodifica en la entrada. Un catálogo de servicios retenido permite a los clientes descubrir los servicios disponibles en el momento de la conexión.

Handshake del puente MQTT. Un contenedor Python usando paho-mqtt publica un payload JSON o binario tipado al tópico mos/rpc/MspService/LoadGraph. El broker MQTT en proceso recibe el mensaje y transcodifica el JSON a la llamada tipada en la entrada, luego despacha LoadGraph al servicio MSP. El servicio devuelve una respuesta; el broker la publica de vuelta en el tópico de respuesta para el cliente Python. Cualquier librería cliente MQTT, cualquier lenguaje, alcanza cualquier servicio MOS4 sin SDK Munic requerido.

sequenceDiagram
  participant Py as Contenedor Python<br/>(paho-mqtt)
  participant MQ as Broker MQTT<br/>(en proceso)
  participant Svc as Servicio MSP
  Py->>MQ: PUBLISH mos/rpc/MspService/LoadGraph<br/>payload JSON o tipado
  Note over MQ: transcodificar JSON a llamada tipada en la entrada
  MQ->>Svc: llamada tipada LoadGraph(graph)
  Svc-->>MQ: respuesta
  MQ-->>Py: PUBLISH mos/rpc/MspService/LoadGraph/reply
  Note over Py,MQ: cualquier librería cliente MQTT, cualquier lenguaje — sin SDK Munic requerido
El broker MQTT en proceso traduce los tópicos pub/sub a llamadas de servicio tipadas. Payloads JSON o binario tipado.

Cliente MQTT Python → servicio MOS4

import json
import paho.mqtt.client as mqtt

client = mqtt.Client()
client.connect("localhost", 1883)

# Publicar a cualquier interfaz de micro service a través del puente MQTT
client.publish(
    "mos/rpc/MspService/LoadGraph",
    payload=json.dumps(graph_json),
)

Contenedor → señales de obdstacks

Cualquier lenguaje de contenedor alcanza cualquier micro service mediante el puente MQTT. Un contenedor Python suscrito a topic mos/data/vehicle.speed recibe la señal decodificada y nombrada publicada por obdstacks — sin código de servicio, sin Rust, sin SDK Munic requerido.

Autoría de micro service Rust

Una anotación. Treinta líneas.

Los desarrolladores Rust que escriben un micro service nativo anotan un struct con #[component] y añaden una llamada build.rs. El framework genera el despacho de servicio, la creación de proxy, el cableado de ciclo de vida, los accesores de configuración, la instrumentación de observabilidad y un fake para pruebas unitarias.

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> {
        // su lógica — observabilidad y ciclo de vida son cableados por el framework
        Ok(Response { ok: true })
    }
}

// build.rs — una sola llamada genera el trait de servidor, proxy, fake, métricas
fn main() {
    build_api::generate_component_code(env!("CARGO_MANIFEST_DIR"), "src");
}

Los fakes generados compilan sin un daemon MOS4 en ejecución — las pruebas unitarias se ejecutan en cualquier host.

Medios en vivo

Streaming RTSP / ONVIF y WebRTC.

El micro service de captura de cámara expone rutas RTSP / ONVIF y WebRTC en vivo junto a sus entradas MIPI-CSI, GMSL2 y UVC. Las aplicaciones SDK suscritas sobre MQTT o el transporte de frames reciben frames GPU compartidos independientemente de la fuente. Ver Visión para la matriz de entradas completa.

Consola

Un binario. Shell, REST, web, serial.

Cuatro transportes, un proceso

El binario de consola expone cada micro service MOS4 registrado, clave de configuración y entrada de base de datos a través de HTTP REST + IU web, un shell interactivo y un shell serial — de forma simultánea, desde un único binario. Cero código de transporte por servicio.

Servicios sin fricción

services call <interface> <method> introspecciona cualquier servicio registrado. Para depuración en campo sin salir del dispositivo.

Runtime de contenedores

Aislamiento de contenedores de grado producción.

El gestor de contenedores aplica límites de CPU, memoria y E/S por contenedor como un contrato, no como un mejor esfuerzo. El análisis de archivos Docker Compose v3 permite reutilizar flujos de trabajo compose existentes. La CLI autónoma mcm está preinstalada en las imágenes de producción. Para observabilidad y telemetría de flota, ver Operaciones.

Sobrecarga

<5% CPU/RAM

RSS por contenedor

~10 MB

Aislamiento

aplicado

CLI

mcm (preinstalada)

Flujos impulsados desde la nube

Llame a cualquier micro service desde la nube a través del puente RPC.

El puente RPC enruta las llamadas JSON de clientes externos a cualquier servicio MOS4 registrado — incluidos los contenedores. method ListServices() expone el catálogo en vivo en tiempo de ejecución. Casos de uso: depuración remota, desbloqueo de situaciones de campo poco frecuentes y flujos híbridos donde un agente AI o un servicio en la nube impulsa el dispositivo. Ver Micro services para superficies del lado de la nube y patrones de integración.

El puerto RPC interno no está expuesto por defecto. El acceso externo se realiza a través del puente MQTT o el puente RPC — sin exposición directa de puerto para herramientas.

Commodities de plataforma

La infraestructura que su aplicación no escribe.

  • Redes

    Módem, WiFi, BTLE, GNSS. Conmutación automática; establezca la política mediante TOML. Almacenamiento en búfer sin conexión y carga oportunista cuando el plan de datos es limitado.

  • Vehículo

    CAN, OBD, obdstacks de 16 protocolos. Señales decodificadas sobre MQTT — sin SDK Munic requerido.

  • Energía

    Condiciones de activación, estrategia de carga de batería, suspensión/activación, programación de bajo consumo mediante política TOML configurable.

  • Almacenamiento

    A prueba de fallos de alimentación con nivelación de desgaste. API transaccional. Cuota por contenedor.

  • Configuración

    Ajustes de dispositivo centralizados. Impulsado por API. Desplegable mediante OTA.

  • Telemetría

    Protocolo MD21 — mensajería en vivo multiplexada, comprimida y bidireccional.

Explore el catálogo completo para ver todos los micro services disponibles y sus interfaces.

Lo que usted aporta vs lo que aportamos

División honesta.

Usted aporta

  • · Código de aplicación en Python, Rust, C, C++, Go o Lua.
  • · Experiencia de dominio — reglas de decodificación vehicular, modelos AI, lógica de negocio.
  • · Pruebas para su superficie de aplicación.
  • · El caso de uso y el contrato de datos.

Munic aporta

  • · SO, runtime, supervisor, hot-swap en 10 s.
  • · Commodities de plataforma: red, vehículo, energía, almacenamiento.
  • · 89 interfaces tipadas — una dependencia.
  • · Observabilidad, OTA de flota y pipeline de seguridad.

Preguntas frecuentes

Preguntas habituales

  • ¿Qué lenguajes incluyen imágenes base preconstruidas?

    Python, Rust, C, C++, Go y Lua — seis runtimes de lenguaje con ejemplos de contenedores OCI y presupuestos de tamaño de imagen aplicados en CI en 15 pares (lenguaje, escenario).

  • ¿Cómo funciona el puente MQTT?

    MOS4 embebe un broker MQTT en proceso — no se requiere un broker externo. Los payloads se aceptan como JSON plano o como el formato binario tipado; el JSON se transcodifica en la entrada. Un catálogo de servicios retenido permite a los clientes descubrir los servicios disponibles en el momento de la conexión. Cualquier librería cliente MQTT, cualquier lenguaje — alcanza los servicios MOS4 sin SDK Munic requerido.

  • ¿Qué tan rápido es el hot-swap?

    10 segundos desde el fin de la compilación hasta la primera llamada de servicio exitosa en un dispositivo real. Cuando un nuevo proceso registra un micro service con un component.id existente, el master detiene la instancia anterior, inyecta el estado serializado e inicia el reemplazo. Sin reflash. El hot-swap es una característica de los micro services Rust; los contenedores (Python, C, C++, Go) siguen una ruta de actualización OTA diferente.

  • ¿Cuál es el presupuesto de sobrecarga del contenedor?

    El sobre de presupuesto del contenedor MCM es inferior al 5% de sobrecarga de CPU/RAM y aproximadamente 10 MB de RSS por contenedor. La CLI autónoma mcm está preinstalada en las imágenes de producción.

  • ¿Está expuesto el puerto RPC interno para herramientas directas?

    El puerto RPC interno no está expuesto por defecto. El puente RPC enruta las llamadas JSON de clientes externos a cualquier servicio MOS4 registrado; use el puente MQTT o el puente RPC para acceso externo.

  • ¿Para qué sirve el puente RPC?

    El puente RPC llama a cualquier servicio MOS4 — incluidos los contenedores — desde la nube mediante API. Casos de uso: depuración remota, desbloqueo de situaciones de campo poco frecuentes y flujos híbridos donde un agente AI impulsa el dispositivo. No se necesita código de protocolo ni de conexión más allá de el servicio y un endpoint del lado de la nube.

Herramientas para desarrolladores

Herramientas con IA para desarrolladores de MOS4.

El paquete de desarrollador de MOS4 amplía el SDK con un conector MCP, un linter de configuración, lectores de logs y consultas de grafo de proyecto — para que las herramientas de IA que su equipo ya usa entiendan la plataforma. Disponible con ingeniería.

Ver Herramientas para desarrolladores →

El código es una ruta. Los motores no-code cubren procesado de señal, automatización de políticas, stacks de vehículo y pipelines de IA — elija la ruta que coincida con el trabajo.

¿Quiere un espacio de trabajo de muestra?

El quickstart cubre la superficie del SDK, la elección del lenguaje y el contrato de protocolo de wire.

¿Construyendo sobre MOS4?

Una respuesta del equipo de ingeniería, ~24 h. Sin presentación, sin NDA.

Hablar con ingeniería