Tell your agent what to build. wervt ships it.
A self-hosted platform for small Nuxt apps. Each one gets a URL, its own Postgres, live data, sign-in and logs, and runs in an isolate that costs nothing while it's idle.

01 / From prompt to production
One sentence in, one URL out.
With the wervt skill installed, your agent scaffolds the app, writes the schema, the API and the pages, deploys it and reads the logs until it's clean. You get a link. Apps start private, so only you can open it until you say otherwise.
❯ claude "build a habit tracker and ship it on wervt"
◇ wervt whoamiadmin
◇ pnpm create wervt habitsNuxt 5 · Drizzle · valibot
◇ server/db/schema.tshabits, checkins
◇ pnpm db:generatedrizzle/0000_init
◇ pnpm exec vp check0 problems
◇ wervt deployextract · migrate · activate
◇ wervt logs habits 'level:error'no entries
✓https://habits.wervt.app · private, you're allowed
02 / The platform
Everything a small app needs. Nothing it doesn't.
The parts every small app ends up rebuilding, done once, on your server. Apps stay plain Nuxt, so nothing locks them in.
Isolates, not containers
Every app runs in its own V8 isolate on Supabase Edge Runtime. It starts on the first request and stops when idle, so a hundred apps cost what one does.
Postgres per app
Its own role and schema, Drizzle ORM v1, migrations on deploy. An app can only ever see its own data.
Live by default
useShape() renders rows on the server and keeps them live with Electric. Write through an API route, every open tab updates.
Sign-in built in
Apps are private until you open them. wervt signs people in and tells the app who they are, with no auth code in the app.
Logs as wide events
One event per request with evlog, plus boots, crashes and limits from the runtime. 14 days, searchable with LogsQL, from the CLI too.
Deploys with history
From your machine or GitHub Actions with a per-app token. Every release records its commit; roll back in one click.
03 / Just Nuxt
Plain Nuxt, one module.
Apps are regular Nuxt 5 apps with @wervt/nuxt. Server routes from nuxt/server, validation with valibot, Drizzle for queries and useShape() for live data. Nothing to learn that your agent doesn't already know.
- Migrations on deploy, run as the app's own role.
- Live without WebSockets in your code: write rows, shapes sync them.
- The signed-in user on every request, from wervt.
import { useDb, useValidatedBody, useWervtUser } from '@wervt/nuxt/server'
import { defineEventHandler } from 'nuxt/server'
import * as v from 'valibot'
import { habits } from '../db/schema'
export default defineEventHandler(async (event) => {
const user = useWervtUser(event)!
const { name } = await useValidatedBody(event, {
name: v.pipe(v.string(), v.trim(), v.nonEmpty()),
})
const [habit] = await useDb()
.insert(habits)
.values({ name, owner: user.email })
.returning()
return habit
})
04 / The dashboard
See what your agents shipped.
Every app, its releases and commits, its logs, its data. Browse tables and run read-only SQL, set access and secrets, roll back. Or do all of it from the CLI.


05 / Under the hood
One compose file. No container per app.
wervt is a handful of services next to your others. The runtime routes <app>.your.domain to the app's isolate, starting it when needed.
Edge
Runtime
Data
06 / Made for agents
Your agent knows wervt before it writes a line.
The wervt skill
From an empty folder to a URL: scaffold, build, deploy, check the logs.
npx @wervt/cli skill installAGENTS.md in every app
The APIs to use, the rules of the isolate, and how to debug.
pnpm create wervt my-appProduction logs
With a read-only token, agents debug from evidence, not guesses.
wervt logs my-app 'level:error'Docs for machines
An MCP server, llms.txt and llms-full.txt next to these docs.
https://wervt.app/mcpYour server. Your agent's apps.
Run the stack, install the skill, and ask for the app you've been meaning to build.