Poll git repos, dispatch GitHub Actions workflows, post Discord notifications. Linux + systemd.
gcit watches one or more git remotes for new commits on a configured ref. When the tip
moves, it dispatches a GitHub Actions workflow_dispatch against a target repository,
correlates the dispatch to its resulting run id, monitors the run to completion, and
notifies operators via Discord webhooks and/or local Unix mail.
A single gcit daemon hosts many independent flows. Each flow has one source (git remote + ref), one action (workflow dispatch target), and zero or more destinations (Discord webhook, local mail). Flows are isolated: a panic, network failure, or auth error in one flow cannot crash the daemon or affect other flows.
- Three git polling strategies auto-selected from URL — GitHub API for github.com, grokmirror for git.kernel.org, ls-refs for everything else. See Polling strategies.
- GitHub Actions dispatch with run-id correlation — see Polling strategies — Workflow dispatch correlation.
- Discord webhook and local-mail notifiers — see Notifiers.
- Strict-mode handlebars templates — see Configuration reference — Templates.
- systemd-native lifecycle, socket activation, full hardening profile — see Systemd integration.
- SIGHUP reload that diffs each flow and preserves state for unchanged ones — see Configuration reference — Reload behavior.
- Credentials wrapped in
secrecy::SecretString; on-disk files must bemode & 0o077 == 0, owned by daemon euid or root. See Credential management.
The gcit book is the operator manual:
- Introduction
- Quick start
- Configuration reference
- Credential management
- Polling strategies
- Notifiers
- CLI reference
- Systemd integration
- Troubleshooting
- Architecture overview
gcit is pre-1.0. The wire format of the state file, the control protocol, and config schema are subject to change before 1.0.
- Linux. The crate emits a
compile_error!on non-Linux targets. - systemd.
--foregroundmode is intended for development and testing; the supported deployment surface is the systemd units installed bygcit install. - Rust 1.91 or newer to build from source.
git clone https://github.com/likewhatevs/gcit
cd gcit
cargo build --release
sudo install -m 0755 target/release/gcit /usr/local/bin/gcitFor the systemd install walkthrough (config skeleton, credentials, units), see Quick start.
GPL-2.0-only. See LICENSE.