
Невидимая инфраструктура для рабочих пространств разработчиков Dracon: git-синхронизация, системная защита и утилиты шифрования warden.
Три небольших CLI-инструмента на Rust, которые следят за Linux-машиной разработчика: один поддерживает ваши git-репозитории в закоммиченном и сохранённом состоянии, другой не даёт диску и памяти переполниться, а третий не позволяет секретам попасть в вашу историю git. Они работают как обычные пользовательские systemd-сервисы — root не требуется.
| Инструмент | Какую проблему решает | В двух словах |
|---|---|---|
dracon-sync | «Я весь день правил файлы и ни разу не закоммитил.» | Следит за вашими репозиториями, автоматически коммитит изменения с детерминированными сообщениями, пушит в GitHub/GitLab/куда угодно |
dracon-system | «Диск заполнился посреди сборки, и всё зависло.» | Следит за нехваткой места на диске и памяти, чистит известных пожирателей места, диагностирует проблемы с хранилищем |
dracon-warden | «Я чуть не запушил свой API-ключ в GitHub.» | Прозрачно шифрует файлы, похожие на секреты (age), так что в git они в безопасности, а в вашем редакторе — в открытом виде |
Всё здесь — одно Cargo-воркспейс по пути: cargo test --workspace --locked в корне репозитория
собирает и тестирует все три (2347 тестов на 2026-10-10; 0 провалено, 25 пропущено). Три каталога утилит
являются вложенными самостоятельными git-репозиториями (собственные .git/, история, удалённые репозитории и теги с
2026-09-11 — родительский отслеживает только метафайлы), поэтому один лишь клон родительского репозитория
не собирается; клонируйте репозитории утилит рядом с ним (см. 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 — это не сервис: после установки один раз запустите
dracon-warden setup-hooks --global, чтобы активировать его git-хуки, затем
dracon-warden keygen, чтобы создать age-пару ключей машины.
Затем каждый инструмент читает свой TOML-конфиг из ~/.dracon/utilities/
(примеры поставляются в каталоге каждого инструмента). Ничто отслеживаемое git, никогда
не находится вне дерева репозитория; состояние размещается в ~/.dracon/ и
~/.local/state/dracon/.
dracon-syncВы работаете; он коммитит. Укажите ему корневые каталоги для наблюдения (~/Dev, например), и он
обнаружит каждый git-репозиторий под ними, дождётся, пока правки устоятся,
закоммитит с детерминированными сообщениями на основе diff и запушит в origin
плюс любые настроенные зеркала. Он классифицирует ошибки push
(STUCK/BLOCKED/BROKEN) вместо бесконечных молчаливых повторов и
помечает репозитории, исчезнувшие с диска.
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-sync/README.md
dracon-systemСторожевой процесс для самой машины. Когда давление на диск или память пересекает пороги предупреждения/критического уровня, он может очищать регенерируемый мусор (каталоги сборки, кэши), понижать приоритет пожирателей памяти, чтобы ваш рабочий стол оставался отзывчивым, и смещать выбор жертвы ядром при нехватке памяти (OOM killer) в сторону реальных виновников. Также выполняет разовую диагностику: горячие точки хранилища, управление симлинками, состояние 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-system/README.md
dracon-wardenШифрование на основе Git-фильтров с использованием age.
Файлы, соответствующие шаблонам секретов (.env, *.key, …), шифруются при
коммите и расшифровываются при checkout, поэтому рабочее дерево остаётся обычным,
а удалённый репозиторий содержит только шифротекст. Глобальные хуки подкрепляют это,
сканируя каждый push на наличие содержимого, похожего на секреты, и блокируя рискованные.
dracon-warden keygen # machine age keypair
dracon-warden setup-hooks --global
dracon-warden status # what's protected on this machine
Подробнее: 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
Сборки по отдельным инструментам: cargo build --release --locked -p dracon-{sync,system,warden}.
Последние релизы компонентов: dracon-sync 0.113.95 · dracon-system 0.112.44 ·
dracon-warden 0.113.15 — см.
Releases.
Релизы утилит помечаются тегами во вложенных репозиториях (dracon-sync-vX.Y.Z, …);
подробности по каждому инструменту находятся в CHANGELOG.md соответствующего каталога, а родительский
CHANGELOG.md представляет собой замороженную историческую запись.
Историческая справка: изначально каждая утилита жила в собственном репозитории (
DraconDev/dracon-sync-background-auto-commit-multi-remote,...-disk-process-guard-doctor,...-secret-encrypt-age-git-filter). Разработка ведётся во вложенных автономных рабочих копиях этих же репозиториев, клонированных рядом с этим метарепозиторием (родительский репозиторий не отслеживает исходный код утилит).
docs/ROADMAP.md — единая карта документации: начните с неё для установки, эксплуатации, участия в разработке, безопасности и истории версий. Долгосрочные проектные исследования индексируются отдельно в docs/README.md (индекс проектных материалов).