Skip to content

RitikPatill/oss-radar

Repository files navigation

oss-radar

Third sibling in the orchestrator family alongside autodev and agent-radar.

Different mission. autodev and agent-radar create new repos under the user's account. oss-radar contributes PRs to OTHER PEOPLE'S open-source repos — small, high-quality contributions to active AI startup projects, with the goal of building a track record of merged PRs that recruiters can verify.

Status: working MVP. Discovers candidate repos, runs an Opus-free Sonnet-only agent chain to research → plan → implement → review → submit. Cap: 2 contribution attempts per week. AI involvement is always disclosed in the PR body.


Why this is harder than autodev

In autodev, Claude builds something from scratch in an empty workspace. Here, Claude has to:

  • Read someone else's codebase and understand it
  • Match their style, conventions, and patterns
  • Make a surgical change without scope creep
  • Run their test suite and pass
  • Write a PR body the maintainer actually opens
  • Disclose AI involvement honestly

The merge-vs-reject ratio is fundamentally outside our control: maintainers are humans with opinions and time constraints. Quality matters more here than anywhere else in the orchestrator family.

Architecture

  ┌─────────┐    ┌──────────┐    ┌────────┐    ┌──────────┐
  │  scout  │───▶│researcher│───▶│ planner│───▶│implementer│
  └─────────┘    └──────────┘    └────────┘    └─────┬────┘
                                                      │
       ┌──────────┐    ┌──────────┐    ┌──────────┐  ▼
       │ improver │    │ pr_writer│◀───│ reviewer │
       │ (weekly) │    └────┬─────┘    └──────────┘
       └──────────┘         │
                             ▼
                  ┌──────────────────┐
                  │  publisher       │
                  │  fork → clone →  │
                  │  branch → push → │
                  │  open upstream PR│
                  └──────────────────┘

Components

File / dir Role Model
scout.py GitHub Search API for AI startup-tier repos with good-first-issue none (HTTP)
agents/researcher.py Read CONTRIBUTING, detect anti-AI policy / CLA, pick ONE issue Sonnet 4.6
agents/planner.py Plan technical approach (read-only) Sonnet 4.6
agents/implementer.py Make actual code changes in the forked clone Sonnet 4.6
agents/reviewer.py Pre-PR self-review (scope, AI-tells, tests pass) Sonnet 4.6
agents/pr_writer.py Compose PR title + body + AI disclosure Sonnet 4.6
agents/improver.py Weekly self-improvement, edits agent prompts Sonnet 4.6
publisher.py Fork + clone + branch + push + open upstream PR none (API)
contributor.py Stitch agents into the contribution lifecycle none
orchestrator.py Tick loop, pacing, self-heal, retries none
state.py SQLite state at %LOCALAPPDATA%\oss-radar\ none
claude_cli.py claude -p headless wrapper none

Sonnet-only by design

User reserved Opus quota for primary work. Every LLM call in oss-radar runs on Sonnet 4.6 — including the improver self-improvement layer (autodev uses Opus there; agent-radar and oss-radar both use Sonnet for cost discipline).

Pacing

  • 2 contribution attempts per week max (rolling 7-day cap)
  • 36-hour minimum gap between PR-open events
  • Skip-day probability 20%
  • Commit windows: weekday 19:00-23:00, weekend 10:00-22:00
  • One open PR per upstream repo at a time

Quality gates

Before opening a PR, all must hold:

  1. Researcher verdict is proceed (not skipped for anti-AI / CLA / etc.)
  2. Planner's estimated diff is ≤ 80 lines
  3. Implementer's tests pass
  4. Reviewer's verdict is pass (or fix resolved within MAX_FIX_ROUNDS)
  5. PR body includes AI disclosure (non-negotiable)

If any gate fails the attempt becomes skipped with a reason logged, and the orchestrator picks the next candidate target on the next tick.

Setup + running

python orchestrator.py preflight    # token + claude check
python orchestrator.py scout        # discover candidate repos
python orchestrator.py status       # active attempt + counts
python orchestrator.py health       # full system check
python orchestrator.py improver     # force a self-improvement run
python orchestrator.py run          # loop forever

For unattended operation: install_autostart.ps1 registers a Task Scheduler entry that auto-launches on login with a 30-min heartbeat (offset 25 min from autodev so all three orchestrators alternate).

License

MIT — see LICENSE.

About

Autonomous OSS contribution agent. Sonnet-only chain (researcher/planner/implementer/reviewer/pr-writer/improver) finds AI startup repos with good-first-issues, makes small surgical PRs with honest AI disclosure. Sibling to autodev + agent-radar.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors