AI-powered smart-contract security

Smart-contract risk,
made actionable.

Scan the code you choose and get prioritized findings with code references, detailed reports, and remediation guidance.

  • Public & private GitHub repos
  • Severity-ranked findings
  • Scope & cost shown up front
How it works

From repository to report in four steps

01

Connect a repository

Paste a public GitHub URL — or install the GitHub App to scan private repos through short-lived, read-only access.

02

Scope the scan

Pick a branch or an open pull request, then select exactly the folders and files that matter. You see the credit cost up front, before you commit.

03

Run the scan

Your scan is queued and processed by the security analysis engine while the dashboard shows its current status.

04

Triage the findings

Findings arrive ranked by severity, each with a detailed written report, code references, and remediation guidance.

What you get

Built like a security tool, not a demo

Severity triage

Critical to informational — every finding is classified, so you always know what to fix first.

Reports you can act on

Each finding ships a full report: impact, affected code, and a suggested fix — deep-linkable and exportable.

Private repos, done right

Private code is accessed via a GitHub App with short-lived credentials. Tokens never touch your browser.

Scan pull requests

Point a scan at an open PR and review the change before it merges — not after.

Transparent pricing

Credit-based and sized to the code in scope. The exact cost is shown before every scan.

Export your results

Download individual findings as Markdown, complete scan results as ZIP files, and your account data as JSON.

A concrete example

What a scan actually surfaces

Here's the shape of a real result: a DeFi lending protocol, scanned in scope, three findings that matter — the critical one opened in full.

novalend / core-contracts
Critical
Reentrancy in withdraw() lets an attacker drain the pool
contracts/LendingPool.sol
High
Missing access control on setOracle() — anyone can repoint the price feed
contracts/OracleRouter.sol
Medium
Unchecked ERC-20 transfer return value in claimRewards()
contracts/Rewards.sol

Illustrative example. Representative of the engine's output — not a real customer's code.

From the report

The withdraw() function transfers ETH to the caller before updating its internal accounting. A malicious contract can re-enter withdraw() from its receive() hook and drain the pool. Apply the checks-effects-interactions pattern: update balances before the external call, or add a reentrancy guard.

Request access

GregoAI is invite-only, for now

We're onboarding teams gradually. Tell us about your project and we'll reach out to get you set up.

We'll only use this information to contact you about access — nothing else, no marketing lists. Terms of Service · Privacy Policy