Skip to contentShipGateShipGateHow It Works
Hero
Problem
Proof
Limits
CI output
Free vs paid
How it works
Verdicts
Dashboard
Pricing
FAQ
Start free

Anyone can scan.Only ShipGate says SHIP.

Scanning a repository is 3 free web scans per month17 static gates, each one named, on the exact revision you point at. Continuous enforcement on every pull request is $50/month: the GitHub check, evidence bound to the exact artifact hash, and persisted SHIP / NO_SHIP history.

Scan a repo — freeShipGate CI — $50/mo

3 free scans / month · Continuous CI $50/mo, or included with any paid WholeStack plan

Built to catch what these tools generate

Works with your AI editor

The merge-time gap

A build that compiles is not a change that is safe. These are the three ways a merge gets waved through anyway.

Green CI is not a verdict

Tests and linters answer whether the code compiles. They do not answer whether a protected route lost its auth guard, or whether a caught failure now renders a success toast anyway.

The scan that flatters you

A tool that returns green on unreadable input is worse than no tool. ShipGate keeps an UNVERIFIED verdict for exactly that case: it never reports a result it did not earn.

Evidence that drifted

A verdict is only true for the artifact that earned it. Once the tree moves on, an old SHIP is not evidence — which is why every verdict here is bound to an exact hash and flagged when it goes stale.

Verdict + evidence

A result in the PR.
Bound to the artifact.

ShipGate exists for the moment someone asks “what did we actually check before this merged?” The answer is a named gate, a finding, and a hash — not a screenshot of a green tick.

17 static gates, each reporting its own pass, fail, or skip
Findings counted by severity, with the top blockers named
The verdict is bound to the exact commit and artifact hash that earned it
A spec-free scan stays advisory — only a signed ShipGate run authorizes a release
Proof bundleSAMPLE
content hash + Ed25519
Example layout, not a scan result. The 17 gate names come from the ShipGate catalog; the states beside them are placeholders. Your own run reports your own states.
Fake Success DetectorIntegrity
Failed Reported a blocking finding. In continuous CI the pull-request check fails with it.
Finds try/catch blocks where a real async failure is swallowed and a success toast or notification is shown anyway — the exact fake-success pattern the Constitution forbids.
  • try { await … } catch { toast.success(…) }
  • Silent failure with optimistic UI feedback
  • Error handlers that report success on failure
In this example12 Passed2 Failed1 Warning1 Skipped1 Unavailable17 gates total
A real bundle is bound to one commit and one artifact hash. Verifying it checks that content hash and a local Ed25519 service signature — authenticity, not a public CA and not a third-party attestation.
What we do not claim

Signed and artifact-bound. Not a compliance badge.

A gate is only worth having if it tells you when it cannot answer. ShipGate publishes its own limits in the same places it publishes verdicts.

Signed, not certified

Manifest verification checks the content hash and a local Ed25519 service signature. That is authenticity — not a public CA, and not a third-party attestation.

Advisory, not authority

The free scan has no approved spec, no runtime evidence, and no signed certificate. It never issues SHIP and never returns a green branch-protection check.

Fails closed

Continuous CI answers 401 without an account and 402 without the entitlement, and refuses activation when the GitHub App lacks Checks: write.

What CI actually prints

The check WholeStack posts back on the commit — the same 17 gates as the free scan, run on that commit alone.

github.com/your-org/your-app · Checks
Free to scan · $50/mo to enforce

Scanning is free. Enforcement is the product.

Repository scan
3 free scans / month — all 17 gates
Pull-request check
$50/mo, or any paid plan
Commit-bound evidence
Tied to the exact artifact hash
Persisted history
Every SHIP / NO_SHIP kept, staleness flagged

How it works

Free scan → advisory verdict → the check on every pull request.

1

Scan a repository — free

Point ShipGate at a GitHub repository or a local folder. All 17 static gates run and each one reports its own result. 3 free web scans per UTC month.

# /scan/repo — 3 free web scans / month
gates: 17 static gates, each named
findings: critical · high · medium · low
verdict: CLEAR | BLOCKED | UNVERIFIED
2

Read a verdict, not a vibe

The report names the failing gate, the finding, and the revision it was earned on. A spec-free static scan is advisory by design — it never issues SHIP and never returns a green check.

# Advisory result, bound to the revision scanned
verdict: BLOCKED
score: readiness score, out of 100
# A static scan never authorizes a release.
3

Turn on the merge-path check — $50/mo

Continuous CI installs the WholeStack GitHub App. Nothing is added to your repository and no runner minutes are spent: WholeStack fetches that one commit onto its own infrastructure, runs the gates there, deletes the checkout, and posts a commit-bound check. Included with every paid WholeStack plan; $50/month on its own.

# GitHub App — no workflow file, no runners
on: pull_request · push
fetch: that commit only, --depth=1
# onto WholeStack infra, deleted after
check: "WholeStack / Readiness Advisory"
Three verdicts

Every scan ends in one of these. Nothing else.

CLEAR

No static blocker found.

Readiness guidance, not a release decision. CLEAR is the best a spec-free scan can earn, and it still never authorizes a deployment.

BLOCKED

One or more gates failed.

The report names the blocker, the gate that caught it, and the fastest path back to a fresh scan. In continuous CI the pull-request check fails with it.

UNVERIFIED

The scan could not earn a verdict.

Unreadable, empty, or unsupported input never becomes a reassuring green result. A missing answer is reported as missing.

Verdict history, once CI is on

Persisted runs live behind the ShipGate dashboard — part of continuous CI, and of every paid plan. The free scan reports; CI remembers.

Run history

Run history

Every persisted run with its decision, tree digest, file count, and source commit.

Verdict rollup

SHIP / NO_SHIP rollup

Completed runs counted into a ship rate — exactly what ShipGate persisted, never a recomputed verdict.

Stale verdicts

Stale verdicts, flagged

When the project's tree moves past a run, that verdict is marked stale instead of shown as current.

Turn on continuous CIOpen dashboard

Pricing

Scanning a repository is free. Continuous enforcement on every pull request is $50/month — or already included in the plan you pay for.

Repository scan

Anyone can scan. 3 free web scans per month.

$0/forever
  • 17 static gates, every one named
  • Per-gate findings and severity counts
  • Advisory verdict: CLEAR · BLOCKED · UNVERIFIED
  • Readiness score on the exact revision you scanned
  • 3 hosted scans / month on Free · no card
Scan a repo

ShipGate CI

Continuous enforcement on every pull request

$50/mo
  • Everything in the free scan
  • The "WholeStack / Readiness Advisory" check on every pull request
  • Every pull request and every push, on any branch
  • Evidence bound to the exact artifact hash
  • Persisted SHIP / NO_SHIP history in the dashboard
  • No workflow file and no runner minutes — WholeStack runs the scan

Any paid plan

Already paying for WholeStack? You already have it.

Included
  • Every paid WholeStack plan bundles the CI entitlement
  • No second subscription to add ShipGate CI
  • Enterprise adds SSO, VPC, approval flows, and custom SLAs
  • Compare plans on the WholeStack pricing page
Compare plans

Frequently Asked Questions

What is free, what costs $50/month, and what ShipGate refuses to claim.

Start with the free scan.

Scan a repository now — it costs nothing and hides nothing. Add the pull-request check when you want the merge path to stop being a matter of opinion.

Scan a repo — freeGet ShipGate CI — $50/mo
See It In Action

Run it on your own repository

The free scan is the demo: 17 gates on your code, per-gate findings, one advisory verdict. Turn on the pull-request check when you want it to happen on every merge.

Scan a repo — freeOpen dashboard
ShipGateShipGate

© 2026 ShipGate. All rights reserved.