Un paquet signé reçoit un ensemble limité de capacités matérielles, MAVLink, télémétrie, mission et réseau, s’exécute séparément et communique avec l’hôte par IPC vérifiable. Une panne d’extension ne doit pas arrêter les services critiques de vol.
Le modèle d’extensions et la CLI sont un contrat cible ; registre, racine de signature et SDK public KairOS ne sont pas encore publiés.
Dépôt KairOS ↗Sur cette page +
Cinq frontières de protection
Paquet
Une extension est emballée en .kairosplug avec manifeste, version, point d’entrée, capacités demandées et signature.
Confiance
La signature Ed25519 est vérifiée avant extraction ; la liste de révocation s’applique au démarrage. Les paquets non signés sont permis uniquement en mode développeur.
Accord de l’opérateur
Les droits sont présentés avant installation ; les droits sensibles nécessitent une confirmation supplémentaire distincte.
Frontière de processus
Chaque plugin s’exécute dans son sous-processus/cgroup avec limites de CPU, mémoire et PID.
IPC à capacités
Le RPC msgpack par socket Unix vérifie le jeton de capacité à chaque appel d’API hôte.
Les droits sont regroupés par ressource réelle
| Groupe | Exemples de capacités |
|---|---|
| Matériel | UART, I²C, SPI, GPIO, USB serial/UVC, CSI |
| MAVLink | Lecture, écriture et enregistrement d’un composant propre |
| Télémétrie | Abonnement, extension et publication d’événements |
| Capteurs / charge utile | Enregistrer une interface de capteur ou de charge utile |
| Mission | Lire, écrire et enregistrer des données de mission |
| Réseau | Sortie HTTPS uniquement vers la liste autorisée du manifeste |
Un droit ne donne pas accès à tout le système. Une autorisation UART doit désigner un appareil précis ou un accès médié ; les sorties réseau doivent se limiter aux domaines annoncés. L’opérateur peut révoquer un accord dans Mission Control.
Manifeste et contexte minimal du plugin
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)},
)Installation, droits, journaux et tests
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 vérifie paquet et signature, puis affiche les droits demandés. enable lance le processus après accord seulement. info et perms servent à l’audit, logs au diagnostic et test à la création locale. La suppression doit arrêter le processus et effacer son état limité sans toucher les autres extensions.
Trois plugins intégrés et des extensions d’appareils
geofence
Vérifie la position par rapport aux zones autorisées et publie un événement observable.
telemetry-logger
Enregistre les flux de télémétrie choisis avec limite de volume et cycle de vie explicite.
mavlink-inspector
Affiche les trames pour le diagnostic sans modifier l’état de vol par défaut.
Caméra thermique
FLIR Lepton USB UVC, Y16 radiométrique, Celsius, palette/isotherme et interface caméra MAVLink.
MAVLink Gimbal v2
Pont vers un contrôleur externe, commande/état d’attitude et composant 154.
Séparer la première version des étapes suivantes
| Première version cible | Étape suivante |
|---|---|
| Installation locale signée | Registre hébergé avec recherche |
| Application des capacités à chaque appel IPC | Paquet kairos_sdk public autonome |
| Éléments intégrés et CLI | Générateur de structure et modèles |
| Examen et révocation des droits | Installation depuis une URL Git |
| Exécuteur de tests | Couche de pilotes partagée et documentation d’auteur complète |