Generate your daily standup from git history using AI
Project description
standup-ai
Generate your daily standup from git history — in seconds.
standup-ai # scan current dir, auto-detect provider
standup-ai --yesterday # only commits from yesterday
standup-ai --days 3 # last 3 calendar days
standup-ai --style slack --copy # Slack format, copy to clipboard
standup-ai --provider ollama # no API key needed
The problem
Every developer on a remote team has to write a daily standup:
"Yesterday I worked on auth, fixed a bug in the login flow, started the JWT implementation. Today I'll finish JWT and write tests."
You already did the work. Why are you also writing about it?
standup-ai reads your git commits and writes the standup for you.
Demo
$ standup-ai ~/projects --style slack --copy
╭─────────────────────────── Daily Standup (slack) ──────────────────────────╮
│ │
│ Shipped JWT auth and fixed two production bugs │
│ │
│ • [gitbrief] Added --changed-only flag for PR review mode │
│ • [gitbrief] Implemented git diff embedding with --include-diff │
│ • [api-service] Fixed null pointer in /users/profile endpoint │
│ • Today: finish JWT refresh token rotation, write integration tests │
│ │
╰──────────────────────────── 4 commits · gitbrief, api-service ─────────────╯
✓ Copied to clipboard
Why standup-ai?
git-standup (6k stars) is the closest thing — it lists raw commits from the last 24 hours. Great for finding what you did, but you still have to write the standup yourself.
standup-ai goes further:
| Feature | standup-ai | git-standup | manual |
|---|---|---|---|
| Scans multiple repos | ✅ | ✅ | ❌ |
| AI-generated summary | ✅ | ❌ | ❌ |
| Slack/bullet/standard styles | ✅ | ❌ | ❌ |
| Auto-detects your author | ✅ | ✅ | ❌ |
| Clipboard copy | ✅ | ❌ | ❌ |
| Works with local LLMs | ✅ | ❌ | ❌ |
| No API key required (Ollama) | ✅ | ✅ | ✅ |
Install
pip install standup-ai
Or with pipx (recommended):
pipx install standup-ai
Requires Python 3.9+.
Quick Start
# Auto-detects provider from env (ANTHROPIC_API_KEY or OPENAI_API_KEY)
standup-ai
# Scan multiple project directories
standup-ai ~/projects ~/side-projects
# Only commits from yesterday (great for morning standups)
standup-ai --yesterday
# Last 3 calendar days (e.g. Monday morning covering the weekend)
standup-ai --days 3
# Slack format, copy to clipboard
standup-ai --style slack --copy
# No API key needed — use Ollama
standup-ai --provider ollama --model llama3.2
# Show raw commits before generating
standup-ai --show-commits
# Raw output for piping
standup-ai --raw > standup.txt
Config File
Save your defaults in ~/.standup.yaml so you never have to type them again:
# ~/.standup.yaml
paths:
- ~/projects
- ~/work
style: slack
provider: claude
# author: "Your Name" # override git user.name
# hours: 24 # default time window
Any CLI flag still overrides the config file.
Providers
| Provider | Flag | Requires |
|---|---|---|
| Claude (default if key exists) | --provider claude |
ANTHROPIC_API_KEY |
| OpenAI | --provider openai |
OPENAI_API_KEY |
| Ollama (local, free) | --provider ollama |
Ollama running |
Using Ollama (no API key)
# Install Ollama: https://ollama.ai
ollama pull llama3.2
standup-ai --provider ollama --model llama3.2
Output Styles
--style standard (default)
**Yesterday:**
- [myrepo] Implemented JWT authentication with refresh token rotation
- [api-service] Fixed null pointer exception in profile endpoint
**Today:**
- Write integration tests for JWT flow
- Code review on open PRs
**Blockers:**
- None
--style bullet
- Added JWT auth and refresh tokens [myrepo]
- Fixed profile endpoint bug [api-service]
- Today: integration tests + PR reviews
--style slack
Shipped JWT auth and fixed a prod bug
* [myrepo] JWT authentication with refresh token rotation
* [api-service] Profile endpoint null pointer fix
* Today: tests + code review
Options
standup-ai [PATH...] [OPTIONS]
Arguments:
PATH... Directories to scan (default: current directory or ~/.standup.yaml paths)
Time window (mutually exclusive):
--yesterday Only commits from yesterday (midnight to midnight, local time)
--days INT Last N calendar days (from start of day N days ago)
--hours INT How many hours back to look [default: 24]
Options:
--author TEXT Filter by author name/email (auto-detected if not set)
--no-filter Include all authors (don't filter to current user)
--provider claude | openai | ollama (auto-detected from env)
--model TEXT Override model name
--style standard | bullet | slack [default: standard]
--copy Copy output to clipboard
--raw Plain text output (no formatting)
--show-commits Print raw commits found before generating
-V, --version Show version
-h, --help Show this message and exit
Tips
# Monday morning standup (covers the weekend)
standup-ai --yesterday --days 3
# Monday morning — all commits since Friday
standup-ai --days 3
# Team standup: see what everyone did (no author filter)
standup-ai --no-filter
# Add to your shell as an alias
alias standup='standup-ai --yesterday --style slack --copy'
# See what commits were found before generating
standup-ai --show-commits --provider ollama
Development
git clone https://github.com/faw21/standup-ai
cd standup-ai
python -m venv .venv && source .venv/bin/activate
.venv/bin/pip install -e ".[dev]"
pytest tests/ # 83 tests, 89% coverage
Related Tools
gitbrief — Pack the right files from any repo into LLM-ready context using git history.
gpr — AI-powered PR descriptions and commit messages from your git diff.
# The full AI-powered git workflow:
standup-ai # 1. morning standup
gitbrief . --changed-only # 2. pack context for code review
gpr # 3. generate PR description
gpr --commit-run # 4. commit with AI message
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file standup_ai-0.2.0.tar.gz.
File metadata
- Download URL: standup_ai-0.2.0.tar.gz
- Upload date:
- Size: 15.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba8ff778eeb015dab8a4225a2e60b3ab607056ddb56d14c15b7be6c57c336ebd
|
|
| MD5 |
b85156040e40988a46d6caa3fcaf5daa
|
|
| BLAKE2b-256 |
d1451712211d73761ca7389fa786b77960abbb06b28c2596f2636b3873990ed2
|
File details
Details for the file standup_ai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: standup_ai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be24b95973c80ab95c33ef37845e28991f7b6a500390ecf3b7d4c957dd76ad44
|
|
| MD5 |
28cc0a706d3d9bdd37eda3d58e7176f9
|
|
| BLAKE2b-256 |
7668e3e7310bb97399733dde6e636758f5116bb7c406c350053279ae7a2d6351
|