How 0x-rekt/perchly works
Perchly is a GitHub App–based AI pull-request review system. GitHub PR events enter the webhook API, which filters and deduplicates events before starting a durable Temporal review. The review retrieves repository context, runs four specialist checks, aggregates findings, and applies posting policy; uncertain results wait for human approval before publication. The React console supports queue decisions and fix-PR previews, and exposes review-run and observability views. PostgreSQL-backed queue, tenant, and telemetry state supports these flows. The README documents the major capabilities; sampled source confirms key entry points, while unsampled wiring is represented only where documented.
Main entry points: activities.py Review activities · reviews.py Review routes · main.py FastAPI application · review_queue.py Review queue
Components 24
Event intake
- Webhook API
server/app/routers/github_webhooks.py - Delivery deduplication
server/app/services/idempotency.py - Temporal client
server/app/temporal/client.py
Review execution
- Review workflow
server/app/temporal/workflows.py - Review activities
server/app/temporal/activities.py - Context retrieval
server/app/services/retrieval.py - GitHub API client
server/app/services/github_api.py - Specialist agents
server/app/agents - Finding aggregation
server/app/services/aggregation.py - Posting policy
server/app/services/routing.py
Decisions and fixes
- Review queue
server/app/services/review_queue.py - Fix PR service
server/app/services/fix_pr.py
API and state
- FastAPI application
server/app/main.py - Review routes
server/app/routers/reviews.py - PostgreSQL
- Telemetry service
server/app/services/telemetry.py
Web console
- React console
web/src/App.tsx - Approval queue UI
web/src/components/queue/QueuePage.tsx - Review detail
web/src/components/queue/ReviewDetail.tsx - Observability views
web/src/components/observability/Overview.tsx - Review runs
web/src/components/observability/ReviewRuns.tsx
Other components
- GitHub
- Temporal service
- Gemini
Connections 33
- GitHub → Webhook API: sends PR events
- Webhook API → Delivery deduplication: claims delivery
- Webhook API → Temporal client: starts review
- Temporal client → Temporal service: starts workflow
- Temporal service → Review workflow: runs durably
- Review workflow → Review activities: dispatches steps
- Review activities → GitHub API client: fetches PR data
- Review activities → Context retrieval: builds context
- Context retrieval → PostgreSQL: retrieves context
- Review activities → Specialist agents: runs checks
- Specialist agents → Gemini: requests analysis
- Review activities → Finding aggregation: aggregates results
- Review activities → Posting policy: applies policy
- Review activities → GitHub API client: posts review
- Posting policy → Review queue: queues uncertain reviews
- Review queue → PostgreSQL: stores decisions
- Review workflow → Review queue: records outcomes
- FastAPI application → Review routes: mounts routes
- Review routes → Review queue: reads queue
- Review routes → Temporal client: signals decisions
- Review routes → Fix PR service: creates fix PR
- Review routes → GitHub API client: opens GitHub PR
- Fix PR service → GitHub API client: creates branch and PR
- FastAPI application → Telemetry service: initializes and refreshes
- Telemetry service → PostgreSQL: persists spans
- React console → Approval queue UI: routes queue
- React console → Observability views: routes overview
- React console → Review runs: routes runs
- Approval queue UI → Review detail: opens review
- Review detail → Review routes: submits decisions
- Review detail → Review routes: requests fix PR
- Observability views → FastAPI application: loads metrics
- Review runs → FastAPI application: loads traces