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.
Métricas clave
Los números que dimensionan la integración.
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
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.