
Infraestrutura invisível para workspaces de desenvolvimento Dracon: git sync, proteção do sistema e utilitários de criptografia warden.
Três pequenas ferramentas CLI em Rust que cuidam de uma máquina de desenvolvimento Linux: uma mantém os seus repositórios git com commits e cópias de segurança, outra evita que o seu disco e memória colapsem, e outra impede que segredos acabem no seu histórico git. Correm como serviços systemd normais ao nível do utilizador — sem necessidade de root.
| Ferramenta | O problema que resolve | Numa linha |
|---|---|---|
dracon-sync | "Editei ficheiros o dia todo e nunca fiz commit." | Vigia os seus repositórios, faz auto-commit das alterações com mensagens determinísticas, faz push para GitHub/GitLab/onde quer que seja |
dracon-system | "O meu disco encheu a meio de um build e tudo congelou." | Protege contra pressão de disco e memória, limpa os suspeitos habituais de consumo de espaço, diagnostica problemas de armazenamento |
dracon-warden | "Quase fiz push da minha chave de API para o GitHub." | Encripta de forma transparente ficheiros com aparência de segredos (age) para que fiquem seguros em repouso no git mas em texto simples no seu editor |
Tudo aqui é um único workspace Cargo por caminho: cargo test --workspace --locked na raiz do repositório
compila e testa as três (2347 testes em 2026-10-10; 0 falhados, 25 ignorados). Os três diretórios de utilitários
são repositórios git autónomos aninhados (com o seu próprio .git/, histórico, remotes e tags desde
2026-09-11 — o pai acompanha apenas ficheiros meta), pelo que um clone simples do pai
não compila; clone os repositórios dos utilitários ao lado dele (ver 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ão é um serviço — após a instalação, execute
dracon-warden setup-hooks --global uma vez para armar os seus git hooks, e depois
dracon-warden keygen para criar o par de chaves age da máquina.
Cada ferramenta lê então a sua configuração TOML a partir de ~/.dracon/utilities/
(os exemplos acompanham o diretório de cada ferramenta). Nada rastreado pelo git
vive alguma vez fora da árvore do repositório; o estado vai para ~/.dracon/ e
~/.local/state/dracon/.
dracon-syncTu trabalhas; ele faz commit. Dá-lhe raízes de observação (~/Dev, por exemplo) e ele
descobre todos os repositórios git por baixo delas, espera que as edições assentem,
faz commit com mensagens determinísticas baseadas em diff, e faz push para o origin
e para quaisquer mirrors configurados. Classifica as falhas de push
(STUCK/BLOCKED/BROKEN) em vez de repetir silenciosamente para sempre, e
sinaliza repositórios que desaparecem do 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
Mais: dracon-sync/README.md
dracon-systemUm watchdog para a própria máquina. Quando a pressão de disco ou de memória ultrapassa os limites de aviso/crítico, ele pode limpar lixo regenerável (diretórios de build, caches), reduzir a prioridade de processos que consomem muita memória para que seu desktop permaneça responsivo, e enviesar o out-of-memory killer do kernel em direção aos verdadeiros infratores. Também realiza diagnósticos pontuais: pontos críticos de armazenamento, gerenciamento de symlinks, status do 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)
Mais: dracon-system/README.md
dracon-wardenCriptografia baseada em filtros do Git usando age.
Arquivos que correspondem a padrões de segredos (.env, *.key, …) são criptografados no
commit e descriptografados no checkout, de modo que a árvore de trabalho permanece normal
enquanto o remoto contém apenas texto cifrado. Hooks globais reforçam isso
verificando cada push em busca de conteúdo com formato de segredo e bloqueando os de risco.
dracon-warden keygen # machine age keypair
dracon-warden setup-hooks --global
dracon-warden status # what's protected on this machine
Mais: 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
Builds por ferramenta: cargo build --release --locked -p dracon-{sync,system,warden}.
Releases mais recentes dos componentes: dracon-sync 0.113.95 · dracon-system 0.112.44 ·
dracon-warden 0.113.15 — consulte
Releases.
As releases dos utilitários são marcadas nos repositórios aninhados (dracon-sync-vX.Y.Z, …);
os detalhes de cada ferramenta estão no CHANGELOG.md de cada diretório, e o
CHANGELOG.md pai é um registro histórico congelado.
Nota histórica: cada utilitário vivia originalmente em seu próprio repositório (
DraconDev/dracon-sync-background-auto-commit-multi-remote,...-disk-process-guard-doctor,...-secret-encrypt-age-git-filter). O desenvolvimento ocorre nos checkouts autônomos aninhados desses mesmos repositórios, clonados ao lado deste meta-repositório (o pai não rastreia nenhum código-fonte de utilitário).