built a self-running agent that watches a GitHub repository's open issues and pull requests, classifies each one (bug / feature / question / duplicate / docs), assigns an urgency priority (1–5), and renders a prioritized dashboard — so a maintainer sees at a glance what really needs attention.

How the agent works (3 steps)

  1. Fetch — reads open issues + PRs via the GitHub API for any owner/repo.
  2. Reason — each item is sent to an LLM with a strict JSON contract: {category, short_reason, priority}. Because free LLM tiers get overloaded (lots of HTTP 503s), it rotates through ~5 :free models with automatic fallback.
  3. Render — a no-dependency page shows color-coded cards sorted by priority, each linking to the original issue, with category summary + filters.

Real runs

  • facebook/react (22 open items) → 22/22 classified, zero errors. Examples: p1 bug "Freezing props prevents later assignments causing errors", p1 question "Performance optimization inquiry…".
  • typeorm/typeorm (22 items) → clean bug / feature / docs verdicts.

Why it matters Triage is the boring 80% of OSS maintenance. This agent does it continuously and for free, and the same skeleton (read real state → structured LLM decision → actionable UI) powers PR review, dependency-drift alerts, or release-note generation.

Honest notes Free-tier LLMs are flaky; model rotation is non-negotiable. Small models sometimes return sloppy JSON — the parser takes the first {...} block. GitHub unauthd rate limit (60/hr) matters for big repos; a PAT removes it.

Built With

  • adapter
  • agents
  • github-pages-static-demo-mirror
  • github-rest-api
  • node.js-(no-frameworks
  • openrouter-:free-llm-models
  • optional
  • sdk
  • strands
Share this project:

Updates

Submission history