AI code review for GitHub, GitLab & Bitbucket

It reads the repo, not just the diff.

Before it says a word, the reviewer pulls in related files, the project structure and your conventions - so its comments read like they came from someone who knows the codebase.

Free for 14 days · No credit card · Installs in 60 seconds

Reviews on
GitHubGitLabBitbucket

#482 · billing

fix: retry failed charges

  1. Pull request openedcharge.ts · +8 −1
  2. Solemly reviewed the diffFollowed the change into errors.ts
  3. 1 P1 finding · merge blockedRetries can charge the card twice
  4. Ready to mergeAfter the fix is committed
42− return stripe.paymentIntents.create(params);
42+ for (let attempt = 1; ; attempt++) {
44+ return await stripe.paymentIntents.create(params);
Solemlycommented just nowP1

Retries can charge the card twice. isRetryable treats a timeout as retryable (errors.ts:18), but a timed-out charge may have gone through. Send one idempotency key so a retry returns that charge instead of making a new one.

Suggested change
+return await stripe.paymentIntents.create(params, {
+idempotencyKey: `charge-${order.id}`,
+});

The kind of thing it catches

  • P1Retry without an idempotency key
  • P0SQL built from request input
  • P1Token written to logs
  • P2N+1 query inside a loop
  • P1Admin route missing an auth check
  • P2Race on a read-modify-write
  • P0Secret committed to config
  • P3Error swallowed by an empty catch
  • P2Unbounded query on user input
  • P1Webhook signature never verified
Reviews on
GitHubGitLabBitbucket
Bugs + security
Both covered on every review
~2 min
From PR opened to review posted
Merge gate
Blocks until findings are answered
Full repo
Context beyond the diff

The life of a pull request

01 · Opens

A pull request opens.

From a coding agent, a copilot or someone on your team. The review starts the moment it does.

02 · Reads

It reads the repo, not just the diff.

Related files, the project's structure and your conventions, so comments read like they came from someone who knows the code.

03 · Reviews

Bugs and security, on every diff.

Separate passes look for what breaks and what leaks, and rank what they find by risk.

04 · Comments

Findings land on the lines that need them.

Inline comments on the diff and a summary at the top. Ask it why, right on the pull request.

05 · Gates

The merge waits until they're answered.

A merge status your branch protection can require. Fix the finding, or dismiss it with a reason.

06 · Merges

Then it merges.

Push a fix and the review updates in place, not a new wall of comments. Reviewed, answered, shipped.

diffdiff
reporepo
passespasses
commentscomments
merge gatemerge gatemerge gate

The dashboard

Every review, finding and trend in one place.

The reviews land on the pull request. The dashboard is where you see all of them - across providers, repos and teams.

Every review, in one place

Reviews from GitHub, GitLab and Bitbucket in one list. Open any PR to read the summary, the inline comments and the security findings it got.

Reviews page listing recent pull requests, one expanded to show its summary and inline comments

Watch it work

See a review catch a real bug.

The demo is the whole product in under two minutes. The film is why it exists. The Shorts show a review catching a retry loop that writes the auth token to the logs, and a finding opened in your coding agent to fix.

Meet Solemly: AI code review with a merge gate, security scan and Jira acceptance checks

1:41

A tour of the product: a review with inline findings, a security scan and a one-click hand-off to Claude Code, Cursor or Codex, then per-repo controls, Jira acceptance checks, analytics and the AI-impact reports.

Playlist4 videos · 3:12

How it reviews

A reviewer that knows the codebase and holds the line.

  1. Before it says a word, the reviewer pulls in related files, the project structure and your conventions - so its comments read like they came from someone who knows the codebase.

    • Follows CLAUDE.md, AGENTS.md and Cursor rules as house style
    • Deep review mode searches and reads the repo before concluding
    • A second pass re-checks every finding and drops the speculative ones
  2. Solemly sets a status the moment a PR opens and resolves it when the review lands. Make it required in branch protection and nothing merges with a high-severity finding still open.

    • A separate security pass, reported on its own check
    • Jira acceptance check: does the PR do what its ticket asks?
    • Fix and push - the review re-runs and the gate clears itself
  3. Reply to any finding to get the reasoning and evidence behind it, ask a question about the change, or dismiss what doesn't apply. No context switch, no dashboard.

    • @solemly ask, explain, ignore and describe
    • @solemly review to re-run on demand, pause and resume per PR
    • Only people with write access to the repo can run commands
  4. Push a new commit and the stale review is superseded automatically. Each PR carries one up-to-date review, not a trail of outdated ones.

    • Review every push, once per PR, or only on request - per repo
    • Inline comments sit on the exact lines, with severity on each
    • One-click suggested fixes on GitHub for single-line changes
Context for checkout-service #4827 files
  • Changedsrc/billing/charge.ts
  • Importssrc/billing/errors.ts
  • Importssrc/lib/stripe.ts
  • Imported bysrc/checkout/submit.ts
  • ConventionsCLAUDE.md
  • Configpackage.json
  • DocsREADME.md
From CLAUDE.md: “Idempotency keys are required on every POST to the payment gateway.”
Merging is blocked
2 failing checks, 1 required
  • Solemly / Review
    Blocking: 1 high-severity finding
    Required
  • Solemly / Security
    Blocking: 1 high-severity security finding
  • Solemly / Acceptance
    Matches the Jira ticket · PAY-412
Fix and push — the review re-runs and the gate clears.
src/session/rotate.ts · line 58
solemlyP1

The old session token is never revoked after a role change.

MW
marcus.w

@solemly explain

solemly

issueToken() creates the new session, but nothing calls sessions.revoke() on the old one, and middleware/auth.ts accepts any unexpired token. A demoted admin keeps admin access for up to an hour.

checkout-service #4823 pushes
  1. e41c0a9Review complete · 1 finding
  2. b7d2f13Superseded — a newer commit was pushed
  3. 9a0e6c2Superseded — a newer commit was pushed
Review

Integrations

Works where your team already works.

One install per provider, no CI config or YAML. Open a pull request and the review lands natively on each platform.

  • GitHub

    A GitHub App. Reviews land as native PR reviews with inline comments and required checks.

  • GitLab

    Connect with an access token. Reviews post as MR notes with a commit status that gates the merge.

  • Bitbucket

    Install the app on your workspace. Reviews post as PR comments with a build status for merge checks.

  • Jira

    Finds the ticket from the branch, title or description and checks the PR against its acceptance criteria.

  • Slack

    A message in the channel you pick the moment a review finishes: the PR, what was found, and a link.

  • Microsoft Teams

    The same review notifications, posted to a Teams channel through an incoming webhook.

Set up in 60 seconds

  1. Connect your repos

    Install Solemly on your GitHub, GitLab or Bitbucket workspace and pick the repos to review.

  2. Open a pull request

    That's the trigger. The review starts straight away, with the surrounding repo in view.

  3. The review lands on the PRdone

    Ranked risks, inline comments on GitHub (a summary comment on GitLab and Bitbucket), a security pass, and a merge status you can require.

Also included

  • PR descriptionsWritten for you, or on @solemly describe.
  • Workspaces and teamsSeveral orgs, and teams that own their repos.
  • Admin and member rolesAdmins run settings; members see their work.
  • AI-authored PR detectionSpots AI-written PRs and tracks how they fare.
  • Export and printReports to CSV, or a clean PDF.
  • Sign in your wayEmail, or GitHub, GitLab or Bitbucket.

Independent benchmark

Within a point of Greptile on Martian's Code Review Bench.

50 real pull requests from Sentry, Cal.com, Grafana, Keycloak and Discourse, scored by an LLM judge against human-checked bugs. One trial, run by us on 21 October 2026: 10th of 22 tools, with the leaders near 59.

  • Greptile
    45.0
  • Solemly
    44.0
  • GitHub Copilot
    43.6
  • Claude Code
    40.6
  • CodeRabbit
    38.6

Pricing

Simple, honest pricing.

Free 14-day trial, then pay per user. 40 PR reviews per user every month. Cancel anytime.

Most popular
Standard
$18/ user / month

Billed yearly at $216 per user

Hosted by us. Install the app and your next PR gets reviewed. Free 14-day trial.

  • 40 PR reviews / user / month
  • AI reviews on all 3 providers
  • Unlimited repos
  • Merge-gate statuses
  • Automatic updates
  • Email support
Enterprise
Custompricing

Annual contract, invoiced

For large teams who need SSO, audit logs, and dedicated support.

  • Everything in Standard
  • SSO / SAML
  • Audit logs
  • Custom data retention
  • Dedicated Slack support

Your next PR deserves a real review.

Install in 60 seconds. Reviews on GitHub, GitLab and Bitbucket, and the reports to show what they caught.