À propos du projet
Linura est une couche système expérimentale, pilotée par l'intention, pour Linux, qui vise à convertir des objectifs humains en un état machine déclaratif, contrôlé par des politiques et vérifié. Plutôt que de traduire le langage naturel en commandes shell, elle capture une intention structurée durable, résout les capacités et les conflits, dérive l'état souhaité et achemine chaque mutation gérée via un cycle de vie d'autorité canonique unique.
Le projet combine deux idées tout en gardant leurs frontières de confiance séparées. Le plan d'autorité/de contrôle fournit un modèle Linux typé, des fournisseurs, un cycle de vie de mutation en onze étapes (requête/intention, observation, planification, validation, autorisation, préparation, exécution, vérification, validation finale, audit, réconciliation), des décisions de politique et d'approbation, un privilège restreint, une vérification indépendante, une validation finale résistante aux pannes, une réconciliation et un audit. Le plan d'intelligence ajoute une intention utilisateur persistante, des configurations réutilisables, une bibliothèque locale d'abord, un graphe système, une composition de capacités, la résolution des dépendances et des conflits, une provenance sémantique, des agents spécialisés et une expérience de premier démarrage. Le plan de contrôle est utilisable sans IA, et le plan d'intelligence peut être remplacé sans modifier le plan d'autorité.
Les concepts clés incluent les Setups (tranches d'intention réutilisables et versionnées telles que rust-development ou postgresql-development) et les Machine Profiles (compositions à l'échelle de la machine entière). Les Setups stockent une intention portable, une composition et des contraintes plutôt qu'un historique shell ou des instantanés du système de fichiers ; les exports transportent des références de secrets, jamais les valeurs des secrets. Réutiliser un setup réobserve toujours la machine cible, résout à nouveau les capacités, dérive un nouvel état souhaité et génère un nouveau plan avant toute mutation. Les instantanés exacts restent un mécanisme distinct de restauration/récupération.
Les invariants énoncés incluent : linurad s'exécute sans privilèges ; aucune API générique d'exécution privilégiée de shell n'existe ; les agents ne reçoivent aucun handle d'exécuteur privilégié ; le langage naturel produit une IntentProposal, jamais de texte exécutable ; l'état géré conserve une provenance sémantique expliquant pourquoi il existe ; un état inconnu ou non pris en charge échoue en mode fermé pour les mutations ; le succès de l'exécuteur est traité comme une preuve de répartition, non comme la preuve de l'état résultant ; et le fonctionnement déterministe local, l'utilisation de la bibliothèque et la récupération fonctionnent sans accès réseau ni modèle.
Le dépôt est organisé en un espace de travail Rust avec des crates pour core, intent, graph, capability SDK, planner, provenance, agent runtime, policy, protocol, provider SDK, SDK facade, control, lifecycle, bootstrap, migrations et update, ainsi que des applications pour linurad, linuractl, first boot, control center, agent UI et un shell Quickshell/QML. Il inclut également des bindings, capabilities, workflows, surfaces, agents, executors, interfaces, schemas, profiles, packaging et docs.
Le statut est v0.9.0, décrit comme expérimental avec un Experimental First Boot et un environnement de référence pris en charge ; la version immuable est vérifiée indépendamment. La première cible de profil de station de travail interactive est délibérément étroite (Arch Linux, systemd, Wayland/Hyprland, NetworkManager, PipeWire, BlueZ, UDisks2, Polkit, Btrfs/Snapper), avec arch-hyprland-v1 positionné comme candidat de développement pour la v0.10 plutôt que comme partie de la frontière de support actuelle. Le développement suit un ordre étroit de tranches verticales, et la porte de qualité du bootstrap épingle Rust 1.98.0 avec les commandes fmt, clippy, test et repository-check. Sous licence Apache 2.0.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.