I built GitEcho after the recent GitHub outages led me to reading this HN comment: https://news.ycombinator.com/item?id=46947085. My goal was simple: make GitHub mirroring dead simple and invisible. Set it up once, then forget it. I wanted "push to GitHub" to also mirror to another provider (GitLab/Bitbucket/Gitea/self-hosted) without changing my day-to-day workflow. How it works: - ge add <mirror-url> installs a local pre-push hook - normal git push origin ... still works as usual - GitEcho captures pushed refs and mirrors them in the background - it uses existing SSH keys / git credential helper (no new token system) Install: uv tool install gitecho Quick start: ge add git@gitlab.com:you/repo.git git push origin main Why not just add another remote and push yourself? You can, and that works. I am lazy and forgetful. I wanted something I could set up quickly and never think about again. GitEcho packages the boring parts: hook setup, background push, non-interactive auth behavior, and logs (`ge logs`). Current behavior: - safety-first by default: it checks origin refs before mirror push - if origin likely rejected, mirror push is skipped and logged - optional best-effort mode via `GITECHO_CONTINUE_ON_ORIGIN_REJECT=1` Planned next: - auto-create mirror repos on providers - watch a folder and auto-setup all repos (instead of per-repo setup) Repo: https://github.com/prashantsengar/GitEcho Mirrored at: https://gitlab.com/prashantsengar/gitecho |