Your backend, kept alive

Stop AI agents shipping
unguarded backends.

For developers shipping with Cursor, Claude Code and Codex.

Paste a repo. Wyro maps every route to the tables it reaches and flags the ones your agent left open: no sign-in, no validation, no rate limit. Rule-based, so the same commit always gets the same answer.

Free on public repos, plus one private repo · Runtime limit watch: coming soon

500+ public repositories checked · Rule-based, not a model · Same commit, same result

500+public repositories checked
6frameworks read: Express, Fastify, Hono, NestJS, Next.js, FastAPI
0models in the check. Same commit, same answer
Freeon public repos plus one private repo, with the CLI, MCP tool and extension
00:01THE_LOOP

See it, fix it, prove it

One loop, three jobs. Each one says whether it runs today.

Map · your-app
RouteReachesGuard
GET/api/projectsprojectssigned in · limited
POST/api/invites/[token]project_memberssigned in
GET/api/invites/[token]project_invitestoken link · limited
DELETE/api/notes/[id]notesno sign-in
GET/api/healthnonelimited
Vercel · Active CPU72% · out in 9 days
00:02EVERYWHERE

The check, everywhere you work

The same rules in each place, so the answer in your editor is the answer on the pull request.

Pull requests

The GitHub Action fails a pull request on a new finding and leaves one comment. Existing findings go in a baseline.

Add the Action
wyro / check1 new errorbuildpassedtestpassedMerging is blocked

Coding agents

An MCP tool for Claude Code, Cursor and Codex. The agent checks its own change before it reports the task done.

Connect your agent
> add a route to delete a note⏺ wyro.check_backend()  🛡️ 38 routes · 12 tables  ❌ DELETE /api/notes/[id]: no sign-in⏺ Added getAuthenticatedUser. Re-checked.  🟢 CI: would PASS

Terminal

One command, no account. Runs on your machine against the code on disk, and exits non-zero when CI would fail.

Read the CLI docs
$ npx wyro-check@latest .🛡️ Wyro 0.2.12 · 214 files · 38 routes⚠️ 2 warnings · 🎉 3 fixed since your baseline🟢 CI: would PASS

Browser

A Check with Wyro button on every GitHub repository you open. The answer appears beside the code.

Add to Chrome
github.com/you/your-app
you / your-appCheck with Wyro
1 route reaches data without signing in

Tell your agent once

Paste into .cursorrules, CLAUDE.md or AGENTS.md. Cursor, Claude Code and Codex then check their own backend changes.

## Backend checks
After changing routes, handlers, middleware or schema, run `npx wyro-check`.
Fix any new error it reports before you say the task is done.
00:03THE_WATCHComing soon

Runtime limit watch

Wyro reads the limits of every service your backend runs on (Vercel, Render, Neon, Postgres) and tells you before one of them stops it.

System status
ACT

Vercel paused this team on 31 Oct for going over Active CPU (fluidCpuDuration). It unpauses on 30 Nov unless the team upgrades.

Vercel

hobby plan

Act

Blocked for Active CPU (fluidCpuDuration) since 31 Oct, unpauses 30 Nov

Active CPU≈7.2 / 4 h180%over limit
Edge requests170.9k / 1M17%holds at this rate

Supabase

free plan

Calm
Connections5 / 608%no trend yet
Database size17.2 / 500 MB3%no trend yet
Egress (5 GB/month)no data—not in Supabase's public API; only the dashboard shows it

Neon

free plan

Calm
Projects6 / 1006%no trend yet
Top storage0.029 / 1 GB3%no trend yet

WYROSystem

ACT

Vercel paused this team on 31 Oct for going over Active CPU (fluidCpuDuration). It unpauses on 30 Nov unless the team upgrades.

3 vendors · 31 Oct, 13:24 IST

Wyro's own backend on 31 October, the day Vercel paused wyro.in for going over its Active CPU limit. Wyro now reads that limit every day and works out when it runs out.

00:04FAQ

The parts people ask about

What is Wyro?

A platform that keeps a backend running. It maps your backend from its code, watches the limits of the services it runs on, and checks every change before it merges. The check is live today, the watch is in early access, and fixes are being built.

Which services does it watch?

Where your backend already runs: Render, Vercel, Neon and any Postgres, connected read-only. Wyro reads their live signals next to the map of your code, so a slow route or a failing deploy points at the exact handler and table behind it. Wyro never hosts your backend.

Does Wyro host my backend?

No. Your backend stays where it runs. Wyro reads your repository and the vendor accounts you connect, and tells you what to change.

Is it an AI?

The map, the watch and the check are rule-based: the same commit and the same usage always give the same answer. That is what lets an agent fix a finding and check again without the answer moving. When fixes ship, a model will write them, and a fix is kept only if the check still passes.

What does the check read?

TypeScript, JavaScript and Python. Routes from Express, Fastify, Hono, NestJS, Next.js route handlers and Server Actions, FastAPI and Supabase; schemas from Prisma, Drizzle, TypeORM, Mongoose, SQLAlchemy and SQL with row-level security. If it cannot read your backend it says so. It never reports a clean result for code it did not understand.

What does the check catch?

Routes that reach your data without authenticating, public writes, sensitive data readable by anyone, data flowing to a third party, row-level security that is off or open, and routes that check who you are but not what you may touch. Each finding is ranked by risk, points at the file and line, and comes with a fix.

What about routes that are public on purpose?

An open read of data that holds nothing private, in a backend that authenticates elsewhere, is reported as a warning, not an error. Mark a route public in the code, or record existing findings in a baseline, and CI fails only on new ones.

Does my code leave my machine?

Not with the CLI, the agent tool or the GitHub Action: they run where your code is. A /scan page reads a public repository through GitHub, and the browser extension reads it in your browser.

How often is a finding wrong?

We measure it. Wyro is benchmarked on 45 public backends written with coding agents, and every false alarm we confirm becomes a test so the same mistake cannot come back. When one maintainer went through 65 findings on their repository and showed they were wrong, the three parser gaps behind them were fixed the next day. A rule with nothing to look at is reported as not run, never as passed. If you hit a wrong finding, tell us on Discord.

What does it cost?

Free forever: one private repository in Wyro, plus the Action on public repositories, the CLI, the agent tool, the extension and /scan. Pro is $39 a month per GitHub organisation (₹2,290 in India) for unlimited private repositories, the Action on all of them, up to 5 collaborators and a central CI policy your repositories cannot weaken.

Who builds it?

Dominic Paul, in Bengaluru. Wyro is built by one person for now: the platform, the checker, the CLI, the extension and this page are one codebase, and every question reaches the person who wrote it. Ask on Discord or at support@wyro.in.

Go / no-go

Check it before
it ships.

Scan a repository free, or put the check on every pull request.