Now in beta·Compile a backend, and check the one you already have →
Live · no account

Generating a backend is easy.
Checking one isn't.

Paste a public GitHub repo. See which routes reach your data without checking who is asking. No account, nothing to install.

Rule-based, not a model · Same commit, same result · Findings ranked by risk, each with a fix and a test

Your exported code runs on the stack you already trust

Audit the backend your AI builder generated.

Drop the export from v0, Lovable or Bolt. Wyro maps every route to the data it reaches, checks which of them verify who is asking, and shows you what the code actually does — not what the prompt said it would.

Drop your ZIP here

or click to choose

ExpressNext.jsNestJSFastAPIPrismaDrizzle

Browser-only scan. The archive is unzipped and read by this page; the file never leaves your device and no account is created. Saving the result as a project is a separate, deliberate step — that one does upload the files, and stores them with your project. What we store

What comes out is the part that matters

26 files

One sentence in, a repository out

One sentence in; typed routes, a schema, Zod validators, auth middleware, a smoke test, a CI workflow, a Dockerfile and a README out. Not a snippet to paste into a starter and not one enormous index file — the tree you would have laid out by hand on the first afternoon. The demo at the top of this page runs the real compiler, so you can count them before you trust us.

src/api/handleListWorkouts.tsroute
src/api/handleCreateWorkout.tsroute
src/db/schema.tsdrizzle
src/db/schemas.tszod
src/middleware/auth.tsauth
src/__tests__/smoke.test.tsvitest
.github/workflows/ci.ymlci
Dockerfile
API + middleware · 4schema + validators · 4typed UI components · 6tests, CI, Docker, docs · 12
35CANVAS BLOCKS

Every block is a compiler target

Routes, tables, auth, storage, queues and jobs each map to a known code shape. The canvas is not a diagram something interprets at request time — it is compiler input, and the compiler is deterministic. Same graph, same files, every time.

TypedEND TO END

Readable at review time

Typed handlers, named Zod schemas, one concern per file, errors that do not leak the driver's SQL. The bar is a code review from someone who has never heard of Wyro — which is the only test of generated code that means anything.

00:01CANVAS

Draw your backend on a canvas

Drag blocks — routes, tables, auth, queues — onto a canvas and wire them together. The graph is the source of truth: the same graph always compiles to the same code, so you can diff two versions of a design the way you diff two commits.

See the canvas
WyroBackendTest›Canvas
Canvas Compile Download Deploy
FeedbackSearch…⌘K
Describe your backend… e.g. 'REST API for an e-comGenerate20 blocks · 28 edgesRe-importSaveCompile
Blocks
Search blocks…
API RouteHTTP endpoint
DatabaseOne database table
AuthAuthentication
QueueBackground jobs
StorageFile storage
WorkflowLogic flow
SchedulerCron-scheduled task
WebhookInbound webhook
EmailTransactional email
CacheRedis key-value cac…
HTTP RequestOutbound API call
TransformShape data
AuthAUTH
session
StorageSTORAGE
QueueQUEUE
WorkflowWORKFLOW
API RouteAPI
GET /endpoint
AuthAUTH
apikey
WebhookWEBHOOK
/webhooks/incoming
API RouteAPI
GET /endpoint
DatabaseDATABASE
table: my_table
DatabaseDATABASE
table: my_table
API RouteAPI
GET /endpoint
DatabaseDATABASE
table: my_table
HTTP RequestHTTP_REQUEST
EmbeddingsAI_EMBEDDING
StripeSTRIPE
AI / LLMAI_COMPLETION
LoopLOOP
API RouteAPI
GET /endpoint
ValidatorVALIDATOR
API RouteAPI
GET /endpoint
+−
00:02BLOCK_LIBRARY

A complete backend — visual to ship, real when you export

Eight blocks, each with a known code shape. Nothing here is a runtime that interprets your design on every request — the block is a compiler target, and what it emits is in the repo you download.

Database
usersprojectslogs
iduuidPK
emailtext
created_attimestamp
roleenum

Schema to SQL

A real Postgres database, with your schema, migrations you can read, and pgvector when you need it. Bring your own if you would rather.

100% portable
Auto migrations
Vector embeddings
Auth
you@example.com
••••••••••••
GitHubGoogleEmail
RLS enabled

Sign-in, built in

Sign-up and login with OAuth or magic links, and row-level security emitted as SQL policies you apply yourself — not settings in someone else's dashboard.

OAuth + Magic link
Row-level security
Team RBAC
Deployment
$ wyro deploy
Bundling...
✓ auth.handler
✓ upload.pipeline
✓ webhook.router
Live → api.yourapp.com
$

Runs anywhere Node runs

Your backend runs as a normal Node process behind a Dockerfile. Deploy it from here, or take the repo and run it wherever you already run things.

Dockerfile in every export
Railway, Fly, Render or your own box
CI workflow included
Workflows
user.signupsend.email
file.uploadprocess.cdn
cron.dailyanalytics.run

Logic you can see

Triggers, queues, cron and multi-step pipelines drawn as a graph — and emitted as ordinary async functions you can step through in a debugger.

Visual logic builder
Cron + webhooks
Async job queues
Storage
2.4mb
1.1mb
84kb
18mb
3.2mb
220kb
55mb
940kb

Files at CDN speed

Uploads, downloads and access rules for files, against an S3-compatible bucket. Signed URLs, size limits and MIME checks come out as code, not as configuration.

S3-compatible
CDN-ready
Access policies
Realtime
active connections247
events / sec1.2k
broadcast latency8ms

Live by default

Push updates to connected clients over SSE or WebSocket channels, with presence and Postgres change streams wired up for you.

WebSocket channels
Presence tracking
DB change streams
AI & Vector
embed_1embed_2embed_3

Search by meaning

Embeddings and vector search on pgvector, in the same database as the rest of your data — so a semantic query is a join, not a second system to keep in sync.

pgvector built in
OpenAI compatible
Semantic search
REST APIs
GET/v1/users›
POST/v1/projects›
PUT/v1/users/:id›
DEL/v1/storage/:key›
GET/v1/analytics›

Typed endpoints

REST endpoints derived from your schema, with request and response types that match the tables they read. Change a column and the types stop compiling.

Auto-generated
TypeScript types
OpenAPI docs
00:03COMPILER

Code you would not be embarrassed to review

Express routes with typed handlers, a Drizzle schema, named Zod validators, one concern per file. The generated code has no framework of ours in it and no markers to work around — a reviewer who has never heard of Wyro cannot tell which files a person wrote.

Read the compiler docs
handleUsers.tsschema.tsrouter.ts
1// generated · edit freely, it's yours
2export async function handleUsers(
3 req: Request, res: Response
4) {
5 const parsed = insertUserSchema
6 .safeParse(req.body);
7 if (!parsed.success)
8 return res.status(400).json(parsed.error);
9 const [user] = await db
10 .insert(users).values(parsed.data)
11 .returning();
12 return res.status(201).json(user);
13}
TypeScriptExpress · Drizzle · Zod — typed end to end
00:04EXPORT_LOG

A repository, written the way you'd write it

Express, Drizzle, Zod, TypeScript. A Dockerfile, a compose file, a CI workflow and a smoke test. Conventional layout, no generated-code banners to strip, nothing that has to stay in place for it to run. Clone it and it reads like a repo your team already maintains.

See a real export
$ wyro export my-backend
✓ 3 routes → src/api
✓ drizzle schema → src/db/schema.ts
✓ zod validators → src/db/schemas.ts
✓ dockerfile + compose + README
it's a normal repo → git init && deploy
$
00:05PIPELINE

Every layer of the stack, legible

Every step from canvas to production is something you can open and read. Nothing in the path asks to be taken on trust.

The canvas

Describe it in a sentence, or place the blocks yourself — both end at the same graph

The compiler

Deterministic. The same graph emits byte-identical files, so a diff means a design changed

Generated TypeScript

Express routes · Drizzle schema · Zod validators · auth middleware · tests

Your repository

Git history · pull requests · CI · the review your team already does

Deploy

One button here, or the Dockerfile and anywhere Node already runs

Runs anywhere Node runsVercelRailwayFly.ioDockerBare metal
00:06COMPARISON

The speed of a builder, the craft of code

WyroAI app buildersHand-coding
Readable, typed source–
Conventional file layout–
Ships production TypeScript–
Visual, minutes to a backend–
Standard Node deploy targets–
Reviewable in a normal PR–
00:07THE_CHECK

The check that runs where you review

A browser extension. It reads the backend of whatever repository you are looking at and tells you what it actually does.

prisma/prisma-examples
Checking
Reading the repository…
01 / 04

Install it once

A button appears on every GitHub repository you open. No account, no configuration, nothing to connect.

  1. Install it once

    A button appears on every GitHub repository you open. No account, no configuration, nothing to connect.

  2. It reads the repository

    Drizzle, Prisma, Mongoose, TypeORM and SQLAlchemy schemas. Express routes, class routers, NestJS decorators and FastAPI. TypeScript, JavaScript and Python. Fetched from GitHub and parsed in your browser — nothing is uploaded.

  3. It names what it found

    Not a score and not a summary. The endpoint, the table it reaches, and the rule it breaks — so you can check the claim yourself in the file.

  4. And what it could not read

    A rule with nothing to look at did not pass, so it is listed as not having run. A project it cannot parse is reported as unreadable rather than clean. That distinction is the whole tool.

Chrome · free · runs on your machine

Add it to your browser

Then open any GitHub repository and press Check with Wyro.

Add to Chrome

Repositories are read through GitHub and analysed in your browser — nothing is uploaded. Prefer to inspect it first, or not using Chrome? Download the build (1.7 MB) and load it unpacked.

The same check, three ways in.
No account at any of them.

github.com/prisma/prisma-examples
prisma-examplesCheck with Wyro
48 findings16 routes · 23 tables
POST /post reaches Post without authenticating
PUT /publish/:id reaches Post without authenticating
DELETE /post/:id reaches Post without authenticating

and 45 more

The widget. A button on every GitHub repository you open. It reads the backend in your browser and names the routes that reach your data without checking who is asking.

Add it to Chrome
wyro.in/scan/prisma/prisma-examples
16routes
23tables
10errors
POST/postno auth
PUT/publish/:idno auth
DEL/post/:idno auth

7 / 7 rules ran · 120 files read

A check as a link. Put any public repository after /scan and the finding becomes a page — one you can paste into a pull request for someone who has installed nothing.

Open a live report
my-app.zip
v0LovableBolt

Unzipped in your browser

A ZIP from anywhere. Drag the export from v0, Lovable or Bolt onto this page. It is unzipped and read in your browser — nothing is uploaded unless you ask for it to be.

Drop one in
00:08WALL_OF_CODE

What builders say once they read it

In their words. Square brackets mark an editorial correction.

The developers at our office have saved a great amount of time. We'd be out here struggling. But once we came across Wyro, work was simple.
JJake GalZellow
Wyro really makes work efficient. I love making apps, but scaling with users over time would lock me into their backend. I didn't face that problem with Wyro!
SStacey D'SouzaBloom
[12] Weeks! That's what you save. I built a backend for my app in 30 minutes with the entirety of the control with me. This is it.
MMichaelStacks
We were allowed to use the application on a waitlist trial. This is impressive! Especially because building a backend is tough, but with the drag-and-drop concept, scaling is easy!
BBraceProvidence Marketing
The wide range of options available to connect to each node makes it widely accessible for any application. We're talking gym bookings, reservations, and whatnot?
MMorgan HouseClipIt
The developers at our office have saved a great amount of time. We'd be out here struggling. But once we came across Wyro, work was simple.
JJake GalZellow
Wyro really makes work efficient. I love making apps, but scaling with users over time would lock me into their backend. I didn't face that problem with Wyro!
SStacey D'SouzaBloom
[12] Weeks! That's what you save. I built a backend for my app in 30 minutes with the entirety of the control with me. This is it.
MMichaelStacks
We were allowed to use the application on a waitlist trial. This is impressive! Especially because building a backend is tough, but with the drag-and-drop concept, scaling is easy!
BBraceProvidence Marketing
The wide range of options available to connect to each node makes it widely accessible for any application. We're talking gym bookings, reservations, and whatnot?
MMorgan HouseClipIt
Wyro really makes work efficient. I love making apps, but scaling with users over time would lock me into their backend. I didn't face that problem with Wyro!
SStacey D'SouzaBloom
[12] Weeks! That's what you save. I built a backend for my app in 30 minutes with the entirety of the control with me. This is it.
MMichaelStacks
We were allowed to use the application on a waitlist trial. This is impressive! Especially because building a backend is tough, but with the drag-and-drop concept, scaling is easy!
BBraceProvidence Marketing
The wide range of options available to connect to each node makes it widely accessible for any application. We're talking gym bookings, reservations, and whatnot?
MMorgan HouseClipIt
The developers at our office have saved a great amount of time. We'd be out here struggling. But once we came across Wyro, work was simple.
JJake GalZellow
Wyro really makes work efficient. I love making apps, but scaling with users over time would lock me into their backend. I didn't face that problem with Wyro!
SStacey D'SouzaBloom
[12] Weeks! That's what you save. I built a backend for my app in 30 minutes with the entirety of the control with me. This is it.
MMichaelStacks
We were allowed to use the application on a waitlist trial. This is impressive! Especially because building a backend is tough, but with the drag-and-drop concept, scaling is easy!
BBraceProvidence Marketing
The wide range of options available to connect to each node makes it widely accessible for any application. We're talking gym bookings, reservations, and whatnot?
MMorgan HouseClipIt
The developers at our office have saved a great amount of time. We'd be out here struggling. But once we came across Wyro, work was simple.
JJake GalZellow
[12] Weeks! That's what you save. I built a backend for my app in 30 minutes with the entirety of the control with me. This is it.
MMichaelStacks
We were allowed to use the application on a waitlist trial. This is impressive! Especially because building a backend is tough, but with the drag-and-drop concept, scaling is easy!
BBraceProvidence Marketing
The wide range of options available to connect to each node makes it widely accessible for any application. We're talking gym bookings, reservations, and whatnot?
MMorgan HouseClipIt
The developers at our office have saved a great amount of time. We'd be out here struggling. But once we came across Wyro, work was simple.
JJake GalZellow
Wyro really makes work efficient. I love making apps, but scaling with users over time would lock me into their backend. I didn't face that problem with Wyro!
SStacey D'SouzaBloom
[12] Weeks! That's what you save. I built a backend for my app in 30 minutes with the entirety of the control with me. This is it.
MMichaelStacks
We were allowed to use the application on a waitlist trial. This is impressive! Especially because building a backend is tough, but with the drag-and-drop concept, scaling is easy!
BBraceProvidence Marketing
The wide range of options available to connect to each node makes it widely accessible for any application. We're talking gym bookings, reservations, and whatnot?
MMorgan HouseClipIt
The developers at our office have saved a great amount of time. We'd be out here struggling. But once we came across Wyro, work was simple.
JJake GalZellow
Wyro really makes work efficient. I love making apps, but scaling with users over time would lock me into their backend. I didn't face that problem with Wyro!
SStacey D'SouzaBloom
00:09COMMUNITY

Build alongside the crew

The people who've already ejected, the ones deciding whether to, and whoever's writing the compiler that week.

  • canvas-helpStuck wiring a block? Post the graph.
  • export-showcaseShipped something? Post the repo.
  • compiler-bugsBad codegen goes here — it gets fixed.
  • feature-requestsWhat the canvas should do next.
Join the Discord →Free · No pitch · Leave whenever
00:10FAQ

The parts people ask about

What exactly does the compiler emit?

Express, Drizzle, Zod and TypeScript in a conventional layout — the same libraries you would have reached for. No SDK, no runtime, no import that phones home, no banner comment to strip. Auth is wired into every generated route by default; an open endpoint is a deliberate unticked box on the canvas, not the default.

What if I outgrow the visual builder?

You open it in your editor and keep going. That is the case the whole thing is designed around: the output is laid out the way an experienced team would lay it out, so picking it up by hand is a normal afternoon rather than a migration project.

Where can I deploy it?

Anywhere Node runs. It is a normal process behind a Dockerfile, so Railway, Fly, a VM, Kubernetes or the box under your desk all work. Deploying from inside Wyro is one button; it is not the only door.

Is the code actually readable?

Judge it yourself — the demo at the top of this page returns the real files. What you will find: typed handlers, named Zod schemas, one concern per file, a CORS allow-list that defaults to same-origin, rate limiting, graceful shutdown that drains the pool, and errors that never return the driver's SQL.

Can I edit the code and re-import it?

Edits you make in Wyro's code editor are stored as overrides and re-applied on top of every later compile, so recompiling does not quietly undo them. Once you have downloaded the repo and moved into your own editor, that copy is yours to change freely — and you can point Wyro back at it later, which reads the architecture out of the code as it now stands.

Is there a free tier?

Yes. One project, ten compiles a month, and the whole repository as a ZIP — exporting is not the paid part. Free exports carry a Wyro badge in the README and an X-Powered-By header, both removed on paid plans. Paid adds more projects, managed databases, deploys and seats.

Draw it once.
Ship the real thing.

Describe it in a sentence, read what comes out, and decide from there. The demo needs no account.