{"id":48343767,"url":"https://github.com/git-fire/git-fire","last_synced_at":"2026-04-17T21:02:01.275Z","repository":{"id":348217598,"uuid":"1156648970","full_name":"git-fire/git-fire","owner":"git-fire","description":"git-fire - the all-in-one repository lifecycle management tool","archived":false,"fork":false,"pushed_at":"2026-04-13T05:51:33.000Z","size":10210,"stargazers_count":24,"open_issues_count":12,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-13T06:20:00.764Z","etag":null,"topics":["backup","emergency","git","it","purple-team","red-team","synchronization","system-administration","version-control"],"latest_commit_sha":null,"homepage":"http://git-fire.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/git-fire.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-12T22:20:54.000Z","updated_at":"2026-04-13T06:00:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/git-fire/git-fire","commit_stats":null,"previous_names":["git-fire/git-fire"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/git-fire/git-fire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-fire%2Fgit-fire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-fire%2Fgit-fire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-fire%2Fgit-fire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-fire%2Fgit-fire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/git-fire","download_url":"https://codeload.github.com/git-fire/git-fire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-fire%2Fgit-fire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31945987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","emergency","git","it","purple-team","red-team","synchronization","system-administration","version-control"],"created_at":"2026-04-05T06:01:55.611Z","updated_at":"2026-04-17T21:02:01.267Z","avatar_url":"https://github.com/git-fire.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# git-fire - Multi-Repo Checkpoint CLI\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/git-fire-lockup.svg#gh-light-mode-only\" alt=\"git-fire: commit node, edge, flame, wordmark\" width=\"220\" height=\"80\"\u003e\n  \u003cimg src=\"assets/git-fire-lockup-dark.svg#gh-dark-mode-only\" alt=\"git-fire: commit node, edge, flame, wordmark\" width=\"220\" height=\"80\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/status-beta-blue\" alt=\"Status: beta\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tests-250%2B-brightgreen\" alt=\"Tests: 250+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/go-1.24.2-blue\" alt=\"Go 1.24.2\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"License: MIT\"\u003e\n  \u003ca href=\"https://discord.gg/pjkVMSpT7j\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-5865F2?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e 🌐 [git-fire.com](https://git-fire.com) — redirects here. A dedicated site is planned once the community grows.\n\n\u003e In case of fire:\n\u003e 1. `git-fire`\n\u003e 2. Leave building\n\n`git-fire` is one command to checkpoint many repositories: discover, auto-commit dirty work (optional), and push backup branches/remotes with safety rails.\n\nManual push loops fail more often than we admit (network drops, auth hiccups, shell mistakes). `git-fire` provides an auditable recovery path when you need one consistent move across many repos.\n\nInvocation note: `git-fire` and `git fire` are equivalent when `git-fire` is on your PATH.\n\n*Maintainer note: this project is built for high-stress moments and everyday discipline. Keep it simple, keep it safe, keep moving.*\n\n## Table of Contents\n\n- [Beta Status](#beta-status)\n- [Quick Start](#quick-start)\n  - [First run](#first-run)\n  - [One-line emergency mode](#one-line-emergency-mode)\n- [Install](#install)\n  - [Homebrew (macOS/Linuxbrew)](#homebrew-macoslinuxbrew)\n  - [WinGet (Windows)](#winget-windows)\n  - [Linux quick install script](#linux-quick-install-script)\n  - [Linux native packages (`.deb` / `.rpm`)](#linux-native-packages-deb--rpm)\n  - [Go install](#go-install)\n  - [Binary archive (manual)](#binary-archive-manual)\n  - [PATH setup (required)](#path-setup-required)\n  - [Verify install](#verify-install)\n  - [Build from source](#build-from-source)\n- [Who Is This For](#who-is-this-for)\n- [Use Cases](#use-cases)\n- [Key Features](#key-features)\n- [Core Commands](#core-commands)\n- [Configuration and Behaviors](#configuration-and-behaviors)\n- [TUI](#tui)\n  - [TUI screenshot](#tui-screenshot)\n  - [TUI color profiles](#tui-color-profiles)\n- [Release Roadmap](#release-roadmap)\n- [Documentation](#documentation)\n- [git-harness](#git-harness)\n- [Security Notes](#security-notes)\n- [Security Policy](#security-policy)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Beta Status\n\n`git-fire` is beta software. Core multi-repo backup flows are usable today. A few roadmap items are intentionally not wired yet (`--backup-to` and USB destination mode).\n\n## Project Snapshot\n\n- **Project:** `git-fire` (`github.com/git-fire/git-fire`)\n- **Language:** Go 1.24.2\n- **License:** MIT\n- **Status:** Beta\n- **Core promise:** one command to discover repos, auto-commit dirty work (unless disabled), and push backups so local-only work is not lost\n\nDetailed product, architecture, safety, testing, and roadmap notes are in [docs/PROJECT_OVERVIEW.md](docs/PROJECT_OVERVIEW.md).\n\n## Quick Start\n\n### First run\n\n```bash\n# preview first (safe)\ngit-fire --dry-run --path ~/projects\n\n# run default streamed checkpoint\ngit-fire\n```\n\n### One-line emergency mode\n\n\u003e Emergency bootstrap script path is established; package-manager installs are still coming soon.\n\nUse this for urgent situations only. `curl | bash` executes remote code directly.\nInspect `scripts/emergency.sh` first and prefer release assets plus checksums when you have time.\n\n```bash\n# replace RELEASE_TAG with a published release tag (for example v0.2.0)\ncurl -fsSL https://raw.githubusercontent.com/git-fire/git-fire/RELEASE_TAG/scripts/emergency.sh | bash\n```\n\n## Install\n\n| Method | Command | Platform |\n|---|---|---|\n| Homebrew | `brew install git-fire/tap/git-fire` | macOS, Linuxbrew |\n| WinGet | `winget install git-fire` (or `winget install git-fire.git-fire`) | Windows |\n| Linux install script | `curl -fsSL https://raw.githubusercontent.com/git-fire/git-fire/main/scripts/install.sh \\| bash` | Linux |\n| Linux package | Download `.deb` or `.rpm` from [GitHub Releases](https://github.com/git-fire/git-fire/releases) | Linux |\n| Go | `go install github.com/git-fire/git-fire@latest` | All (Go 1.24.2+) |\n| Binary archive | [GitHub Releases](https://github.com/git-fire/git-fire/releases) | All |\n\nReleases use plain SemVer tags (`vX.Y.Z`).\nRelease assets always include platform binaries + checksums; package-manager channels are part of the stable release process.\n\nMaintainer runbooks:\n- Homebrew: [`docs/HOMEBREW_RELEASE_RUNBOOK.md`](docs/HOMEBREW_RELEASE_RUNBOOK.md)\n- WinGet: [`docs/WINGET_RELEASE_RUNBOOK.md`](docs/WINGET_RELEASE_RUNBOOK.md)\n- Release checklist: [`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md)\n\n### Homebrew (macOS/Linuxbrew)\n\n```bash\nbrew tap git-fire/tap\nbrew install git-fire\n```\n\n### WinGet (Windows)\n\n```powershell\nwinget install git-fire\n```\n\nIf the short form isn't available yet, use the explicit package ID:\n\n```powershell\nwinget install git-fire.git-fire\n```\n\n### Linux quick install script\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/git-fire/git-fire/main/scripts/install.sh | bash\n```\n\nOptional environment overrides:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/git-fire/git-fire/main/scripts/install.sh | \\\n  VERSION=v0.2.0 INSTALL_DIR=\"$HOME/.local/bin\" bash\n```\n\n### Linux native packages (`.deb` / `.rpm`)\n\n```bash\n# Debian/Ubuntu\nsudo dpkg -i ./git-fire_\u003cversion\u003e_amd64.deb\n\n# Fedora/RHEL/CentOS (dnf)\nsudo dnf install ./git-fire_\u003cversion\u003e_amd64.rpm\n```\n\n### Go install\n\n```bash\ngo install github.com/git-fire/git-fire@latest\n```\n\nOr pin an explicit release:\n\n```bash\ngo install github.com/git-fire/git-fire@v0.2.0\n```\n\n### Binary archive (manual)\n\nDownload and extract the right archive from [GitHub Releases](https://github.com/git-fire/git-fire/releases), then place the binary on your `PATH`.\n\n### PATH setup (required)\n\nAfter install, make sure the binary location is on your `PATH`.\n\n**Go install (Linux/macOS):**\n```bash\nexport PATH=\"$HOME/go/bin:$PATH\"\n```\nAdd that line to `~/.zshrc` or `~/.bashrc` to persist.\n\n**Manual binary install (Linux/macOS):**\n```bash\nchmod +x git-fire\nsudo mv git-fire /usr/local/bin/\n```\n\n**Manual binary install (Windows PowerShell):**\n```powershell\nNew-Item -ItemType Directory -Force \"$env:USERPROFILE\\bin\" | Out-Null\nMove-Item .\\git-fire.exe \"$env:USERPROFILE\\bin\\git-fire.exe\" -Force\n```\nThen add `$env:USERPROFILE\\bin` to your user `PATH` if not already present.\n\n### Verify install\n\n```bash\ngit-fire --version\nwhich git-fire\n```\n\nOn Windows PowerShell:\n\n```powershell\ngit-fire.exe --version\nGet-Command git-fire.exe\n```\n\n### Build from source\n\nCross-platform source build instructions live in [docs/BUILD_FROM_SOURCE.md](docs/BUILD_FROM_SOURCE.md).\n\n## Who Is This For\n\n- **Anyone using Git across multiple repos:** checkpoint before context switches, travel, maintenance, or risky changes.\n- **Developers and platform/infra engineers:** keep code/IaC/config repos consistently backed up.\n- **Agent workflow users:** use it as a stop-hook safety net for AI coding sessions.\n- **Security/ops practitioners:** preserve state before teardown, maintenance, or incident-driven system changes.\n- **Data/research/documentation teams:** checkpoint notebooks, docs, and analysis repos with repeatable behavior.\n- **Not the target:** single-repo users and monorepo teams that already have strict one-repo checkpoint discipline.\n\n## Use Cases\n\n- **Daily developer checkpoint:** end of day, before context switches, before large refactors.\n- **Non-developer multi-repo checkpoint:** docs/content publishing windows, data-environment changes.\n- **Agent session safety net:** preserve uncommitted output and keep logs for review.\n- **IT/infra maintenance windows:** checkpoint tooling/config repos before maintenance.\n- **Security/operations workflows:** red/purple team sync and incident-response state preservation.\n\nWorkflow guides:\n- [docs/agentic-flows.md](docs/agentic-flows.md)\n- [docs/security-ops.md](docs/security-ops.md)\n\n## Key Features\n\n- **One-command multi-repo checkpoint:** discover repositories and execute a repeatable backup flow from one command.\n- **Optional dirty-work auto-commit:** include uncommitted changes, or use `--skip-auto-commit` to push committed work only.\n- **Safety-first conflict handling:** avoid force-push in normal flow; `push-current-branch` can create backup branches on divergence.\n- **Dry-run planning:** preview exactly what would happen before making changes.\n- **Auditable execution logs:** structured JSON logs for troubleshooting and post-run review.\n- **Registry-backed repeatability:** discovered repos persist across runs.\n\n## Core Commands\n\n```bash\n# default streamed checkpoint flow\ngit-fire\ngit fire\n\n# non-destructive preview\ngit-fire --dry-run\ngit-fire --fire-drill\n\n# TUI selector mode\ngit-fire --fire\n\n# scan specific root\ngit-fire --path ~/projects\n\n# push existing commits only (no auto-commit)\ngit-fire --skip-auto-commit\n\n# inspect auth + repo status\ngit-fire --status\n\n# use explicit config path (project-local opt-in)\ngit-fire --config ./git-fire.toml\n\n# use only known registry repos for this run\ngit-fire --no-scan\n\n# generate config template\ngit-fire --init\n\n# inspect/edit registry entries\ngit-fire repos list\ngit-fire repos ignore /abs/path/to/repo\n```\n\n## Configuration and Behaviors\n\n- **Persistent repo registry:** discovered repos are saved in `~/.config/git-fire/repos.toml` unless explicitly ignored.\n- **Status and auth checks:** `git-fire --status` gives a quick snapshot of SSH/auth and repo readiness.\n- **Execution-mode control:** `--dry-run` and `--fire` choose planning vs execution UI mode; `--path` selects scan root.\n- **Registry-only mode:** `--no-scan` runs against already-known registry repos for that run.\n- **Config trust boundary:** only `~/.config/git-fire/config.toml` loads by default; use `--config \u003cpath\u003e` to opt into project-local config.\n- **Session logging:** each run writes structured logs under `~/.cache/git-fire/logs/`.\n- **Workflow composition:** pair with hooks, wrappers, task runners, or CI helper scripts.\n\nSee [docs/REGISTRY.md](docs/REGISTRY.md) for details.\n\n## TUI\n\n### TUI screenshot\n\nCurrent `git-fire` TUI: multi-repo selection, per-repo status, and one-screen checkpoint workflow.\n\n![git-fire TUI screenshot showing repository selection and status view](assets/git-fire-tui-screenshot-gh.png)\n\n### TUI color profiles\n\nYou can reskin both the fire effect and border/accent colors in `git-fire --fire`:\n\n| Profile | Style |\n|---------|-------|\n| `classic` | Original orange/yellow fire |\n| `synthwave` | 80s neon purple/pink/cyan |\n| `forest` | Green ember palette |\n| `arctic` | Cool cyan/ice palette |\n\n| Method | How |\n|--------|-----|\n| In-TUI settings | Press **`c`** -\u003e **Color profile** -\u003e `space` / `\u003c-` / `-\u003e` |\n| Config file | Set `color_profile` under `[ui]` |\n\n```toml\n[ui]\nshow_fire_animation = true\ncolor_profile = \"synthwave\"\n```\n\nCustom hex palettes are planned but not enabled yet.\n\n## Release Roadmap\n\n- **Now (beta):** expanded tester validation, feedback, and stabilization while preparing the first stable SemVer release (`v0.2.0`).\n- **During beta:** address critical stabilization issues and keep install and safety documentation current.\n- **1.0:** ship a stable production release after beta-critical items are closed.\n\n### Coming Soon\n\n- **USB mode:** planned as a first-class destination for repo backups (git-native incremental updates + destination marker/config).\n- **Integration-first direction:** practical integrations and redundancy layers for high-pressure moments.\n\nPlugin docs:\n- [PLUGINS.md](PLUGINS.md)\n- [examples/plugins/s3-upload.md](examples/plugins/s3-upload.md)\n\n## Documentation\n\nStart with [docs/README.md](docs/README.md).\n\n- Architecture diagrams (Mermaid): [docs/ARCHITECTURE_DIAGRAMS.md](docs/ARCHITECTURE_DIAGRAMS.md)\n- Build from source: [docs/BUILD_FROM_SOURCE.md](docs/BUILD_FROM_SOURCE.md)\n- Agentic workflows: [docs/agentic-flows.md](docs/agentic-flows.md)\n- Security and operations workflows: [docs/security-ops.md](docs/security-ops.md)\n- Manual smoke fixture scripts: [docs/MANUAL_SMOKE_FIXTURES.md](docs/MANUAL_SMOKE_FIXTURES.md)\n- Planned USB mode scope: [docs/USB_MODE.md](docs/USB_MODE.md)\n- Behavior spec: [GIT_FIRE_SPEC.md](GIT_FIRE_SPEC.md)\n- Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## git-harness\n\n`git-fire` builds on [`git-harness`](https://github.com/git-fire/git-harness), a small Go library of shared primitives (version pinned in [`go.mod`](go.mod); currently `v0.2.0`). Like `git-fire`, it shells out to the system `git` binary rather than embedding a pure-Go Git implementation.\n\n| Import path | Role in `git-fire` |\n|-------------|-------------------|\n| [`github.com/git-fire/git-harness/git`](https://pkg.go.dev/github.com/git-fire/git-harness/git) | Repository discovery and scan helpers, plus git operations (branches, commits, push orchestration) consumed by the CLI, executor, TUI, and demos. |\n| [`github.com/git-fire/git-harness/safety`](https://pkg.go.dev/github.com/git-fire/git-harness/safety) | Secret detection (patterns and filename heuristics) and sanitization helpers used when logging errors and running plugin commands. |\n\nRegistry loading, planning, rate-limited execution, plugins, Bubble Tea UI, and user config remain in this repository. If you change behavior at the “how we invoke git” or “what counts as a secret warning” layer, the fix may belong in `git-harness` with a version bump here—see [CONTRIBUTING.md](CONTRIBUTING.md) and open an issue if you are unsure.\n\n## Security Notes\n\nBefore running broad backups:\n- keep secrets out of tracked files\n- rely on `.gitignore` and `.git/info/exclude` for local secret files\n- run `git-fire --dry-run` regularly to inspect what would be committed\n\n`git-fire` includes secret detection warnings, but commit responsibility remains with the user.\n\n## Security Policy\n\nTo report security issues privately, use [SECURITY.md](SECURITY.md).\n\n## Contributing\n\nContributions are welcome — and genuinely wanted. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\nYour feedback, feature requests, and ideas matter here. No idea is too small or too ambitious to discuss. If you're thinking about forking to add something, open an issue first. The goal is a tool the community actually relies on, and I'd rather build it with you than have it fragment.\n\nRuntime git and safety behavior is shared with [git-harness](#git-harness) above. Tests use [git-testkit](https://github.com/git-fire/git-testkit) (`v0.2.0`) for building git repository fixtures and complex multi-repo scenarios programmatically — a companion library released alongside git-fire with a simple, extensible test API. Python and Java interfaces in development.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgit-fire%2Fgit-fire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgit-fire%2Fgit-fire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgit-fire%2Fgit-fire/lists"}