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
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.
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.
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.
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 canvasA 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.
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.
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.
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.
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.
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.
Live by default
Push updates to connected clients over SSE or WebSocket channels, with presence and Postgres change streams wired up for you.
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.
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.
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// generated · edit freely, it's yoursexport async function handleUsers( req: Request, res: Response) { const parsed = insertUserSchema .safeParse(req.body); if (!parsed.success) return res.status(400).json(parsed.error); const [user] = await db .insert(users).values(parsed.data) .returning(); return res.status(201).json(user);}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 exportEvery 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
The speed of a builder, the craft of code
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.
Install it once
A button appears on every GitHub repository you open. No account, no configuration, nothing to connect.
Install it once
A button appears on every GitHub repository you open. No account, no configuration, nothing to connect.
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.
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.
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.
Add it to your browser
Then open any GitHub repository and press Check with Wyro.
Add to ChromeRepositories 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.
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 Chrome7 / 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 reportUnzipped 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 inWhat 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.
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!
[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.
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!
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?
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.
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!
[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.
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!
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?
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!
[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.
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!
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?
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.
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!
[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.
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!
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?
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.
[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.
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!
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?
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.
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!
[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.
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!
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?
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.
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!
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.
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.