{"id":47730198,"url":"https://github.com/tang-vu/contribai","last_synced_at":"2026-04-06T19:01:17.549Z","repository":{"id":345096304,"uuid":"1184461384","full_name":"tang-vu/ContribAI","owner":"tang-vu","description":"Autonomous AI agent that contributes to open source — discovers repos, analyzes code, generates fixes, and submits PRs","archived":false,"fork":false,"pushed_at":"2026-04-02T15:36:57.000Z","size":5215,"stargazers_count":202,"open_issues_count":0,"forks_count":78,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-03T06:40:51.218Z","etag":null,"topics":["agent","ai","ai-agent","automation","autonomous-agent","code-analysis","code-quality","contributions","gemini","github","llm","open-source","pull-requests","python","security"],"latest_commit_sha":null,"homepage":"https://github.com/tang-vu/ContribAI","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tang-vu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-17T15:57:53.000Z","updated_at":"2026-04-03T05:45:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tang-vu/ContribAI","commit_stats":null,"previous_names":["tang-vu/contribai"],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/tang-vu/ContribAI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tang-vu%2FContribAI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tang-vu%2FContribAI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tang-vu%2FContribAI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tang-vu%2FContribAI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tang-vu","download_url":"https://codeload.github.com/tang-vu/ContribAI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tang-vu%2FContribAI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31485516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","ai-agent","automation","autonomous-agent","code-analysis","code-quality","contributions","gemini","github","llm","open-source","pull-requests","python","security"],"created_at":"2026-04-02T21:24:49.352Z","updated_at":"2026-04-06T19:01:17.543Z","avatar_url":"https://github.com/tang-vu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# ContribAI\n\n**Autonomous AI agent that discovers, analyzes, and submits\u003cbr\u003ePull Requests to open source projects on GitHub.**\n\n[![Rust](https://img.shields.io/badge/Rust-1.75+-f74c00?style=for-the-badge\u0026logo=rust\u0026logoColor=white)](https://www.rust-lang.org/)\n[![Version](https://img.shields.io/badge/v5.4.0-blue?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/tang-vu/ContribAI/releases)\n[![License](https://img.shields.io/badge/AGPL--3.0-green?style=for-the-badge\u0026logo=opensourceinitiative\u0026logoColor=white)](LICENSE)\n[![Tests](https://img.shields.io/badge/335+_tests-passing-brightgreen?style=for-the-badge\u0026logo=checkmarx\u0026logoColor=white)](#testing)\n[![PRs Merged](https://img.shields.io/badge/10_PRs-merged-blueviolet?style=for-the-badge\u0026logo=git\u0026logoColor=white)](HALL_OF_FAME.md)\n\n\u003cbr\u003e\n\n[**Getting Started**](#-getting-started) · [**Features**](#-features) · [**Commands**](#-commands) · [**Architecture**](#-architecture) · [**Hall of Fame**](HALL_OF_FAME.md)\n\n\u003cbr\u003e\n\n```\nSet it up once. Wake up to merged PRs.\n```\n\n\u003c/div\u003e\n\n---\n\n## 🏆 Track Record\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n| Metric | |\n|:-------|------:|\n| **PRs Submitted** | `44+` |\n| **PRs Merged** | `10` |\n| **Repos Contributed** | `21+` |\n| **Languages Analyzed** | `13` |\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Notable Contributions:**\n\n🌍 `Worldmonitor` — 45k ⭐ · 3 merged\u003cbr\u003e\n🕵️ `Maigret` — 19k ⭐ · 3 merged\u003cbr\u003e\n🤖 `AI-Research-SKILLs` — 6k ⭐ · 1 merged\u003cbr\u003e\n📊 `s-tui` — 5k ⭐ · 1 merged\u003cbr\u003e\n🔍 `HolmesGPT` — 2k ⭐ · 1 merged\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e See the full **[Hall of Fame →](HALL_OF_FAME.md)** for every PR with links.\n\n---\n\n## ⚡ How It Works\n\n```\n┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐\n│  Discovery  │────▶│  Analysis   │────▶│  Generator  │────▶│  PR + CI    │────▶│   Patrol    │\n│             │     │             │     │             │     │             │     │             │\n│ Search repos│     │ 13-lang AST │     │ LLM-powered │     │ Fork, commit│     │ Auto-fix    │\n│ by language │     │ 17 skills   │     │ code gen +  │     │ create PR   │     │ review      │\n│ and stars   │     │ security,   │     │ self-review │     │ sign CLA    │     │ feedback    │\n│             │     │ quality,    │     │ + scoring   │     │ monitor CI  │     │ \u0026 reply     │\n│             │     │ performance │     │             │     │             │     │             │\n└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘\n```\n\n---\n\n## 🚀 Getting Started\n\n### Install\n\n```bash\n# Build from source (recommended)\ngit clone https://github.com/tang-vu/ContribAI.git \u0026\u0026 cd ContribAI\ncargo install --path crates/contribai-rs\n\n# Or one-line install\ncurl -fsSL https://raw.githubusercontent.com/tang-vu/ContribAI/main/install.sh | bash\n# Windows:\nirm https://raw.githubusercontent.com/tang-vu/ContribAI/main/install.ps1 | iex\n```\n\n### Configure\n\n```bash\ncontribai init     # Interactive setup wizard\ncontribai login    # Verify auth + switch LLM providers\n```\n\n### Run\n\n```bash\ncontribai hunt                # Autonomous: discover → analyze → PR\ncontribai target \u003crepo_url\u003e   # Target a specific repo\ncontribai analyze \u003crepo_url\u003e  # Dry-run analysis (no PRs)\ncontribai interactive         # Browse in ratatui TUI\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e📝 \u003cstrong\u003eExample config.yaml\u003c/strong\u003e\u003c/summary\u003e\n\n```yaml\ngithub:\n  token: \"ghp_your_token\"       # or set GITHUB_TOKEN env var\n\nllm:\n  provider: \"gemini\"            # gemini | openai | anthropic | ollama | vertex\n  model: \"gemini-3-flash-preview\"\n  api_key: \"your_api_key\"       # or set GEMINI_API_KEY env var\n\ndiscovery:\n  languages:                    # default: all 15 languages\n    - python\n    - javascript\n    - typescript\n    - go\n    - rust\n  stars_range: [100, 5000]\n```\n\nSee [`config.yaml.template`](config.yaml.template) for all options.\n\n\u003c/details\u003e\n\n---\n\n## ✨ Features\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### 🔍 Code Analysis\n- **13-language AST** via tree-sitter\n- Security: SQLi, XSS, resource leaks\n- Code quality, complexity, dead code\n- Performance bottlenecks\n- Documentation gaps\n- **17 progressive skills** loaded on-demand\n\n### 🤖 Multi-LLM Support\n- **Gemini 3.x** (default) — Flash, Pro, Lite tiers\n- OpenAI, Anthropic, Ollama, Vertex AI\n- Smart task routing across model tiers\n- 5 specialized sub-agents\n\n### 🎯 Hunt Mode\n- Multi-round autonomous hunting\n- Issue-first strategy\n- Cross-file fixes\n- Outcome learning per repo\n\n\u003c/td\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### 👁 PR Patrol\n- Monitors PRs for review feedback\n- LLM-classifies maintainer comments\n- Auto-pushes code fixes\n- Auto-replies to questions\n- Auto-cleans stale PRs from memory\n\n### 🔌 Integrations\n- **MCP Server** — 21 tools for Claude Desktop\n- **Web Dashboard** — axum REST API at `:8787`\n- **Cron Scheduler** — automated runs\n- **Docker** — compose-ready deployment\n- **Webhooks** — Slack, Discord, Telegram\n\n### 🛡 Safety\n- AI policy detection\n- CLA auto-signing\n- Quality gate scoring\n- Duplicate PR prevention\n- Protected file guardrails\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### Supported Languages\n\n| Deep AST (tree-sitter) | Fallback Parser |\n|:----------------------:|:---------------:|\n| Python · JavaScript · TypeScript · Go · Rust · Java | Kotlin → Java |\n| C · C++ · Ruby · PHP · C# · HTML · CSS | Swift → Java · Vue/Svelte → HTML |\n\n---\n\n## 📖 Commands\n\nContribAI ships with **22 commands** accessible via CLI or interactive menu.\n\n\u003cdetails\u003e\n\u003csummary\u003e🔥 \u003cstrong\u003eHunt \u0026 Contribute\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\ncontribai hunt                        # Autonomous discovery + PRs\ncontribai hunt --dry-run              # Analyze only, no PRs\ncontribai run                         # Single pipeline run\ncontribai target \u003curl\u003e                # Target specific repo\ncontribai analyze \u003curl\u003e               # Dry-run analysis\ncontribai solve \u003curl\u003e                 # Solve open issues\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e📊 \u003cstrong\u003eMonitor \u0026 Stats\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\ncontribai patrol                      # Respond to PR reviews\ncontribai status                      # PR status table\ncontribai stats                       # Contribution statistics\ncontribai leaderboard                 # Merge rate by repo\ncontribai system-status               # DB, rate limits, scheduler\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🖥️ \u003cstrong\u003eInteractive \u0026 Config\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\ncontribai                             # Interactive menu (22 items)\ncontribai interactive                 # ratatui TUI browser\ncontribai init                        # Setup wizard\ncontribai login                       # Interactive auth + provider config\ncontribai config-list                 # Show all config\ncontribai config-get llm.provider     # Get config value\ncontribai config-set llm.provider openai  # Set config value\ncontribai profile security-focused    # Named profile\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🌐 \u003cstrong\u003eServers \u0026 Tools\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\ncontribai web-server                  # Dashboard at :8787\ncontribai schedule                    # Cron scheduler\ncontribai mcp-server                  # MCP stdio server\ncontribai cleanup                     # Remove stale forks\ncontribai notify-test                 # Test Slack/Discord/Telegram\n```\n\n\u003c/details\u003e\n\n---\n\n## 🏗 Architecture\n\n```\nContribAI/\n├── crates/contribai-rs/src/        ← Rust v5.4.0 (primary)\n│   ├── cli/                        22 commands + ratatui TUI\n│   ├── core/                       Config, events, error types\n│   ├── github/                     REST v3 + GraphQL client\n│   ├── analysis/                   13-lang AST + 17 skills\n│   ├── generator/                  LLM code generation + scoring\n│   ├── orchestrator/               Pipeline + SQLite memory (72h TTL)\n│   ├── llm/                        Multi-provider + 5 sub-agents\n│   ├── pr/                         PR lifecycle + patrol + CI\n│   ├── mcp/                        21-tool MCP server (stdio)\n│   ├── web/                        axum dashboard + webhooks\n│   ├── sandbox/                    Docker + local fallback\n│   └── tools/                      Tool protocol interface\n│\n└── python/                         Legacy v4.1.0 (reference only)\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e🔧 \u003cstrong\u003eTech Stack\u003c/strong\u003e\u003c/summary\u003e\n\n| Layer | Technology |\n|:------|:-----------|\n| Language | **Rust 2021** (primary), Python 3.11+ (legacy) |\n| Async | Tokio (full), async/await throughout |\n| HTTP | reqwest 0.12 (async, rustls-tls) |\n| Database | SQLite (rusqlite, bundled) |\n| LLM | Gemini 3.x, OpenAI, Anthropic, Ollama, Vertex AI |\n| GitHub | REST API v3 + GraphQL |\n| AST | tree-sitter (13 languages) |\n| Web | axum 0.7 + tower-http |\n| TUI | ratatui + crossterm |\n| CLI | clap v4 + dialoguer + colored |\n| Tests | 335+ tests (mockall, wiremock, tokio-test) |\n\n\u003c/details\u003e\n\nSee [`docs/system-architecture.md`](docs/system-architecture.md) for the full design.\n\n---\n\n## 🧪 Testing\n\n```bash\ncargo test                  # Run all 335+ tests\ncargo test -- --nocapture   # With stdout output\ncargo test ast_intel        # AST module tests only\ncargo clippy                # Lint check\n```\n\n---\n\n## 🔌 MCP Server\n\nUse ContribAI as a tool provider for **Claude Desktop** or **Antigravity IDE**:\n\n```json\n{\n  \"mcpServers\": {\n    \"contribai\": {\n      \"command\": \"contribai\",\n      \"args\": [\"mcp-server\"]\n    }\n  }\n}\n```\n\n\u003e 21 tools available: repo analysis, PR management, GitHub search, issue solving, memory queries, and more.\n\n---\n\n## 🐳 Docker\n\n```bash\ndocker compose up -d dashboard            # Dashboard at :8787\ndocker compose run --rm runner run        # One-shot pipeline run\ndocker compose up -d dashboard scheduler  # Dashboard + cron scheduler\n```\n\n---\n\n## 📚 Documentation\n\n| Document | Description |\n|:---------|:------------|\n| [**Hall of Fame**](HALL_OF_FAME.md) | 10 merged · 14 closed across 21+ repos |\n| [**AGENTS.md**](AGENTS.md) | AI agent guide — architecture, patterns, CLI reference |\n| [**Deployment Guide**](docs/deployment-guide.md) | Install, Docker, config, all 22 CLI commands |\n| [**System Architecture**](docs/system-architecture.md) | Pipeline, middleware, events, LLM routing |\n| [**Codebase Summary**](docs/codebase-summary.md) | Module map, tech stack, data structures |\n| [**Project Roadmap**](docs/project-roadmap.md) | Version history and future plans |\n\n---\n\n## 📄 License\n\n**AGPL-3.0 + Commons Clause** — see [LICENSE](LICENSE) for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with Rust 🦀 and LLMs 🤖**\n\n[Releases](https://github.com/tang-vu/ContribAI/releases) · [Issues](https://github.com/tang-vu/ContribAI/issues) · [Hall of Fame](HALL_OF_FAME.md)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftang-vu%2Fcontribai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftang-vu%2Fcontribai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftang-vu%2Fcontribai/lists"}