AI-powered code review for GitHub

Merge faster.
Miss less.

Gaston reviews every pull request like a senior teammate who flags real risks, suggests fixes, and explains why. Ship with confidence.

Try It For Free →

Free to start · Installs in 30 seconds · Works with any language

How it works

Three steps to better PRs

No configuration files. No team training. No new tools to learn.

1

Install the app

Sign up with GitHub and pick your repos. Gaston integrates as a GitHub App with zero configuration and no CI changes.

2

Open a pull request

Push code like you always do. Gaston automatically reviews every PR. No commands, no triggers, no waiting.

3

Merge with confidence

Get a clear verdict with severity tags, concrete fixes, and a merge-readiness summary. No noise, just signal.

Reviews that
actually help

Not a wall of generic comments. Gaston gives you a structured verdict: severity-tagged findings, concrete fixes, and a clear recommendation. Every comment earns its place.

Security vulnerabilities flagged with fixes
Performance bottlenecks with alternatives
Clear severity: blocker vs suggestion
Merge-readiness verdict on every PR

Instant reviews

Every PR reviewed in minutes. No waiting for teammates.

Higher code quality

Catches security, performance, and logic bugs humans miss.

Zero extra work

No config, no new habits. Just open a PR.

packages/db/src/pipeline-events.ts
1import { pool } from './connection';
2import type { PipelineEvent } from './types';
3
4/** Must never block the review pipeline */
5export async function insertPipelineEvent(
6 event: PipelineEvent
7) {
8 try {
9 await pool.query(
Comment on line R9
Ggaston-reviewbot1 hour ago···
await pool.query() keeps the caller blocked on DB latency. This contradicts the “must never block” contract. Move insert off the critical path or use bounded timeout with drop semantics.
Write a reply
Resolve comment
10 'INSERT INTO pipeline_events ...',
11 [event.type, event.payload]
12 );
13 } catch (err) {
14 console.error('telemetry write failed', err);
15 }
16}
17
18export async function insertPipelineEvents(
19 events: PipelineEvent[]
20) {
21 const client = await pool.connect();
22 await client.query("SET statement_timeout = '5000'");
Comment on line R22
Ggaston-reviewbot1 hour ago···
This mutates session state on a pooled connection. After client.release(), the next borrower inherits a 5s timeout. Use SET LOCAL inside a transaction to scope it properly.
Write a reply
Resolve comment
23 for (const e of events) {
24 await client.query('INSERT INTO ...', [e]);
25 }
26 client.release();
27}
Gastongaston-reviewbot
🔄 Changes Requested
██████░░░░6/10
Both helpers are documented as “must never block the review flow” but they synchronously await Postgres writes. If DB is slow, the pipeline stalls despite error swallowing.
📌 2 inline comments

Agent-first

Your agents write code.
Gaston makes sure it ships.

AI coding agents move fast. Gaston catches what they miss before it hits production.

99%
of agent-written PRs have issues found
90%
approved after a single review cycle
9%
need just one more pass

Why Gaston

Not another comment bot

Most AI reviewers add noise. Gaston adds signal.

Gaston

Structured verdicts with severity tags, merge readiness, and clear next steps
Actionable fixes as code snippets, not vague suggestions
Signal over noise. Fewer comments, but each one matters
Catches what matters: security, breaking changes, performance traps
Zero ceremony. Installs in seconds, no config files

Generic AI Reviewers

×Walls of shallow, repetitive comments
×"Consider refactoring this." Thanks for nothing.
×More noise than your linter already catches
×Misses real issues while bikeshedding style
×Complex setup, YAML configs, CI pipelines

Your PRs deserve a
better reviewer.

Install Gaston in 30 seconds. Free to start. No credit card.

Try It For Free →

FAQ

Questions

How does Gaston handle private code?
Gaston accesses your code only through GitHub's API with the permissions you grant. Code is processed for review and never stored or used for training.
Can I choose which repos Gaston reviews?
Yes. During installation, you select exactly which repositories Gaston has access to. You can change this anytime from your GitHub settings.
Does it work with my language/framework?
Gaston reviews code in any language. It understands context across files, not just syntax, so framework-specific patterns are covered too.
Will it slow down my CI pipeline?
No. Gaston runs independently from your CI. It's triggered by PR events via GitHub webhooks, so your pipeline stays untouched.
Can I customize what Gaston focuses on?
You can configure review strictness, focus areas, and per-repo rules from your dashboard. Or just let Gaston use smart defaults.
What models does Gaston use?
Gaston uses frontier LLMs for code analysis. The model is selected per-review for optimal results. You can see which model reviewed each PR.