Introduction
What wisp is, what it isn't, and where to go next.
wisp is a TypeScript backend framework that compiles your code into AWS infrastructure. You declare Api, Store,
Queue, Schedule, Bucket, and Workflow in plain TypeScript. wisp deploy reads those declarations, works
out the infrastructure they need, and creates it in your own AWS account.
Your backend costs $0.00 when nobody is using it — and that isn't advice, it's enforced. Before a deploy reaches AWS, wisp checks the infrastructure it's about to create for anything that bills by the hour, and stops if it finds one.
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 getOrder = api.get("/orders/{id}", {}, async ({ params }) => {
const order = await orders.get({ id: params.id });
return order ? { status: 200, body: order } : { status: 404, body: { error: "not_found" } };
});That deploys an API Gateway route, one Lambda function, a DynamoDB table, and an IAM role that lets this one handler read this one table.
New to wisp?
Getting started
Install wisp and deploy a route to your own AWS account.
How wisp works
The compiler pipeline, from your source to CloudFormation.
What wisp generates
Exactly which AWS resources each primitive becomes.
Build
Api
HTTP routes, one Lambda each.
Store
A DynamoDB table, billed per request.
Queue
Background work, with a dead-letter queue.
Schedule
Run a function on a timer.
Bucket
File storage and presigned uploads.
Workflow
Multi-step jobs that survive restarts.
Understand
The $0 guarantee
What wisp refuses to deploy, and why.
IAM derivation
Why you never write a permission policy by hand.
Escape hatches
Three levels of control when the defaults aren't enough.
Environment variables
Getting secrets into functions without logging them.
Ship
Local development
Real traffic, your machine, no redeploy loop.
Deployment
Credentials, stages, and tearing a stack down.
CLI reference
Every command, flag, and its output.
Error codes
Every diagnostic wisp can emit, and how to fix it.
What wisp is not
- Not an ORM.
Storeis a thin, typed wrapper over DynamoDB's own access patterns —get,put,query,transactWrite— not a query builder. - Not multi-cloud. wisp targets AWS. The internal model has a seam for other targets, but only the AWS backend ships today.
- Not a router. There's no request dispatcher at runtime. Each route is its own Lambda, invoked directly by API Gateway.
- Not a hidden abstraction.
wisp synthwrites the real CloudFormation to.wisp/cloudformation.json. If you want to know exactly what's about to touch your account, it's right there in readable JSON.

