Tuvio
Scans AI-built apps' repos and live sites: keys in git history, Supabase RLS, vulnerable packages, Stripe webhooks.
Hosted MCP Server
npx add-mcp 'https://api.tuvio.dev/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
What it does to your code
Can't I just ask ChatGPT or Claude to check my code?
Short answer: ask it to judge findings, not to find them. That is what AI Review does.
A security scan reads your git history. The secret scan goes through the full history, else the last 12 months, else the latest commit, and the report says which. An assistant reads the files in front of it, so a key you deleted from the code but not from the history is out of its sight.
It does not need to be told what to look for. Our own 107 rules and 27 mobile config checks run on every scan, including Firebase rules, Supabase row-level security, iOS network security, Android manifests, signing keys and Expo secrets. An assistant checks what the prompt points it at.
It gives the same answer twice. Scanner versions are pinned, so the same commit gives the same findings. That is what makes "Since your last scan" on the Projects page mean something: a finding that disappears is one you fixed.
Its data is recent. Dependencies are checked against a vulnerability database we rebuild every week. An assistant only knows about the vulnerabilities published before it was trained.
It keeps the noise down. Secrets in test and docs folders start at Low. A reCAPTCHA site key is explained, not flagged. A Stripe publishable (pk_) key is reported with its card-testing caveat. A comment telling the scanner to ignore a line does not silence a finding. And the coverage page lists what we do not detect.
There is nothing to set up: no command-line tools to install and no raw output to read. A free scan gives you plain-language findings and a launch verdict; fix prompts come with AI Review.
Where an assistant wins: reading your code, it can sometimes spot a logic flaw, such as a missing permission check in your business rules, that no fixed rule has a pattern for. Use both.
Can you check my live site?
Yes, free. Paste its address on the scan page instead of a repository. We read the site's public pages the way a browser does and give you a launch checklist: a secret key in its public scripts, source maps left public, HTTPS and security headers, login cookies, whether anyone can send email as your domain, JavaScript libraries with known security issues, and payments or sign-in still in test mode.
It doesn't sign in, fill in forms or try to break anything. Once you verify in a project that you own the site, we also look for files it may serve by mistake, such as a public.env file or.git folder, and API details left public; for a backend you confirm, we count the rows and files it exposes to the public, without reading them. Those checks start at least 24 hours after we email the site's security contact. Every request we make is listed at tuvio.dev/scanner, and any site can opt out.
Do you run my code?
No. Scanning reads files and never builds, installs or executes anything from your repository — no npm install, so no postinstall script ever runs on our machines.
That is not a limitation we are apologising for; it is the boundary the whole service rests on. We hold other people’s repository tokens, and a service that executes untrusted code alongside them is one bad repository away from a very bad day.
Where does my source code go?
Nowhere, for a security scan. The scanners run on an ephemeral worker, read your files, and the worker is destroyed.
An AI Review, when you ask for one, never sees your whole repository either. It reads the findings that scan already produced, each with the few lines of code where it was found, sent to Anthropic, and returns false-positive analysis, risk order and a fix prompt.
What if I have a secret committed in the repo?
The credential scan runs first, and anything it matches is masked before a single byte reaches an AI provider. Files that exist only to hold credentials are never sent at all, whatever the scan found.
The ordering matters more than it sounds. Run it the other way around and our own finding — a live key committed to your repo — becomes the mechanism that leaks it to a third party.
Will it catch…
Will it catch my Stripe secret key? Yes
Yes, in your files and in your git history. Publishable keys are flagged too, at a lower severity.
Will it catch Supabase tables anyone can read? Yes
Yes. Rules written for row-level security flag mistakes such as policies open to anyone, RLS switched off on a table, and policies that trust user_metadata.
Will it catch a key I deleted last month? Yes
Yes. The secret scan reads your git history, not just the latest files. Very large repositories fall back to the last 12 months, or to the latest commit only, and the report says which.
Will it catch a vulnerable npm package? Yes
Yes, from your lockfile, with the vulnerabilities attackers are known to exploit marked. Development packages are checked too when the app is built with Vite, SvelteKit, Astro, Nuxt or Remix, which can ship them to the browser; otherwise they are skipped.
Will it catch a package my AI made up? Partly
Partly, for npm only. It flags known-malicious npm packages, and direct npm dependencies that don't exist, are brand-new and unused, or barely used. An AI can invent a package name, and anyone can register that name with harmful code.
Look-alike names of popular packages, install scripts and other registries such as PyPI are not checked yet. Packages from a private registry are never looked up.
Will it catch the DATABASE_URL in my.env? No
No. Database connection strings for Postgres, MongoDB, Redis or RabbitMQ are not detected today.
Will it check my Python requirements.txt? Partly
Partly. Only pinned (==) versions are checked. A lockfile such as poetry.lock, Pipfile.lock or uv.lock is read in full.
Will it check my docker-compose.yml? No
No. Dockerfiles, Kubernetes manifests and Terraform are checked. Compose files are not.
Will it find bugs in my running app? Partly
Partly. A site scan reads what your live site serves to anyone, such as a key in its scripts or a missing security header. It doesn't sign in or use your app, and a repository scan never builds, installs or runs anything, so a bug that only shows up when someone uses your app is outside what either can see.
What you get back
If the report is clean, am I safe?
No — and we never will. A clean report means nothing blocking was found by these tools, on that commit: a good sign, not a guarantee.
Static analysis finds what it has rules for. AI Review adds judgement on top of what a scan already found — flagging likely false positives and prioritising the rest — but neither a scan nor a review is proof of absence. Anyone selling you the other answer is selling you something.
It is also true for that commit only, which is what Pro's weekly monitoring is for.
Do you fix things for me, or open pull requests?
Neither, on purpose — once a scan has been AI-Reviewed. You get the fix stated as an instruction, carrying the file, the symbol, the rule that fired and the constraint the fix has to satisfy — written to be pasted into the assistant that wrote the code in the first place.
It already has your repository open and your conventions in context. Handing it the intent beats us pushing a branch you then have to audit — which would put you back where you started, reviewing code you did not write.
Can I use Tuvio from Claude Code or Cursor?
Yes. Tuvio has an MCP server, the standard way AI coding tools connect to other services. It works with Claude Code, Cursor, Codex or others, and it comes with a free account.
Sign in, open Settings, then Connect your AI, and create a token. The page shows the setup for your tool. Then open your project and ask in plain sentences: "Scan this repo with Tuvio", "What did Tuvio find in this repo?", "Fix the security issues Tuvio found".
It scans the branch on GitHub, not your local changes, so push first. The fixes come from an AI review, and your assistant asks before it uses one. Paid reviews stay off for each AI tool until you switch them on, and never go past the monthly limit you set.
Your AI tool gets the findings and how to fix them, not a copy of your repository. Leaked-key findings are held back until Tuvio confirms on GitHub that the repository is yours. Tokens last 30 days on Free and 90 days on Pro, and you can revoke one at any time.
Do you check accessibility?
No. Doing it properly means evaluating a rendered page — computed contrast, focus order, ARIA against the accessibility tree — and none of that exists in source code.
Getting real results would mean building and serving your repository inside our runner, which is exactly the thing we refuse to do. The alternative was linting templates and calling a thin subset "WCAG compliance". Neither trade was worth it, so we do not offer it here.
It has its own home instead — codexmotive.com/audit — built to do it properly against a running application. Two tools because it is two boundaries: the thing that makes this one safe to point at a private repository is the same thing that makes accessibility testing impossible inside it.
Plans and cost
What is actually free?
Security scans. Without an account you can scan a repository once and see every finding. Sign in and a Free account keeps up to 5 repositories, with a rescan a day whenever there are new commits. No card, no API key of your own to set up.
Scanning your live site is free too, with or without an account, up to a daily limit. A site someone scanned in the last day opens free, even past it.
The first scan of a repository shows every finding. A rescan shows what changed since the last one: what you fixed, what is still open and what is new. An AI review of that rescan opens its findings, or Pro opens every rescan.
Your first AI review is free: it checks your top 15 issues, drops the ones that are not real and writes the fix for each. After that, AI reviews come in packs from $1.99 USD, or 20 a month with Pro.
What does Pro add?
Monitoring, more repositories and a monthly allowance. Pro scans up to 5 GitHub repositories again every week and emails you when a new High or Critical issue appears. It also keeps up to 20 repositories, rescans any time there are new commits, and includes 20 AI Reviews a month. Every plan runs the same scanners.
The scan finds the class of problem that takes a new app down: authorisation enforced only in the browser, database rules that let any signed-in user read anyone's rows. AI Review re-reads those findings, drops the ones that are not real, and puts the rest in order with a fix prompt to paste.
What does monitoring do?
Pro scans up to 5 of your GitHub repositories again every week, the same full scan as one you start yourself. A public repository needs nothing more; a private one needs a read-only access token, and we never scan with a token that can write.
The first scan sets the baseline and sends nothing. After that you get an email only when a scan finds a High or Critical issue we haven't seen in that repository before: from your own changes, or from a package you already use that has since been found to have a flaw. The email says how many issues and what kind; the details stay behind sign-in.
Opening the AI review from the email uses one of your monthly AI Reviews.
It is weekly, not on every push and not real-time. After a change you care about, rescan it yourself.
What's the difference between a security scan and an AI Review?
A security scan is the scanners reading your files and returning every finding they produce, in plain language. It is free. On its own, it never produces false-positive analysis, a risk order across findings, or fix prompts.
An AI Review reads that scan's findings and the few lines of code each one points to, never your whole repository, and returns which ones look like false positives, which order to fix the rest in, and one combined prompt for your coding agent. You ask for it from the report. One review covers one whole scan, never one finding.
Your free review reads your top 15 issues. A bought or Pro review reads up to 50. A scan with more still shows every finding in the report; the report tells you exactly how many the review covered.
Can I get a refund?
Yes, for what you have not used. An AI review you paid for and never spent is refundable if you ask within 14 days of paying for it. Email info@tuvio.dev; the refund terms have the details.
Pro specifically: cancel within 14 days of first subscribing and the unused part of that period is refunded the same way. After that, a renewal charge you have used nothing from is refunded in full within 14 days of it; use any part of a renewal period and that period stays paid — cancelling still stops every charge after it.
Your account
What happens when I delete my account?
The projects, the scan history and the stored repository tokens are destroyed.
We keep a one-way fingerprint of your sign-in ID (not your email or name) so the free AI review can't be claimed twice, and purchase records for as long as tax law requires.
Can I scan a private repository?
Yes. You supply an access token with read access, stored encrypted, and it is validated when you connect the project rather than failing later in the middle of a scan.
Deleting the project destroys the token.
Still deciding? Read a real report before you connect anything — it is the same one the product produces, on a demo app.