AI-powered daily standup summaries from GitHub activity using OpenAI Agents SDK
Project description
GitHub Standup Agent
AI-powered daily standup summaries from your GitHub activity, built with the OpenAI Agents SDK.
Features
- Automatic GitHub Activity Collection: Pulls your PRs, issues, commits, and code reviews using the
ghCLI - AI-Powered Summarization: Creates concise, well-formatted standup summaries
- Interactive Chat Mode: Refine your standup through conversation ("make it shorter", "ignore the docs PR")
- Historical Context: References past standups to maintain continuity and avoid repetition
- Multiple Output Options: Print to terminal or copy to clipboard
- Fully Local: Your data never leaves your machine (except for OpenAI API calls)
Architecture
This project showcases many features of the OpenAI Agents SDK:
- Multi-Agent Workflow: Coordinator → Data Gatherer → Summarizer
- Function Tools:
@function_tooldecorated functions for GitHub CLI operations - Handoffs: Agents delegate to specialized sub-agents
- Guardrails: Input validation and PII detection
- Hooks: Logging and observability
- Sessions: SQLite-based history for past standups
Installation
Prerequisites
-
GitHub CLI: Install and authenticate with
gh# macOS brew install gh # Then authenticate gh auth login
-
OpenAI API Key: Get one from OpenAI
Install from PyPI
pip install github-standup-agent
Or with uv:
uv pip install github-standup-agent
Install from Source
git clone https://github.com/andymaguire/github-standup-agent
cd github-standup-agent
uv pip install -e ".[dev]"
Usage
Set your OpenAI API key
export OPENAI_API_KEY="sk-..."
Generate a Standup (One-Shot)
# Generate standup for today
standup generate
# Look back 3 days
standup generate --days 3
# Copy directly to clipboard
standup generate --output clipboard
# Include context from recent standups
standup generate --with-history
Interactive Chat Mode
Start an interactive session to refine your standup:
standup chat
Example session:
> generate my standup
**Yesterday:**
- Merged PR #123: Add user authentication
- Reviewed PR #456: Fix login bug
- Closed issue #789: Update documentation
**Today:**
- Working on PR #124: Add OAuth support (in progress)
- Assigned to issue #790: Performance optimization
**Blockers:**
- Waiting for API access from platform team
> make it less wordy
**Yesterday:** Merged auth PR, reviewed login fix, updated docs
**Today:** OAuth support PR, performance optimization
**Blockers:** Waiting on platform team API access
> ignore the docs, focus on auth work
**Yesterday:** Merged user authentication PR #123
**Today:** Continuing OAuth support (PR #124)
**Blockers:** Waiting on platform team API access
> perfect, copy to clipboard
✅ Copied to clipboard!
View History
# List recent standups
standup history --list
# View a specific date
standup history --date 2025-01-14
# Clear history
standup history --clear
Configuration
# Show current config
standup config --show
# Set GitHub username (auto-detected by default)
standup config --set-github-user myusername
# Set model for summarization
standup config --set-model gpt-4o
Configuration Options
| Environment Variable | Description | Default |
|---|---|---|
OPENAI_API_KEY |
OpenAI API key (required) | - |
STANDUP_GITHUB_USER |
GitHub username | Auto-detected |
STANDUP_COORDINATOR_MODEL |
Model for coordinator agent | gpt-4o |
STANDUP_DATA_GATHERER_MODEL |
Model for data gathering | gpt-4o-mini |
STANDUP_SUMMARIZER_MODEL |
Model for summarization | gpt-4o |
Config file location: ~/.config/standup-agent/config.json
Development
# Clone the repo
git clone https://github.com/andymaguire/github-standup-agent
cd github-standup-agent
# Install with dev dependencies
uv pip install -e ".[dev]"
# Run tests
pytest
# Run linting
ruff check src/
# Run type checking
mypy src/
How It Works
┌─────────────────────────────┐
│ Coordinator Agent │
│ (Orchestrates workflow) │
└────────────┬────────────────┘
│ handoffs
┌───────┴───────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Data Gatherer│ │ Summarizer │
│ (gpt-4o-mini)│ │ (gpt-4o) │
└──────────────┘ └──────────────┘
│ │
▼ ▼
GitHub CLI Past Standups
(gh commands) (SQLite DB)
- Coordinator receives your request and routes it appropriately
- Data Gatherer uses
ghCLI tools to collect PRs, issues, commits, reviews - Summarizer creates a formatted standup, referencing past standups for context
- You can refine through chat, copy to clipboard, or save to history
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! Please open an issue or PR.
Acknowledgments
- Built with the OpenAI Agents SDK
- Uses the GitHub CLI for data gathering
- CLI powered by Typer
Project details
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 github_standup_agent-0.1.0.tar.gz.
File metadata
- Download URL: github_standup_agent-0.1.0.tar.gz
- Upload date:
- Size: 89.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a3e74e9e49ff320efccb1750ef4eddd026f29be4e070c042d7f62413145dba6
|
|
| MD5 |
1f3ab9dcd6cb433cedb4f4b98dcc1ba1
|
|
| BLAKE2b-256 |
7151d44cc49325ffd5101d363a5a355a76e04ea75864892884b9a820ee52929f
|
Provenance
The following attestation bundles were made for github_standup_agent-0.1.0.tar.gz:
Publisher:
release.yml on andrewm4894/github-standup-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
github_standup_agent-0.1.0.tar.gz -
Subject digest:
6a3e74e9e49ff320efccb1750ef4eddd026f29be4e070c042d7f62413145dba6 - Sigstore transparency entry: 828840190
- Sigstore integration time:
-
Permalink:
andrewm4894/github-standup-agent@c69ccff08d54fe8df2e3d52d8326bef96cd6597d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/andrewm4894
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c69ccff08d54fe8df2e3d52d8326bef96cd6597d -
Trigger Event:
release
-
Statement type:
File details
Details for the file github_standup_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: github_standup_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e8456935bdeb78ac9a9bc586b5acdc62699740e162cba5264322fd8891ea4bb
|
|
| MD5 |
e22d1d532b729eb953911d54ddda13f6
|
|
| BLAKE2b-256 |
348cc3f6580ecb7e2410e641431129f956244306692297736d0eed4af8959407
|
Provenance
The following attestation bundles were made for github_standup_agent-0.1.0-py3-none-any.whl:
Publisher:
release.yml on andrewm4894/github-standup-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
github_standup_agent-0.1.0-py3-none-any.whl -
Subject digest:
6e8456935bdeb78ac9a9bc586b5acdc62699740e162cba5264322fd8891ea4bb - Sigstore transparency entry: 828840191
- Sigstore integration time:
-
Permalink:
andrewm4894/github-standup-agent@c69ccff08d54fe8df2e3d52d8326bef96cd6597d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/andrewm4894
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c69ccff08d54fe8df2e3d52d8326bef96cd6597d -
Trigger Event:
release
-
Statement type: