Compiles to serverless AWS primitives. Refuses to emit always-on infrastructure.
import { Api, Store } from "@vorynza/wisp";export const api = new Api("main");export const orders = new Store("orders", { partitionKey: { name: "id", type: "S" },});export const createOrder = api.post("/orders", {}, async ({ body }) => { const order = await orders.put({ id: crypto.randomUUID(), ...body }); return { status: 201, body: order };});One file. wisp deploy ships an API Gateway route, a Lambda function, a DynamoDB table, and a least-privilege IAM role scoped to exactly this handler.
Six primitives. Nothing else.
Every wisp app is built from the same six building blocks — each one compiles to plain CloudFormation you can read.
Api & Route
One Lambda per route behind API Gateway. Zod validation built in.
Store
A DynamoDB table with on-demand billing — never idle, never provisioned.
Queue
SQS with a dead-letter queue and partial-batch-failure handling, always on.
Schedule
Cron and rate expressions on EventBridge Scheduler, no server to keep warm.
Bucket
S3 storage with presigned uploads and event handlers for created/removed objects.
Workflow
Durable, multi-step functions on Step Functions — write it like normal async code.
The compiler refuses always-on infrastructure
Before wisp deploy touches your AWS account, it scans the synthesized CloudFormation template for anything that costs money while idle — an RDS instance, a NAT gateway, a load balancer, provisioned DynamoDB throughput. If it finds one, the deploy is blocked with the exact resource, its monthly cost, and a $0-idle alternative. No silent bill surprises.

