# git-digest

View on GitHub

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

  1. Fetches your GitHub repos filtered by recent push activity
  2. Pulls your commits from the last N days (with optional file diffs)
  3. Builds a grounded prompt and streams it to an LLM
  4. Generates a structured markdown digest (summary + per-repo breakdown)
  5. Saves the digest locally
  6. 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 claude CLI 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

🔒 This site's search assistant runs a local AI model in your browser — no cloud AI, no tracking. See the ℹ️ in the chat panel for details.