Skip to main content

Automatically post daily Jira progress updates from git commits

Project description

GitPulse

Automatically post daily Jira progress updates from your git commits — no manual standup notes needed.

GitPulse scans your local git repos, groups commits by Jira ticket key, uses Gemini AI to write a concise progress summary, and posts it as a Jira comment. It runs on a schedule via macOS LaunchAgent so it just happens in the background.


How it works

  1. Scans configured repos for commits in the last 24 hours authored by you
  2. Groups commits by Jira ticket key (e.g. PROJ-123) found in branch names or commit messages
  3. Sends commits to Gemini to generate a professional progress summary
  4. Posts the summary as a comment on the corresponding Jira ticket
  5. Sends a macOS notification with the run result

Requirements

  • macOS (uses LaunchAgent for scheduling and native notifications)
  • Python 3.11+
  • A Jira account with API token access
  • A Google Gemini API key (free tier works — get one at aistudio.google.com)

Installation

pip install gitpulse

Or install from source:

git clone https://github.com/ashishBhatnagar-16/git-pulse.git
cd git-pulse
pip install -e .

Setup

Run the interactive setup wizard once:

gitpulse setup

It will walk you through:

  • Jira URL, email, and API token (credentials are validated live)
  • Gemini API key (validated live)
  • Your git author email
  • Local repo paths to scan
  • Jira project keys to watch (e.g. PROJ, BACKEND)
  • Daily run time (24hr format, default 18:00)
  • macOS notification preferences

Config is saved to ~/.gitpulse/config.yaml. A LaunchAgent is installed automatically to run on your chosen schedule.


Commands

Command Description
gitpulse run Scan repos and post updates now
gitpulse setup Run the setup wizard
gitpulse status Show LaunchAgent status and recent logs
gitpulse config Display current config (secrets masked)
gitpulse config --set KEY=VALUE Update a config value
gitpulse schedule HH:MM Change the daily run time
gitpulse logs Show recent log entries
gitpulse logs -n 50 Show last 50 log entries
gitpulse uninstall Remove all GitPulse data and the LaunchAgent

Examples

# Run manually right now
gitpulse run

# Change schedule to 5pm
gitpulse schedule 17:00

# Update a single config value
gitpulse config --set git.lookback_hours=48

# Check what's going on
gitpulse status

Configuration reference

Config lives at ~/.gitpulse/config.yaml. Key fields:

jira:
  url: https://your-org.atlassian.net
  email: you@example.com
  token: <your-api-token>

gemini:
  api_key: <your-gemini-key>
  model: gemini-2.5-flash-lite

git:
  author_email: you@example.com
  lookback_hours: 24        # how far back to scan commits

repos:
  - path: ~/code/my-project
  - path: ~/code/another-repo

project_keys:
  - PROJ
  - BACKEND

schedule:
  time: "18:00"

notificationsConfig:
  macos: true
  on_success: true
  on_failure: true

logging:
  path: ~/.gitpulse/run.log
  level: INFO
  retain_days: 30

Jira ticket detection

GitPulse looks for ticket keys matching your configured project_keys in:

  • The current branch name (e.g. feature/PROJ-123-add-login)
  • Commit messages (e.g. PROJ-123: fix null pointer)

Commits are grouped per ticket, so if you worked across multiple tickets in a day, each gets its own comment.


Logs

Logs are written to ~/.gitpulse/run.log in JSON format and rotated automatically after retain_days (default 30).

gitpulse logs          # last 20 entries
gitpulse logs -n 100   # last 100 entries

License

MIT

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

gitpulse_jira-0.1.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitpulse_jira-0.1.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file gitpulse_jira-0.1.0.tar.gz.

File metadata

  • Download URL: gitpulse_jira-0.1.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for gitpulse_jira-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7c7a78c63d70485af566603480604ff5d57e089410d512975ee9b42798101fc5
MD5 2365715693fb01eb7cdaf1aee51b7a4e
BLAKE2b-256 30049b5c356cb550b41f5192e4cda4ff91b1479bc04fe565d978894254af4e81

See more details on using hashes here.

File details

Details for the file gitpulse_jira-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: gitpulse_jira-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for gitpulse_jira-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cf1c5cb37d2653431c94db77180cf2386176c313453934d42eeae4a7101abb10
MD5 090d3780327d746087a815b4c8559da6
BLAKE2b-256 6b66e974d64440ae21f298a7e7004e742c01b917d554da75bc3ef3731e56892a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page