Always-on Hacker News Briefing Agent
AgentScout is an always-on Hacker News briefing agent built with Google ADK. It scans Hacker News for high-signal stories about AI agents, MCP, coding…
- Gemini
Always-On Agents ·Advanced
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.
GOOGLE_API_KEYRELEASE_RADAR_GITHUB_TOKENRELEASE_RADAR_GMAIL_REFRESH_TOKENRELEASE_RADAR_WEBHOOK_TOKENLicense Apache-2.0 · content curated and maintained by Doutor AI.
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.
root_agent for interactive dependency questions.radar.py parses a manifest and maps known packages or GitHub dependency URLs to repositories.ranker.py classifies release notes and filters routine noise.delivery.py renders the selected releases as text and HTML.scheduler_api.py exposes scheduled HTTP and Pub/Sub paths.dry_run=false and 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.txt or package.json for live scansgit 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"
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.
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.
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.
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"
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}'
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.
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.
AgentScout is an always-on Hacker News briefing agent built with Google ADK. It scans Hacker News for high-signal stories about AI agents, MCP, coding…
Need a tailor-made solution?
Not sure where to start with AI in your business? Get a free assessment and a tailored plan - no commitment.
Doutor AI gives you 1,859 ready-to-copy AI prompts, by industry and in plain English - plus a complete technical library for those who want to go further.