Private betaThis is the SIGSHIP beta. Everything here is live for testers; the public launch is in January.SIGSHIP private betaOpen the app →

You built it fast. 
Launch it safe.

Made your app with Lovable, Cursor or Bolt? SIGSHIP spots the mistakes hackers look for, explains them like a friend, and gives you a fix to paste back into your AI.17 deterministic checks for AI-generated code. Runs offline, zero deps, exit 0 only on GO — a real ‘definition of done’ for your coding agent.

Check my app — free

No sign-up · Nothing uploaded · Your code never leaves your computer

Works with apps made in

60-second film

See SIGSHIP in a minute. 

SIGSHIP in 60 seconds: is your AI-built app safe to launch?

56 seconds. The video player loads from Vimeo only when you press play.

How it works

Three steps. No tech degree.

01

Point it at your app

Open your project folder and run one line. Nothing gets uploaded.npx sigship in the repo root. Reads files locally, about 33 ms on the demo app.

$ npx sigship▍
📁 src
📄 .env
🗄️ supabase
02

Read what's wrong, in plain words

Each problem says what could happen and how bad it is.Findings sorted by severity with file:line and impact.

Fix now
Your Stripe webhook accepts anything
Fix soon
Your AI route has no spending brake
Nice to fix
Any website can call your API
03

Paste the fix into your AI

Copy the fix, paste it into Lovable or Cursor, check again until it says Ready.--prompt emits a fix brief. Loop until exit 0.

Fix promptMove the key to the server…
→
✓ Ready
The 17 checks

The 17 mistakes AI tools make most. We check every one.

Hover a card to see the fix. No jargon — just what could happen and what to do.

🔑Fix nowSEV-1

A live secret is sitting in your codesecret-in-code

Anyone who reads your code or your site’s JavaScript can copy it and spend your money.

The fix

Rotate the key, then move it to a server-side environment variable.

secret-in-code
How to fix it →
🔑Fix nowSEV-1

Your .env file is committedenv-file-committed

Your .env file is in the repo, so every password in it is public.

The fix

Remove .env from git, add it to .gitignore, and rotate every value.

env-file-committed
How to fix it →
🔑Fix nowSEV-1

A server secret has a browser-visible namepublic-env-secret

A NEXT_PUBLIC_ or VITE_ name ships the secret to every visitor’s browser.

The fix

Drop the public prefix and move the call to a server route.

public-env-secret
How to fix it →
✨Fix nowSEV-1

Your AI key runs in the browserai-key-in-browser

Strangers copy your key from the browser and use your OpenAI credits for free.

The fix

Call the AI from a server route that holds the key.

ai-key-in-browser
How to fix it →
🗂️Fix nowSEV-1

A database table has no row level securityrls-missing

Anyone with your public key can read every row in this table.

The fix

Turn on row level security and add an owner-only policy.

rls-missing
How to fix it →
🗂️Fix nowSEV-1

A database policy lets anyone writerls-open-write

The lock exists, but it’s set to “allow all”. Anyone can edit or delete.

The fix

Replace true with a real condition, like auth.uid() = user_id.

rls-open-write
How to fix it →
💳Fix nowSEV-1

Your Stripe webhook accepts anythingstripe-webhook-unverified

Someone sends a fake “payment succeeded” and gets paid features free.

The fix

Verify every Stripe event with its signing secret.

stripe-webhook-unverified
How to fix it →
🗂️Fix nowSEV-1

User input may be pasted into a SQL querysql-string-concat

A crafted form entry becomes a database command.

The fix

Use a parameterised query. Never build SQL with template strings.

sql-string-concat
How to fix it →
✨Fix soonSEV-2

Your AI route has no spending brakeai-route-no-rate-limit

One script loops overnight and you wake up to a huge bill.

The fix

Add a per-user rate limit and a monthly spending cap.

ai-route-no-rate-limit
How to fix it →
🔐Fix soonSEV-2

Admin access is decided in the browserrole-in-local-storage

Users flip one browser setting and become admin.

The fix

Store roles in the database and check them on the server.

role-in-local-storage
How to fix it →
🌐Fix soonSEV-2

Raw HTML goes straight onto the pageunsanitized-html

A comment with a hidden script runs in every visitor’s browser.

The fix

Sanitise it with DOMPurify, or render it as plain text.

unsanitized-html
How to fix it →
🌐Nice to fixSEV-3

Any website can call your APIcors-wildcard

Other sites can talk to your app on your users’ behalf.

The fix

Replace the wildcard with your own domain.

cors-wildcard
How to fix it →
🔑Nice to fixSEV-3

A secret may be going to your logssecret-in-logs

Passwords end up in logs that more people can read than your database.

The fix

Log that it happened, never the value.

secret-in-logs
How to fix it →
🧰Nice to fixSEV-3

One crash takes down the whole screenno-error-boundary

One bad record gives your users a blank white page.

The fix

Add an error boundary (error.tsx in Next.js) with a retry.

no-error-boundary
How to fix it →
🧰Nice to fixSEV-3

You will hear about errors from your usersno-error-tracking

Your app breaks for a week before anyone tells you.

The fix

Add an error tracker such as Sentry on the client and the server.

no-error-tracking
How to fix it →
🧰Nice to fixSEV-3

Nothing checks that a change did not break loginno-tests

A Friday fix breaks signup until Monday.

The fix

One test each for sign up, log in and pay, run on every pull request.

no-tests
How to fix it →
🧰Nice to fixSEV-3

Your deploys are not repeatableno-lockfile

A package updates itself on deploy and your live app breaks.

The fix

Commit your lockfile.

no-lockfile
How to fix it →
Fix it with your AI

We find it. Your AI fixes it.

The problem
const openai = new OpenAI({
  apiKey: "sk-live-9fX…"
});
Your AI key is in the browser
The fix prompt
Move the OpenAI call into a
server function. Read the key
from process.env.OPENAI_KEY.
Copy → paste into your AI
Fixed
// server only
const openai = new OpenAI({
  apiKey: process.env.OPENAI_KEY
});
Check again → Ready ✓
For AI agents

Your AI checks its own work before it says “done”.

Plug SIGSHIP into Claude Code, Cursor, Windsurf, Copilot or any tool that speaks MCP — the standard way AI tools connect to helpers. Your agent runs the check and keeps fixing until it's Ready.

Run this once in your terminal.
claude mcp add sigship -- npx -y sigship mcp
Verified badge

Customers trust apps
that show they checked.

Put a live SIGSHIP badge on your site. It tells visitors you take their data seriously — and it updates itself.

  • ✓ A unique ID for your site, printed on the badge
  • ✓ Click it and you land on its public record on sigship.dev
  • ✓ Live badges turn off by themselves if a check fails
Level 1 · Steel

Self-checked

Comes withThe free check
Available now
  • You ran the 17 core checks and all passed
  • Shows the SIGSHIP version you used
  • Links to a public page that explains what was checked

Shows you care. But it is your own word and anyone can paste it, so visitors give it less weight.

Self-checkedSG-S-P35GZZSIGSHIP17/17 passed
Level 2 · Bronze

Deep self-check

Comes withPro and Business
By December
  • Core checks plus the Pro pack
  • Same self-declared badge, more ground covered
  • “Deep” on the badge

Business gives the same badge to every app your team ships.

Covers more of your app. Still your own word, so it stays bronze, below the metals SIGSHIP checks itself.

Deep self-checkSG-D-32VE9ASIGSHIPdeep · 17/17
Level 3 · Silver

Checked daily

Comes withCloud Solo
By January
  • SIGSHIP re-runs the check itself, every night
  • Badge is drawn by sigship.dev with today’s date
  • Turns off by itself if a check fails
  • Your own verification page

The first badge we stand behind. It cannot go stale or be copied, because we draw it.

Checked dailySG-C-6AHYE2SIGSHIPdaily · 9 Nov
Level 4 · Gold

Live-checked

Comes withCloud Team and Agency
By FebruaryMost picked
  • Everything in Checked daily
  • Checked every time your code changes, not just daily
  • A clean-days streak on the badge
  • Public history page buyers and investors can open

Agency shows it on client apps as “via your studio”.

The streak grows every day you stay clean. Time is the proof nobody can fake. sigship.dev itself carries this badge: the check runs on every change to the site.

Live-checkedSG-L-V7FF59SIGSHIP42 days clean
Level 5 · Platinum

Expert-reviewed

Comes withAn expert review
Available now
  • A SIGSHIP expert engineer reviews your code by hand
  • Follows the SIGSHIP review protocol: logins and access, user data, payments, secret keys, AI spending
  • Signed with the engineer’s name and review date
  • A report page: what was checked, what was found, what was out of scope

The answer to “did an expert actually look?” A person with a protocol, not only a scanner. Nobody holds this badge yet, including us.

Top level · Black platinum

Expert-reviewed & live-checked

Comes withTeam or Agency, plus an expert review
Top level

A SIGSHIP expert engineer reviewed the code and SIGSHIP re-checks it every time the code changes. Any Team or Agency plan plus an expert review in the last 12 months. The black platinum finish is reserved for this, so it stays rare. Nobody holds it yet.

Expert & liveSG-T-KB2H3ZSIGSHIPexpert & live

Badges are never sold on their own. Each one comes with the plan or review above it, and moves up when you do.

SIGSHIP Cloud · coming soon

We keep watch. You keep building.

Connect your apps once. Every night we check them, show you a simple score, and ping you the moment something needs fixing.

Join the waitlist
Who it's for

Built for everyone who ships with AI.

✨

Vibe coders & founders

  • ✓Plain words, no tech degree
  • ✓Copy the fix, paste into your AI
  • ✓Nothing uploaded, ever
  • ✓A badge to show customers
Check my app →
⌘

Developers & studios

  • ✓GitHub check on every pull request
  • ✓MCP server for your agents
  • ✓--json and --markdown reports
  • ✓Exit codes for any CI
Read the docs →

🧪 Testers & QA teams — tools for you are coming soon.

Pricing

Free today. Bigger powers soon.

Like an app you install. Runs on your computer and in your own GitHub; your code never leaves.

Free

Live
$0forever

The open source check for every AI-built app.

  • ✓17 core checks
  • ✓Unlimited repos, on your machine
  • ✓Terminal, browser dashboard and MCP
  • ✓Pull request check for GitHub
  • ✓Fix prompt for any AI tool
  • ✓JSON and Markdown output

Open source under MIT. No account, no card, no limits.

Check my app

Pro

Waitlist
$149one-time

Every check we have, on your own machine and CI.

  • ✓Pro pack of 7 extra checksAt launch
  • ✓Client-ready HTML reportAt launch
  • ✓Pull request comments and nightly checksAt launch
  • ✓Slack alert when a nightly check failsAt launch
  • ✓Deep Supabase policy checkBy December
  • ✓Security headers and login rate limitsBy December

Includes 1 year of new checks. Keep it forever.

Join waitlist

Business

Waitlist
$499one-time

For studios and agencies shipping client apps.

  • ✓25 repos
  • ✓White-label client reportsBy December
  • ✓Priority support
  • ✓Unlimited team members

Includes 1 year of new checks. Keep it forever.

Join waitlist

At launch: built and in use todayBy December: rolling out by December 2026By January: rolling out by January 2027By February: rolling out by February 2027A feature that misses its date is refunded on request.

Prices for paid plans are early estimates and may change before launch. See every plan →

Open source · MIT · built in public

Ship it. Sleep well.

One line. Free forever. Powered and backed by zoof04.

★ Star on GitHub