Um pacote assinado recebe um conjunto limitado de capacidades de hardware, MAVLink, telemetria, missão e rede, executa-se num processo independente e comunica com o anfitrião por IPC verificável. Uma falha da extensão não deve parar serviços críticos de voo.
O modelo de extensões e a CLI são descritos como contrato previsto; registo, raiz de assinatura e SDK público KairOS ainda não foram lançados.
Repositório KairOS ↗Nesta página +
Cinco limites de proteção
Pacote
A extensão é empacotada em .kairosplug com manifesto, versão, ponto de entrada, capacidades pedidas e assinatura.
Confiança
A assinatura Ed25519 é verificada antes da extração; a lista de revogação aplica-se no arranque. Pacotes não assinados só são permitidos no modo de desenvolvimento.
Autorização do operador
As permissões são apresentadas antes da instalação; permissões sensíveis exigem confirmação adicional separada.
Limite de processo
Cada plugin executa-se no próprio subprocesso/cgroup com limites de CPU, memória e PID.
IPC de capacidades
RPC msgpack por socket Unix verifica o token de capacidade em cada chamada à API do anfitrião.
Permissões agrupadas pelo recurso real
| Grupo | Exemplos de capacidades |
|---|---|
| Hardware | UART, I²C, SPI, GPIO, USB serial/UVC, CSI |
| MAVLink | Leitura, escrita e registo de um componente próprio |
| Telemetria | Subscrição, extensão e publicação de eventos |
| Sensores / carga útil | Registo de sensor ou interface de carga útil |
| Missão | Leitura, escrita e registo de dados de missão |
| Rede | Saída HTTPS apenas para a lista permitida do manifesto |
Uma permissão não significa acesso direto a todo o sistema. Por exemplo, UART deve conceder um dispositivo específico ou identificador mediado, e a saída de rede apenas domínios previamente declarados. O operador pode revogar a autorização em Mission Control.
Manifesto e contexto mínimo do 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)},
)Instalação, permissões, registos e testes
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 verifica pacote e assinatura e mostra as permissões pedidas. enable inicia o processo apenas após autorização. info e perms servem para auditoria, logs para diagnóstico e test para o fluxo local do autor. A remoção deve parar o processo e limpar o seu estado delimitado sem tocar noutras extensões.
Três plugins básicos e extensões de dispositivos
geofence
Verifica a posição relativamente às zonas permitidas e publica um evento observável.
telemetry-logger
Regista os fluxos de telemetria selecionados com limite de volume e ciclo de vida explícito.
mavlink-inspector
Mostra tramas para diagnóstico sem alterar o estado de voo por predefinição.
Câmara térmica
FLIR Lepton USB UVC, Y16 radiométrico, Celsius, paleta/isoterma e interface de câmara MAVLink.
MAVLink Gimbal v2
Ponte de controlador externo, comandos e estado de atitude e componente 154.
Separação entre a primeira versão e as etapas seguintes
| Primeira versão prevista | Etapa seguinte |
|---|---|
| Instalação local assinada | Registo alojado com pesquisa |
| Aplicação das capacidades em cada IPC | Pacote público independente kairos_sdk |
| Plugins integrados e CLI | Gerador de projetos e modelos |
| Revisão e revogação de permissões | Instalação a partir de URL Git |
| Executor de testes | Camada comum de controladores e documentação completa para autores |