
Infraestructura invisible para los espacios de trabajo de desarrolladores de Dracon: git sync, system guard y utilidades de cifrado warden.
Tres pequeñas herramientas CLI en Rust que cuidan de una máquina de desarrollo Linux: una mantiene tus repositorios git con commits y respaldados, otra evita que tu disco y memoria colapsen, y otra impide que los secretos terminen en tu historial de git. Se ejecutan como servicios systemd normales a nivel de usuario — no se requiere root.
| Herramienta | El problema que resuelve | En una línea |
|---|---|---|
dracon-sync | "Edité archivos todo el día y nunca hice commit." | Vigila tus repositorios, hace auto-commit de los cambios con mensajes deterministas, hace push a GitHub/GitLab/donde sea |
dracon-system | "Mi disco se llenó a mitad de la compilación y todo se congeló." | Protege contra la presión de disco y memoria, limpia los consumidores de espacio conocidos, diagnostica problemas de almacenamiento |
dracon-warden | "Casi subí mi clave de API a GitHub." | Cifra de forma transparente los archivos con forma de secreto (age) para que estén seguros en reposo en git pero en texto plano en tu editor |
Todo aquí es un único workspace de Cargo por ruta: cargo test --workspace --locked en la raíz del repositorio
compila y prueba las tres (2347 pruebas el 2026-10-10; 0 fallidas, 25 ignoradas). Los tres directorios de utilidades
son repositorios git independientes anidados (con su propio .git/, historial, remotos y etiquetas desde
2026-09-11 — el padre solo rastrea archivos meta), por lo que un clon simple del padre por sí solo
no compila; clona los repositorios de utilidades junto a él (consulta la configuración en CONTRIBUTING).
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 no es un servicio — tras la instalación, ejecuta
dracon-warden setup-hooks --global una vez para activar sus git hooks, luego
dracon-warden keygen para crear el par de claves age de la máquina.
Cada herramienta lee entonces su configuración TOML desde ~/.dracon/utilities/
(los ejemplos se incluyen en el directorio de cada herramienta). Nada rastreado por git
vive jamás fuera del árbol del repositorio; el estado va a ~/.dracon/ y
~/.local/state/dracon/.
dracon-syncTú trabajas; él hace commits. Dale raíces de vigilancia (~/Dev, por ejemplo) y
descubre cada repositorio git debajo de ellas, espera a que las ediciones se asienten,
hace commits con mensajes deterministas basados en el diff, y hace push a origin
más cualquier mirror configurado. Clasifica los fallos de push
(STUCK/BLOCKED/BROKEN) en lugar de reintentar silenciosamente para siempre, y
señala los repositorios que desaparecen del disco.
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
dracon-systemUn watchdog para la propia máquina. Cuando la presión de disco o de memoria cruza los umbrales de advertencia/crítico, puede limpiar basura regenerable (directorios de compilación, cachés), reducir la prioridad de los procesos que consumen mucha memoria para que tu escritorio siga respondiendo, y sesgar el out-of-memory killer del kernel hacia los verdaderos culpables. También realiza diagnósticos puntuales: puntos críticos de almacenamiento, gestión de enlaces simbólicos, estado 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)
dracon-wardenCifrado basado en filtros de Git usando age.
Los archivos que coinciden con patrones de secretos (.env, *.key, …) se cifran al
hacer commit y se descifran al hacer checkout, de modo que el árbol de trabajo permanece normal
mientras el remoto solo contiene texto cifrado. Los hooks globales respaldan esto
escaneando cada push en busca de contenido con forma de secreto y bloqueando los riesgosos.
dracon-warden keygen # machine age keypair
dracon-warden setup-hooks --global
dracon-warden status # what's protected on this machine
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
Compilaciones por herramienta: cargo build --release --locked -p dracon-{sync,system,warden}.
Últimas versiones de los componentes: dracon-sync 0.113.95 · dracon-system 0.112.44 ·
dracon-warden 0.113.15 — consulte
Releases.
Las versiones de las utilidades se etiquetan en los repositorios anidados (dracon-sync-vX.Y.Z, …);
los detalles de cada herramienta se encuentran en el CHANGELOG.md de cada directorio, y el
CHANGELOG.md principal es un registro histórico congelado.
Nota histórica: originalmente cada utilidad residía en su propio repositorio (
DraconDev/dracon-sync-background-auto-commit-multi-remote,...-disk-process-guard-doctor,...-secret-encrypt-age-git-filter). El desarrollo se realiza en las copias de trabajo independientes anidadas de esos mismos repositorios, clonadas junto a este meta-repositorio (el repositorio principal no rastrea el código fuente de las utilidades).