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
Metadata
Release files for standup-ai 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| standup_ai-0.2.0.tar.gz | 15.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| standup_ai-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.6 kB
Release files / standup_ai-0.2.0.tar.gz
| Download URL | standup_ai-0.2.0.tar.gz |
|---|---|
| Size | 15.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba8ff778eeb015dab8a4225a2e60b3ab607056ddb56d14c15b7be6c57c336ebd
|
|
BLAKE2b-256 checksum How to use checksums |
d1451712211d73761ca7389fa786b77960abbb06b28c2596f2636b3873990ed2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / standup_ai-0.2.0-py3-none-any.whl
| Download URL | standup_ai-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
be24b95973c80ab95c33ef37845e28991f7b6a500390ecf3b7d4c957dd76ad44
|
|
BLAKE2b-256 checksum How to use checksums |
7668e3e7310bb97399733dde6e636758f5116bb7c406c350053279ae7a2d6351
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|