
Infrastructure invisible pour les espaces de travail des développeurs Dracon : synchronisation git, garde système et utilitaires de chiffrement warden.
Trois petits outils CLI en Rust qui veillent sur une machine de développement Linux : l'un garde vos dépôts git commités et sauvegardés, un autre empêche votre disque et votre mémoire de saturer, et le dernier empêche les secrets de se retrouver dans votre historique git. Ils s'exécutent comme de simples services systemd au niveau utilisateur — aucun accès root requis.
| Outil | Le problème qu'il résout | En une ligne |
|---|---|---|
dracon-sync | « J'ai modifié des fichiers toute la journée sans jamais commiter. » | Surveille vos dépôts, auto-commite les changements avec des messages déterministes, pousse vers GitHub/GitLab/où que ce soit |
dracon-system | « Mon disque s'est rempli en pleine compilation et tout a gelé. » | Surveille la pression disque et mémoire, nettoie les gouffres d'espace connus, diagnostique les problèmes de stockage |
dracon-warden | « J'ai failli pousser ma clé API sur GitHub. » | Chiffre de façon transparente les fichiers ressemblant à des secrets (age) afin qu'ils soient sûrs au repos dans git mais en clair dans votre éditeur |
Tout ici forme un seul workspace Cargo par chemin : cargo test --workspace --locked à la racine du dépôt
compile et teste les trois (2347 tests au 2026-10-10 ; 0 échec, 25 ignorés). Les trois répertoires d'utilitaires
sont des dépôts git autonomes imbriqués (leur propre .git/, historique, remotes et tags depuis
le 2026-09-11 — le parent ne suit que des méta-fichiers), donc un simple clone du parent seul
ne compile pas ; clonez les dépôts d'utilitaires à côté (voir CONTRIBUTING Setup).
git clone https://github.com/DraconDev/dracon-utilities.git
cd dracon-utilities
# nested utility repos (see CONTRIBUTING for the clone list)
git clone https://github.com/DraconDev/dracon-sync-background-auto-commit-multi-remote.git dracon-sync
git clone https://github.com/DraconDev/dracon-system-disk-process-guard-doctor.git dracon-system
git clone https://github.com/DraconDev/dracon-warden-secret-encrypt-age-git-filter.git dracon-warden
cargo build --release --locked
./target/release/dracon-system doctor # health check of this machine
./target/release/dracon-sync status # what sync would watch
./install.sh # binaries -> ~/.local/bin
systemctl --user enable --now dracon-sync.service # background auto-commit
systemctl --user enable --now dracon-system-guard.service # background guard
./uninstall.sh # remove binaries and services (configs kept unless --purge)
`install.sh` stops the services while it works, refreshes the user
service units from the repo, installs the warden git hooks globally,
and restarts the services afterwards (see `./install.sh --help`;
`--no-restart` and `--binaries-only` opt out of parts of this).
dracon-warden n'est pas un service — après l'installation, exécutez
dracon-warden setup-hooks --global une fois pour armer ses hooks git, puis
dracon-warden keygen pour créer la paire de clés age de la machine.
Chaque outil lit ensuite sa configuration TOML depuis ~/.dracon/utilities/
(des exemples sont fournis dans le répertoire de chaque outil). Rien de ce qui est suivi par git ne
réside jamais en dehors de l'arborescence du dépôt ; l'état va dans ~/.dracon/ et
~/.local/state/dracon/.
dracon-syncVous travaillez ; il commite. Donnez-lui des racines de surveillance (~/Dev, par exemple) et il
découvre chaque dépôt git en dessous, attend que les modifications se stabilisent,
commite avec des messages déterministes basés sur le diff, et pousse vers origin
ainsi que vers tout miroir configuré. Il classe les échecs de push
(STUCK/BLOCKED/BROKEN) au lieu de réessayer silencieusement indéfiniment, et
signale les dépôts qui disparaissent du disque.
dracon-sync daemon # continuous loop (what the service runs)
dracon-sync repos # live report of every watched repo
dracon-sync sync-now ~/Dev/my-project
dracon-sync health
Plus : dracon-sync/README.md
dracon-systemUn watchdog pour la machine elle-même. Lorsque la pression sur le disque ou la mémoire franchit les seuils d'avertissement/critique, il peut nettoyer les fichiers indésirables régénérables (répertoires de build, caches), réduire la priorité des processus gourmands en mémoire afin que votre bureau reste réactif, et orienter le tueur de processus hors mémoire (OOM killer) du noyau vers les véritables coupables. Il effectue également des diagnostics ponctuels : points chauds de stockage, gestion des liens symboliques, état de zram.
dracon-system doctor # deterministic diagnostics pass
dracon-system storage ~/Dev # where did my disk go?
dracon-system guard clean # reclaim space (dry-run first)
dracon-system guard daemon # continuous monitoring (the service)
Plus d'informations : dracon-system/README.md
dracon-wardenChiffrement basé sur les filtres Git utilisant age.
Les fichiers correspondant aux motifs de secrets (.env, *.key, …) sont chiffrés lors du
commit et déchiffrés lors du checkout, de sorte que l'arbre de travail reste normal
tandis que le dépôt distant ne contient que du texte chiffré. Des hooks globaux renforcent cela en
analysant chaque push à la recherche de contenu ressemblant à des secrets et en bloquant ceux qui présentent un risque.
dracon-warden keygen # machine age keypair
dracon-warden setup-hooks --global
dracon-warden status # what's protected on this machine
Plus : dracon-warden/README.md
dracon-utilities/
├── dracon-sync/ # auto-commit multi-remote git sync daemon
├── dracon-system/ # disk/process guard, storage & diagnostics
├── dracon-warden/ # age-based git secret encryption (hooks + CLI)
│ └── src/security/ # embedded dracon-security crate
├── .github/workflows/ci.yml # lint / test / release-build / deny / nix
├── flake.nix # optional Nix build path
├── scripts/ # release, checks, audit tooling
└── AGENTS.md # policies for agents/operators working here
export DRACON_SYNC_GIT_BIN=/run/current-system/sw/bin/git # NixOS only
cargo test --workspace --locked
cargo clippy --workspace --locked -- -D warnings
cargo deny check
nix flake check # optional
Compilations par outil : cargo build --release --locked -p dracon-{sync,system,warden}.
Dernières versions des composants : dracon-sync 0.113.95 · dracon-system 0.112.44 ·
dracon-warden 0.113.15 — voir
Versions.
Les versions des utilitaires sont étiquetées dans les dépôts imbriqués (dracon-sync-vX.Y.Z, …) ;
les détails par outil se trouvent dans le CHANGELOG.md de chaque répertoire, et le
CHANGELOG.md parent est un enregistrement historique figé.
Note historique : chaque utilitaire vivait à l'origine dans son propre dépôt (
DraconDev/dracon-sync-background-auto-commit-multi-remote,...-disk-process-guard-doctor,...-secret-encrypt-age-git-filter). Le développement se fait dans les copies de travail autonomes imbriquées de ces mêmes dépôts, clonées à côté de ce méta-dépôt (le parent ne suit aucun code source d'utilitaire).