Dracon Sync
Background, auto-commit, multi-remote — invisible git sync for developer workspaces.
This repository is the canonical "main" for dracon-sync on GitHub,
GitLab, and Codeberg. It contains the actual source code (mirrored from the
DraconDev/dracon-utilities
monorepo), the Cargo.toml, tests, examples, and the per-utility README.
You can build and install this utility directly from this repo.
Quick start (standalone build)
# Clone this repo
# Clone required siblings (path-dep layout)
# Build
# Install (binary lands in target/release/)
What is in this repo
src/— utility source codetests/— integration tests (if present)Cargo.toml— standalone build manifest with path-dep siblingsREADME.md— this file (the per-utility README from the monorepo is atmonorepo-README.md)BLUEPRINT.md— design notesdracon-sync.example.toml— example configdracon-sync.service— systemd user-service unitLICENSE,SECURITY.md,.gitignore,.github/— repo metadatadocs/SOURCE_OF_TRUTH.md— architecture + invariants
Relationship to the monorepo
| Boundary | Decision |
|---|---|
| Source code | Mirrored from dracon-utilities/dracon-sync via scripts/regenerate_facade_repos.py on every monorepo commit |
| Source of truth | dracon-utilities monorepo (the auto-sync is one-way) |
| Feature surface | This repo (canonical main for dracon-sync) |
| Shared libraries | Sibling dracon-libs workspace (../dracon-libs) |
| Operational policy | ~/.dracon/utilities/ TOML files |
Why this name?
The descriptive name is a deliberate choice for Codeberg/Forgejo, where
descriptive repo names get upvotes and free attention because readers
immediately know what the project does. The full word list (no fillers, no
audience/UX claims) is documented in
docs/design/github-feature-repos.md.
Purpose
Watches configured repositories, waits for changes to settle (fingerprint stability / debounce), commits deterministic diff-based messages, and pushes to origin plus configured mirrors. Invisible: runs in the background, no user interaction required.
Runtime
- Binary:
dracon-sync - Service: dracon-sync.service
- Example policy:
dracon-sync/dracon-sync.example.toml - Common commands:
dracon-sync status · dracon-sync repos · dracon-sync health · dracon-sync daemon
Maintenance
When the monorepo changes the utility source code, README, or example config,
the monorepo's post-commit hook calls scripts/regenerate_facade_repos.py
which mirrors the changes to this repo. The dracon-sync daemon picks up
the local change in /home/dracon/Dev/facade-repos/dracon-sync-background-auto-commit-multi-remote and
auto-pushes to the 3 remotes (github, gitlab, codeberg). No manual
--apply or --push-all-remotes invocation is needed in the normal flow.
License
AGPL-3.0-only — see LICENSE.