{"id":48834990,"url":"https://github.com/AsyncFuncAI/AsyncReview","last_synced_at":"2026-04-30T22:00:52.527Z","repository":{"id":334492287,"uuid":"1141081355","full_name":"AsyncFuncAI/AsyncReview","owner":"AsyncFuncAI","description":"Open-source Agentic code review tool inspired by DevinReview, using Recursive Language Models (RLM)","archived":false,"fork":false,"pushed_at":"2026-02-08T03:40:58.000Z","size":386,"stargazers_count":124,"open_issues_count":3,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-08T11:27:04.393Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AsyncFuncAI.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-24T07:55:27.000Z","updated_at":"2026-02-08T10:41:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AsyncFuncAI/AsyncReview","commit_stats":null,"previous_names":["asyncfuncai/asyncreview"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/AsyncFuncAI/AsyncReview","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsyncFuncAI%2FAsyncReview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsyncFuncAI%2FAsyncReview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsyncFuncAI%2FAsyncReview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsyncFuncAI%2FAsyncReview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AsyncFuncAI","download_url":"https://codeload.github.com/AsyncFuncAI/AsyncReview/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsyncFuncAI%2FAsyncReview/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32478162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"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":[],"created_at":"2026-04-14T23:00:20.833Z","updated_at":"2026-04-30T22:00:52.518Z","avatar_url":"https://github.com/AsyncFuncAI.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# AsyncReview\n\n**Agentic Code Review for GitHub PRs and Issues**\n\nAsyncReview uses Recursive Language Models (RLM) to go beyond simple diff analysis. It autonomously explores your repository, fetches relevant context, and verifies its findings in a secure sandbox before answering.\n\n```\n       User Request\n     \"Verify this PR/Issue\"\n           │\n           ▼\n+-------------------------------------------------------+\n|  AsyncReview Agent (Recursive Loop)                   |\n|                                                       |\n|  1. Reason \u0026 Plan                                     |\n|  2. Generate Python Code                              |\n|       │                                               |\n|       ▼                                               |\n|  3. [Python REPL Sandbox]                             |\n|     (Executes logic + llm_query() + tool commands)    |\n|       │                                               |\n|       ▼                                               |\n|  4. Tool Interceptor \u003c-----\u003e [GitHub API]             |\n|     (FETCH_FILE, SEARCH)     (Fetches real data)      |\n|       │                                               |\n|       ▼                                               |\n|  5. Observe Result \u0026 Repeat Recursively               |\n+-------------------------------------------------------+\n           │\n           ▼\n      [10x High Quality Answer]\n```\n\n#\n\u003cimg width=\"588\" height=\"596\" alt=\"image\" src=\"https://github.com/user-attachments/assets/daad14de-119f-45a8-9ad9-db6649dc9c44\" /\u003e\n\n\n## Why AsyncReview?\n\nMost AI review tools only look at the lines changed in a Pull Request (the diff). This leads to shallow feedback and hallucinations about files that don't exist. AsyncReview takes a different approach.\n\n| Other Code Review Tools | AsyncReview |\n|-------------|-------------|\n| **Limited Context:** Only sees the git diff | **Full Context:** Can read any file in the repo to understand dependencies |\n| **Static Analysis:** Guesses how code works | **Agentic Analysis:** Can execute search queries and run verification scripts |\n| **Hallucinations:** Invents library methods | **Grounded:** cites existing file paths and lines |\n| **Simple Prompts:** One-shot generation | **Recursive Reasoning:** Thinks, plans, and iterates before answering |\n\n## Quick Start\n\nNo installation required. Run directly with npx:\n\n```bash\nnpx asyncreview review --url https://github.com/org/repo/pull/123 -q \"Check for breaking changes\"\n```\n\nOR\n\n```bash\nnpx skills add AsyncFuncAI/AsyncReview\n```\n\n## Usage\n\n### Public Repositories\n\nFor public repos, you only need a Gemini API key.\n\n```bash\nexport GEMINI_API_KEY=\"your-key\"\nnpx asyncreview review --url https://github.com/org/repo/pull/123 -q \"Review this\"\n```\n\n### Private Repositories\n\nFor private repos, you also need a GitHub token.\n\n1. **Set your GitHub Token** (or use the `--github-token` flag)\n   ```bash\n   # If you have GitHub CLI installed\n   export GITHUB_TOKEN=$(gh auth token)\n   \n   # Or manually set it\n   export GITHUB_TOKEN=\"ghp_...\"\n   ```\n\n2. **Run the review**\n   ```bash\n   npx asyncreview review --url https://github.com/org/private-repo/pull/456 -q \"Security audit\"\n   ```\n\n## Configuration\n\n**Required:**\n- **Gemini API Key:** Get one from Google AI Studio. Set as `GEMINI_API_KEY`.\n\n**Optional:**\n- **GitHub Token:** Required for private repositories to access file contents. Set as `GITHUB_TOKEN`.\n\n## For Agents (Claude, Cursor, OpenCode, Gemini, Codex, etc.)\n\nAsyncReview is designed to be used as a **Skill** by other agentic providers. It allows them to \"see\" and \"reason\" about codebases they don't have local access to.\n\n### Install via Skills CLI\n\nRun this command to automatically add AsyncReview to your agent's capabilities:\n\n```bash\nnpx skills add AsyncFuncAI/AsyncReview\n```\n\nThis works with [vercel/skills](https://github.com/vercel/skills) compatible agents.\n\n### Manual Setup\n\nIf you prefer manual configuration, point your agent to the skill definition file:\n`skills/asyncreview/SKILL.md`\n\n## Advanced Setup\n\nTo run the full backend server or web interface locally, please see the [Installation Guide](INSTALLATION.md).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAsyncFuncAI%2FAsyncReview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAsyncFuncAI%2FAsyncReview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAsyncFuncAI%2FAsyncReview/lists"}