Release Radar is an always-on dependency briefing agent built with Google ADK. It reads requirements.txt or package.json, checks mapped dependencies against GitHub releases, and reports only changes that need attention: breaking changes, deprecations, security fixes, yanked releases, and major-versi
Sign in to save downloads to your library and vote.
Preview
๐ก Release Radar Agent
Release Radar is an always-on dependency briefing agent built with Google ADK. It reads requirements.txt or package.json, checks mapped dependencies against GitHub releases, and reports only changes that need attention: breaking changes, deprecations, security fixes, yanked releases, and major-version upgrades.
The app runs interactively in ADK Web or as a scheduled FastAPI service. Sample mode is deterministic and makes no GitHub requests. Scheduled delivery defaults to dry-run and remains off until Gmail or webhook settings are present.
Features
- Manifest parsing: Reads Python requirements plus npm runtime and development dependencies.
- GitHub release scanning: Uses the GitHub REST API with an optional token.
- Impact ranking: Scores security, breaking, yanked, major-version, and deprecation signals.
- Patch-noise filtering: Drops routine patch and minor releases without an impact signal.
- Text and HTML briefs: Groups changes by dependency with version delta, reason, impact, and release link.
- Google ADK agent: Exposes
root_agentfor interactive dependency questions. - Scheduler hooks: Accepts direct HTTP and Pub/Sub triggers.
- Opt-in delivery: Supports Gmail and generic webhooks only when explicitly configured.
How It Works
radar.pyparses a manifest and maps known packages or GitHub dependency URLs to repositories.- Sample mode loads deterministic GitHub-shaped data. Live mode fetches recent GitHub releases.
ranker.pyclassifies release notes and filters routine noise.delivery.pyrenders the selected releases as text and HTML.- ADK Web returns the brief interactively, while
scheduler_api.pyexposes scheduled HTTP and Pub/Sub paths. - The scheduler sends only when
dry_run=falseand Gmail or webhook configuration is present.
The source modules use the Python standard library for manifest parsing, GitHub access, rendering, and delivery. FastAPI provides the scheduler surface, and Google ADK provides the interactive agent.
Requirements
- Python 3.10+
- Gemini API key for ADK Web
- A project
requirements.txtorpackage.jsonfor live scans - Optional GitHub token for higher API rate limits
- Optional Gmail OAuth credentials or a webhook URL for delivery
Installation
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd awesome-llm-apps/always_on_agents/release_radar_agent
pip install -r requirements.txt
export GOOGLE_API_KEY="your_gemini_api_key"
Run in ADK Web
Start with deterministic sample data:
adk web .
Open ADK Web, select release_radar_agent, and try:
Give me today's dependency release brief.
To scan a real project, set an absolute manifest path and enable live GitHub requests before starting ADK Web:
export RELEASE_RADAR_MANIFEST="/absolute/path/to/requirements.txt"
export RELEASE_RADAR_LIVE_GITHUB=true
export RELEASE_RADAR_GITHUB_TOKEN="optional_github_token"
adk web .
Release Radar recognizes direct GitHub dependency URLs and common packages such as Pydantic, FastAPI, Requests, OpenAI, Anthropic, Google ADK, LangChain, React, Vite, and Zod. Unmapped dependencies appear in the scan notes instead of stopping the brief.
Run the Scheduler API
Set the project manifest in the service environment, then start the backend from this directory:
export RELEASE_RADAR_MANIFEST="/workspace/requirements.txt"
export RELEASE_RADAR_LIVE_GITHUB=true
uvicorn scheduler_api:app --host 0.0.0.0 --port 8000
Preview the deterministic sample brief without delivery:
curl "http://127.0.0.1:8000/release-radar/dry-run?top_n=5&live=false"
Scan a manifest through the scheduler path while keeping delivery off:
curl -X POST "http://127.0.0.1:8000/release-radar/trigger" \
-H "Content-Type: application/json" \
-d '{"dry_run": true, "live": true, "top_n": 10}'
The server reads its manifest only from RELEASE_RADAR_MANIFEST, so request payloads cannot select arbitrary local files. The path must exist inside the scheduler service. Set RELEASE_RADAR_GITHUB_TOKEN in the service environment when scanning many repositories.
Enable Delivery
Delivery has two independent guards. The request must set "dry_run": false, and one provider must be fully configured. Without both, the API returns a skipped status and sends nothing.
Gmail
Create a Google OAuth client with Gmail API access and a refresh token using the https://www.googleapis.com/auth/gmail.send scope, then set:
export RELEASE_RADAR_DELIVERY="gmail"
export RELEASE_RADAR_EMAIL_TO="you@example.com"
export RELEASE_RADAR_EMAIL_FROM="you@example.com"
export RELEASE_RADAR_GMAIL_CLIENT_ID="your_google_oauth_client_id"
export RELEASE_RADAR_GMAIL_CLIENT_SECRET="your_google_oauth_client_secret"
export RELEASE_RADAR_GMAIL_REFRESH_TOKEN="your_gmail_refresh_token"
Webhook
Use a webhook to route the brief to Slack, Linear, Jira, or an internal workflow:
export RELEASE_RADAR_DELIVERY="webhook"
export RELEASE_RADAR_WEBHOOK_URL="https://example.com/dependency-brief"
export RELEASE_RADAR_WEBHOOK_TOKEN="optional_bearer_token"
After configuring a provider, trigger a live delivery:
curl -X POST "http://127.0.0.1:8000/release-radar/trigger" \
-H "Content-Type: application/json" \
-d '{"dry_run": false, "live": true, "top_n": 10}'
Cloud Scheduler
Deploy the FastAPI service behind Cloud Run or another HTTP service. Cloud Scheduler can call the direct endpoint:
https://YOUR_SERVICE_URL/release-radar/trigger
It can also publish base64-encoded JSON to the Pub/Sub push endpoint:
https://YOUR_SERVICE_URL/release-radar/pubsub
A weekday morning schedule is:
0 9 * * 1-5
Keep dry_run set to true while validating the deployment.
Test
python3 -m pytest always_on_agents/release_radar_agent/tests/unit -q
The tests use deterministic sample releases and patch network access when checking delivery safety.
This app is licensed under Apache-2.0 through the repository's root license.
Ingestion metadata
- Source catalog
- awesome-llm-apps
- Repository
- Shubhamsaboo/awesome-llm-apps ยท main
- File path
- always_on_agents/release_radar_agent/README.md
- Last refreshed
- 7/23/2026, 10:39:09 PM (4h ago)
- Refresh schedule
- Daily ยท 03:00 UTC
- Dedupe status
- Unique ยท deduped by (source, url)