This guide covers advanced installation and setup for running AsyncReview locally with the full web UI and API server.
Note: If you just want to review GitHub PRs/Issues, you don't need to install anything! Just use
npx asyncreview(see main README).
- Python 3.11+
- Node.js 18+ (or Bun)
- uv (recommended for Python package management)
- Deno (Required for sandboxed code execution)
macOS:
# Install uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install Deno
curl -fsSL https://deno.land/install.sh | sh
# Install Bun (optional, alternative to npm)
curl -fsSL https://bun.sh/install | bashLinux:
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install Deno
curl -fsSL https://deno.land/install.sh | shWindows:
# Install uv
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Install Deno
irm https://deno.land/install.ps1 | iexgit clone https://github.com/AsyncFuncAI/AsyncReview.git
cd AsyncReview# Using uv (Recommended)
uv pip install -e .
# Or standard pip
pip install -e .
# Pre-cache Deno dependencies (speeds up first run)
deno cache npm:pyodide/pyodide.jscd web
bun install # or npm installCopy .env.example to .env and fill in your API keys:
cp .env.example .envRequired environment variables:
# .env file
GEMINI_API_KEY=your_gemini_api_key_here
GITHUB_TOKEN=your_github_token_here # Optional for npx, required for web UIGetting your API keys:
- Gemini API Key: Get from Google AI Studio
- GitHub Token:
- Quick:
gh auth token(if you have GitHub CLI) - Manual: Create Personal Access Token
- Select
reposcope for private repositories - Select
public_repofor public repositories only
- Select
- Quick:
Start the API Server:
cr serve
# or
uv run uvicorn cr.server:app --reloadServer runs at http://127.0.0.1:8000.
Start the Web UI:
cd web
bun dev # or npm run devOpen http://localhost:3000 in your browser.
The cr CLI allows you to review local codebases:
# Interactive Q&A mode
cr ask
# One-shot review
cr review -q "What does this repo do?"
# Review specific files
cr review -q "Analyze src/main.py for bugs"
# Get help
cr --helpNo installation needed - works from anywhere:
npx asyncreview review --url https://github.com/org/repo/pull/123 -q "Review this PR"See the main README for npx usage details.
If you see errors like Could not find npm:pyodide, run:
deno cache npm:pyodide/pyodide.jsThe first run may take longer as Deno downloads and compiles Pyodide (~50MB). Subsequent runs are instant.
Ensure you're using Python 3.11+:
python --version
# or
python3 --versionIf needed, install Python 3.11+ from python.org.
If uv commands fail, ensure it's in your PATH:
# Add to ~/.bashrc or ~/.zshrc
export PATH="$HOME/.cargo/bin:$PATH"If port 8000 is already in use:
# Use a different port
uvicorn cr.server:app --port 8001# Run all tests
pytest
# Run specific test file
pytest tests/test_github.py
# Run with coverage
pytest --cov=cr# Run mypy
mypy cr/# Format with black
black cr/ tests/
# Sort imports
isort cr/ tests/AsyncReview consists of three main components:
cr(Python Backend): Core RLM engine with Pyodide sandboxweb(Next.js Frontend): Interactive web UI for PR reviewsnpx asyncreview(CLI): Zero-install command for GitHub PR/Issue reviews
For more details, see the main README.