
Dracon 개발자 작업 공간을 위한 보이지 않는 인프라: git sync, 시스템 가드 및 warden 암호화 유틸리티.
Linux 개발 머신을 관리하는 세 가지 작은 Rust CLI 도구입니다. 하나는 git 저장소를 커밋하고 백업된 상태로 유지하고, 하나는 디스크와 메모리가 넘어지지 않게 지키며, 하나는 비밀이 git 히스토리에 남지 않도록 막습니다. 이들은 일반 사용자 수준의 systemd 서비스로 실행됩니다 — root 권한이 필요하지 않습니다.
| 도구 | 해결하는 문제 | 한 줄 요약 |
|---|---|---|
dracon-sync | "하루 종일 파일을 편집했는데 한 번도 커밋하지 않았다." | 저장소를 감시하고, 결정론적 메시지로 변경 사항을 자동 커밋하며, GitHub/GitLab/어디든 푸시합니다 |
dracon-system | "빌드 도중 디스크가 꽉 차서 모든 게 멈췄다." | 디스크 및 메모리 압박을 감시하고, 알려진 공간 낭비 요소를 정리하며, 저장 공간 문제를 진단합니다 |
dracon-warden | "하마터면 API 키를 GitHub에 푸시할 뻔했다." | 비밀 형태의 파일을 투명하게 암호화하여(age) git에 저장된 상태에서는 안전하지만 편집기에서는 평문으로 보이게 합니다 |
여기 있는 모든 것은 경로 기반의 하나의 Cargo 워크스페이스입니다: 저장소
루트에서 cargo test --workspace --locked를 실행하면 세 가지 모두를 빌드하고 테스트합니다
(2026-10-10 기준 2347개 테스트; 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 키 쌍을 생성하세요.
그런 다음 각 도구는 ~/.dracon/utilities/에서 TOML 설정을 읽습니다(예제는 각 도구의 디렉터리에 포함되어 있습니다). git이 추적하는 것은 결코 저장소 트리 밖에 존재하지 않으며, 상태는 ~/.dracon/과 ~/.local/state/dracon/에 저장됩니다.
dracon-sync작업만 하면 커밋은 알아서 됩니다. 감시 루트(예: ~/Dev)를 지정하면 그 아래의 모든 git 저장소를 탐색하고, 편집이 마무리되기를 기다린 뒤, 결정론적인 diff 기반 메시지로 커밋하고, origin 및 설정된 모든 미러로 푸시합니다. 푸시 실패를 (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-system머신 자체를 위한 워치독입니다. 디스크 또는 메모리 압박이 경고/심각 임계값을 넘으면 재생 가능한 정크(빌드 디렉터리, 캐시)를 정리하고, 메모리를 많이 잡아먹는 프로세스의 우선순위를 낮춰 데스크톱이 계속 반응성을 유지하도록 하며, 커널의 out-of-memory 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-wardenage를 사용하는 Git filter 기반 암호화.
시크릿 패턴(.env, *.key, …)과 일치하는 파일은 커밋 시 암호화되고
체크아웃 시 복호화되므로, 작업 트리는 정상적으로 유지되는 반면
원격 저장소에는 암호문만 보관됩니다. 글로벌 훅이 모든 푸시에서
시크릿 형태의 콘텐츠를 스캔하고 위험한 항목을 차단하여 이를 뒷받침합니다.
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(설계 색인)에 별도로 색인되어 있습니다.
AGPL-3.0-only — 자세한 내용은 LICENSE를 참고하세요.