Skip to main content

ReleaseRadar

Track GitHub repo lifecycles — from issue open to release published.

ReleaseRadar polls GitHub's REST API for the repositories you care about and records every transition it sees — issue closed, PR merged, release published — in a local SQLite database. Run it on a schedule, read it from the CLI, pipe its new events wherever they should go, or call it as an MCP server from Claude.

Part of the Radar suite: MailRadar · PatchRadar · ApkRadar · CookieRadar · ExeRadar · ReleaseRadar


Installation

pip install releaseradar          # the CLI
pip install "releaseradar[mcp]"   # the CLI and the MCP server

Or with Docker, where the MCP server is always included:

docker run --rm -v ~/.releaseradar:/home/releaseradar/.releaseradar \
  -e GITHUB_TOKEN=ghp_… \
  maksimtech/releaseradar track torvalds/linux

Quick start

# Start tracking a repo (verifies it exists on GitHub first)
releaseradar track torvalds/linux
releaseradar track psf/requests

# Fetch the current state. The first sync of a repo seeds the database and
# reports nothing: history is not news. From then on, only transitions are.
releaseradar sync

# See what happened
releaseradar events --limit 30

# Check a single repo
releaseradar status torvalds/linux

# List all tracked repos with open counts, latest release and last sync
releaseradar list

# Print the events nobody was told about yet, then mark them notified
releaseradar notify --json | your-delivery-script

Authentication and cost

Public repos work without a token. GitHub allows 60 requests an hour to an anonymous client and 5 000 to a token, and a sync walks the issues, pull requests and releases of a repository 100 at a time: the first sync of psf/requests is about 105 requests, so it does not fit in the anonymous quota at all. Later syncs ask only for what changed since the last one.

export GITHUB_TOKEN=ghp_your_token_here

When the quota runs out, sync says so, says when it resets, and exits 1; nothing is written for a repository whose sync was refused.

Configuration

Variable Default Purpose
GITHUB_TOKEN (none) GitHub personal access token
RELEASERADAR_DB ~/.releaseradar/state.db SQLite database path

MCP server

ReleaseRadar ships an MCP server so Claude can query and update the tracker directly. It runs over stdio, opens no port, and uses the same database and the same GITHUB_TOKEN as the CLI.

With Claude Code, one command registers it:

pip install "releaseradar[mcp]"
claude mcp add --scope user releaseradar -- releaseradar mcp

Or, checked into a project for everyone who opens it, .mcp.json:

{
  "mcpServers": {
    "releaseradar": {
      "command": "releaseradar",
      "args": ["mcp"],
      "env": { "GITHUB_TOKEN": "ghp_…" }
    }
  }
}

From the Docker image, the same server with -i:

{
  "mcpServers": {
    "releaseradar": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
               "-v", "/home/you/.releaseradar:/home/releaseradar/.releaseradar",
               "-e", "GITHUB_TOKEN",
               "maksimtech/releaseradar", "mcp"]
    }
  }
}

Tools exposed: track_repo, untrack_repo, list_repos, sync_repo, sync_all, repo_status, recent_events. A repository GitHub refuses comes back as a tool error with the reason — not found, rate limit with its reset time, bad token — never as a traceback.

CLI reference

releaseradar track <owner/repo>     Start tracking a repository
releaseradar untrack <owner/repo>   Stop tracking and remove all its data
releaseradar list                   List tracked repos with summary
releaseradar sync [owner/repo]      Fetch what changed since the last sync
releaseradar status <owner/repo>    Open issues/PRs, latest release, last sync
releaseradar events [--limit N]     Show the event log, newest first
releaseradar events --pending       Show unnotified events only
releaseradar notify [--json]        Print unnotified events, then mark them notified
releaseradar notify --dry-run       Print without marking
releaseradar mcp                    Run the MCP server on stdio

What counts as an event

Kind When
issue_opened an issue the tracker had not seen, open
issue_closed an issue it had seen open is now closed
pr_opened a pull request it had not seen, open
pr_merged / pr_closed a pull request it had seen open is now merged / closed
release_published a release it had not seen (drafts are not releases)

A comment, a label or an edit changes nothing above and produces no event. The first sync of a repository seeds its state and produces none either.

License

MIT — see LICENSE.

Metadata

Release files for releaseradar 2026.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for releaseradar 2026.1
File Size Uploaded
releaseradar-2026.1.tar.gz 102.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for releaseradar 2026.1
File Interpreter ABI Platform
releaseradar-2026.1-py3-none-any.whl Python 3 none any Details

Total release size: 121.2 kB

Release files / releaseradar-2026.1.tar.gz

Download URL releaseradar-2026.1.tar.gz
Size 102.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a58900b62aabeb8c13beadec34b0dcd2a1d0b583a578b08ecedd92ca7de15d36
BLAKE2b-256 checksum
How to use checksums
38149f73853a4b4041471a1bbc457712393eb85a3d2d1ce4d051c1a53d582599
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release files / releaseradar-2026.1-py3-none-any.whl

Download URL releaseradar-2026.1-py3-none-any.whl
Size 19.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f307447d66b9f1d748895da1c64e14631ae2eb5ecb238d6805fda70c74e3338e
BLAKE2b-256 checksum
How to use checksums
5cf32354b44a81d197cdd49e17269f95ffcafc6d0d77b3101e86762e06eab5d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release history Release notifications | RSS feed

2026.5

2 release files

2026.4

2 release files

2026.3

2 release files

2026.2

2 release files

This release

2026.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page