Sobre o projeto

Linura é uma camada de sistema experimental e orientada a intenções para Linux, que visa converter objetivos humanos em estado de máquina declarativo, controlado por políticas e verificado. Em vez de traduzir linguagem natural em comandos de shell, captura intenções estruturadas e duradouras, resolve capacidades e conflitos, deriva o estado desejado e encaminha cada mutação gerida através de um único ciclo de vida de autoridade canónico. O projeto combina duas ideias, mantendo as suas fronteiras de confiança separadas. O plano de autoridade/controlo fornece um modelo Linux tipado, fornecedores, um ciclo de vida de mutação em onze fases (pedido/intenção, observar, planear, validar, autorizar, preparar, executar, verificar, confirmar, auditar, reconciliar), decisões de política e aprovação, privilégio restrito, verificação independente, confirmação resistente a falhas, reconciliação e auditoria. O plano de inteligência acrescenta intenção persistente do utilizador, configurações reutilizáveis, uma Biblioteca local-first, um grafo do sistema, composição de capacidades, resolução de dependências e conflitos, proveniência semântica, agentes especializados e experiência de primeiro arranque. O plano de controlo é utilizável sem IA, e o plano de inteligência pode ser substituído sem alterar o plano de autoridade. Conceitos-chave incluem Configurações (Setups) — fatias reutilizáveis e versionadas de intenção, como rust-development ou postgresql-development — e Perfis de Máquina (composições de máquina inteira). As Configurações armazenam intenção portátil, composição e restrições, em vez de histórico de shell ou instantâneos do sistema de ficheiros; as exportações transportam referências a segredos, nunca valores de segredos. Reutilizar uma configuração implica sempre reobservar a máquina alvo, resolver novamente as capacidades, derivar novo estado desejado e gerar um novo plano antes de qualquer mutação. Instantâneos exatos permanecem um mecanismo separado de reversão/recuperação. Invariantes declarados incluem: linurad corre sem privilégios; não existe API genérica de execução privilegiada de shell; os agentes não recebem qualquer handle de executor privilegiado; a linguagem natural produz uma IntentProposal, nunca texto executável; o estado gerido mantém proveniência semântica que explica porque existe; estado desconhecido ou não suportado falha em modo fechado para mutações; o sucesso do executor é tratado como evidência de despacho, não como prova do estado resultante; e a operação determinística local, o uso da Biblioteca e a recuperação funcionam sem rede ou acesso a modelos. O repositório está organizado como um workspace Rust com crates para core, intent, graph, capability SDK, planner, provenance, agent runtime, policy, protocol, provider SDK, SDK facade, control, lifecycle, bootstrap, migrations e update, além de aplicações para linurad, linuractl, first boot, control center, agent UI e uma shell Quickshell/QML. Inclui também bindings, capabilities, workflows, surfaces, agents, executors, interfaces, schemas, profiles, packaging e docs. O estado é v0.9.0, descrito como experimental, com um Experimental First Boot e um ambiente de referência suportado; a versão imutável é verificada de forma independente. O primeiro alvo de perfil de estação de trabalho interativa é deliberadamente estreito (Arch Linux, systemd, Wayland/Hyprland, NetworkManager, PipeWire, BlueZ, UDisks2, Polkit, Btrfs/Snapper), com arch-hyprland-v1 posicionado como candidato de desenvolvimento para v0.10, em vez de fazer parte do limite de suporte atual. O desenvolvimento segue uma ordem estreita de fatias verticais, e o portão de qualidade do bootstrap fixa Rust 1.98.0 com comandos fmt, clippy, test e repository-check. Licenciado sob Apache 2.0.