# git-digest
Single-binary Go tool that generates an AI-written daily digest of your GitHub commit activity.
It fetches your recent commits, builds a grounded prompt, and has an LLM write a retrospective developer-journal entry — then saves it locally and (optionally) serves it in a clean dark-mode web UI.
# What it does
- Fetches your GitHub repos filtered by recent push activity
- Pulls your commits from the last N days (with optional file diffs)
- Builds a grounded prompt and streams it to an LLM
- Generates a structured markdown digest (summary + per-repo breakdown)
- Saves the digest locally
- Optionally:
- Serves all digests via a built-in dark-mode web UI
- Copies the digest into a “portfolio” repo’s
digests/folder
# LLM backend (cloud-optional)
git-digest needs something to write the prose. You pick:
- Claude Code CLI (default) — convenient, but uses Anthropic’s cloud models. Requires the
claudeCLI installed and authenticated. - Your own LLM gateway — point it at any OpenAI
/v1/chat/completions-compatible endpoint (local llama.cpp, Ollama proxy, self-hosted server, etc.) with--gateway. Fully offline if your gateway is.
There’s no built-in API-key path — it’s the CLI or your own endpoint.
# Setup
First run with no config launches an interactive walkthrough. You can re-run it anytime:
./git-digest --settings
It asks, one question at a time, for your GitHub token, LLM backend, model, repos to ignore, private-repo preference, portfolio path, and output directory — then writes ~/.config/git-digest/env. Every answer also has a plain environment-variable equivalent (below) if you’d rather skip the wizard.
# Usage
./git-digest [flags]
# Flags
| Flag | Default | Description |
|---|---|---|
-lookback |
1 |
Days to look back for activity |
-private |
env | Include private repositories |
-serve |
false | Start web UI at http://localhost:4242 after generating |
-push |
false | Copy digest into the portfolio repo’s digests/ folder |
-gateway |
false | Use your LLM gateway instead of the Claude CLI |
-settings |
false | Run the interactive setup and exit |
-no-patches |
false | Skip file diffs in sparse commits |
-no-prev |
false | Don’t include the previous digest as a style reference |
-no-repeat |
false | Exclude commit SHAs already covered by prior digests |
-personality |
“” | Override the tone/voice of the digest |
-note |
“” | Manual note to fold in (e.g. private/offline work) |
# Environment variables
All are optional except GITHUB_TOKEN, and all can be set by the wizard.
| Variable | Description |
|---|---|
GITHUB_TOKEN |
GitHub personal access token (repo scope) — required |
GIT_DIGEST_BACKEND |
claude, gateway, or both (default claude) |
GIT_DIGEST_GATEWAY_URL |
Base URL of your OpenAI-compatible gateway (e.g. http://localhost:7860) |
GIT_DIGEST_MODEL |
Model name (default claude-haiku-4-5-20251001) |
GIT_DIGEST_IGNORE |
Comma-separated repos to skip (default none) |
GIT_DIGEST_PRIVATE |
true to include private repos by default |
GIT_DIGEST_PORTFOLIO |
Local path to a portfolio repo for -push |
GIT_DIGEST_OUTPUT |
Where digests are saved (default ~/digests) |
Set these in your shell, or let the wizard write them to ~/.config/git-digest/env (loaded automatically, shell env takes precedence).
# Install & build
Requires Go 1.21+:
git clone https://github.com/usr-wwelsh/git-digest
cd git-digest
go build
Binary is created at ./git-digest. No third-party Go dependencies.
# Web UI
Running with -serve starts an HTTP server on port 4242 with:
- Index page listing all generated digests with previews
- Individual digest view with rendered markdown
- GitHub-style dark theme, zero client-side JavaScript
# License
MIT — Copyright 2026 William Welsh