Home Assistant integration and add-on for syncing your config folder to GitHub. This is a config sync tool, not a backup tool.
Private repositories are strongly recommended. Use caution with public repos and any two-way sync tools that also write to your Home Assistant config tree — they can cause local config loss or unexpected deletions.
If you find this project useful, and would like to help support its continued development, you can do so here:
- GitHub OAuth Device Flow login (approve on github.com)
- Create a new repository or use an existing one
- Sync your Home Assistant config folder to GitHub
- Auto-generate a Home Assistant-friendly
.gitignore - Customizable ignore patterns
- Manual sync button in Home Assistant
- Scheduled syncs (day-of-week + time-of-day selection)
- Optional dated GitHub release creation before each sync
- Clean Upload — force full re-upload and remove remote extras
- Clean Repo — wipe remote repo and restore starter files in one step
- Repository picker with safety checks to avoid accidental overwrites
- Sensitive-file scanning and reporting
- Open HACS in Home Assistant.
- Add
https://github.com/MJP-76/GithubConfigSyncas a custom repository (category: Integration). - Install Github Config Sync and restart Home Assistant.
- Go to Settings → Devices & Services → Add Integration → Github Config Sync and configure.
- In Home Assistant, open Settings → Add-ons → Add-on Store → Repositories.
- Add this repository URL:
https://github.com/MJP-76/GithubConfigSync. - Install Github Config Sync and start it.
- Open the app web UI (ingress), configure repository settings, and complete GitHub Device Flow login.
- Open the app UI from the Add-on page.
- Complete GitHub Device Flow login.
- Pick an existing repository or create a new one.
- Run a dry run first to confirm the scan looks correct.
- Switch to a live run when ready.
The following are excluded from sync by default:
- HA runtime:
.storage,.cloud,tts,.ha_run.lock,home-assistant.log,home-assistant.log.*,home-assistant_v2.db,home-assistant_v2.db-*,secrets.yaml,ip_bans.yaml,known_devices.yaml - Databases:
*.db,*.sqlite,*.sqlite3 - Dev/cache:
.git,.cache,.venv,.vscode,.idea,.pytest_cache,.mypy_cache,.ruff_cache,__pycache__,.yaml_fix_backups,.yaml_fix_backups/* - Temp/junk:
*.tmp,*.swp,*.pyc,*.log,*.smbdelete*,.DS_Store,Thumbs.db,.ha_fix_yaml.py
You can add extra patterns in the app UI. Live uploads also write a root SECURITY_UPLOAD_WARNINGS.md file when suspicious files are skipped.
- This is not a zip-backup integration — files are synced individually as repository contents.
- The Home Assistant config folder is used automatically.
- A managed
.gitignoreis created with HA defaults and your extra patterns. - Keep the repository private if your config contains sensitive data.
- After a release, Home Assistant may need a rebuild/reinstall to pick up UI changes from the add-on image.
- If
GITHUB_OAUTH_CLIENT_IDis set incustom_components/github_config_sync/const.py, the flow uses it directly.
To use the dev branch, add the dev repository URL in Settings → Add-ons → Add-on Store → Repositories:
https://github.com/MJP-76/GithubConfigSync-dev
Development happens on the dev repo. When ready, changes are pushed to both repos.
- Project Guide — architecture, security, milestones, and release workflow.
- Changelog — release history.