Un paquete firmado recibe un conjunto limitado de capacidades de hardware, MAVLink, telemetría, misión y red, se ejecuta en un proceso independiente y se comunica con el anfitrión mediante IPC verificable. Un fallo de la extensión no debe detener servicios críticos de vuelo.
El modelo de extensiones y la CLI se describen como contrato previsto; el registro, la raíz de firma y el SDK público de KairOS aún no se han publicado.
Repositorio de KairOS ↗En esta página +
Cinco límites de protección
Paquete
La extensión se empaqueta en .kairosplug con manifiesto, versión, punto de entrada, capacidades solicitadas y firma.
Confianza
La firma Ed25519 se verifica antes de descomprimir; la lista de revocación se aplica al arrancar. Los paquetes sin firma solo se permiten en modo desarrollador.
Autorización del operador
Los permisos se muestran a la persona antes de instalar; los permisos sensibles requieren una confirmación adicional independiente.
Límite de proceso
Cada complemento se ejecuta en su propio subproceso/cgroup con límites de CPU, memoria y PID.
IPC de capacidades
RPC msgpack mediante socket Unix verifica el token de capacidad en cada llamada a la API del anfitrión.
Los permisos se agrupan por recurso real
| Grupo | Ejemplos de capacidades |
|---|---|
| Hardware | UART, I²C, SPI, GPIO, USB serial/UVC, CSI |
| MAVLink | Lectura, escritura y registro de un componente propio |
| Telemetría | Suscripción, ampliación y publicación de eventos |
| Sensores / carga útil | Registro de un sensor o interfaz de carga útil |
| Misión | Lectura, escritura y registro de datos de misión |
| Red | Salida HTTPS solo a la lista permitida del manifiesto |
Un permiso no significa acceso directo a todo el sistema. Por ejemplo, el permiso UART debe conceder un dispositivo concreto o un identificador mediado, y la salida de red, solo dominios declarados previamente. El operador puede revocar la autorización desde Mission Control.
Manifiesto y contexto mínimo del complemento
name: cell-balance-monitor
version: 0.1.0
agent:
entry: cell_balance:run
capabilities:
- telemetry.read
- event.publishfrom kairos_sdk import PluginContext
async def run(ctx: PluginContext):
async for battery in ctx.telemetry.subscribe("telemetry.battery"):
cells = battery.get("cells", [])
if cells and max(cells) - min(cells) > 0.15:
await ctx.events.publish(
"alert.cell_imbalance",
{"spread_v": max(cells) - min(cells)},
)Instalación, permisos, registros y pruebas
kairos plugin install ./thermal-cam.kairosplug
kairos plugin enable thermal-cam
kairos plugin list
kairos plugin disable <name>
kairos plugin remove <name>
kairos plugin info <name>
kairos plugin perms <name>
kairos plugin logs <name>
kairos plugin test <path>install comprueba el paquete y la firma y después muestra los permisos solicitados. enable inicia el proceso solo después de la autorización. info y perms sirven para auditoría; logs, para diagnóstico; test, para el flujo local del autor. La eliminación debe detener el proceso y limpiar su estado acotado sin afectar a otras extensiones.
Tres complementos básicos y extensiones de dispositivos
geofence
Comprueba la posición respecto a las zonas permitidas y publica un evento observable.
telemetry-logger
Registra los flujos de telemetría seleccionados con límite de volumen y ciclo de vida explícito.
mavlink-inspector
Muestra tramas para diagnóstico sin modificar el estado de vuelo por defecto.
Cámara térmica
FLIR Lepton USB UVC, Y16 radiométrico, grados Celsius, paleta/isoterma e interfaz de cámara MAVLink.
MAVLink Gimbal v2
Puente de controlador externo, comandos y estado de actitud y componente 154.
Separación entre la primera versión y las siguientes etapas
| Primera versión prevista | Siguiente etapa |
|---|---|
| Instalación local firmada | Registro alojado con búsqueda |
| Aplicación de capacidades en cada IPC | Paquete público independiente kairos_sdk |
| Complementos integrados y CLI | Generador de proyectos y plantillas |
| Revisión y revocación de permisos | Instalación desde URL de Git |
| Ejecutor de pruebas | Capa compartida de controladores y documentación completa para autores |