wispwisp

Backends that cost nothing when nobody is using them.

Write your backend in TypeScript. wisp works out the AWS setup for you and deploys it to your own account. When traffic stops, the bill goes to zero.

bunx create-wisp-app my-app

This is the whole file.

There is no separate configuration to keep in sync. wisp reads your code, works out what it needs, and builds it.

  • A database table, billed per request, so an idle table costs nothing.
  • One function per route, so a slow endpoint can never hold up the rest of your API.
  • Permissions that let this handler write to this table, and nothing else. You never write them by hand.
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 };});

The part nobody else does

wisp stops the deploy before it can cost you money.

Some AWS services charge by the hour whether or not anyone uses them. Before anything reaches your account, wisp checks for those and refuses to continue — so a surprise bill never gets the chance to happen.

wisp deploy
✗ WISP-AON-003  Always-on resource rejected

  This would create a NAT gateway.
  It costs about $32.40/month even with zero traffic.

  Instead, you could:
    • Remove VpcConfig — wisp Store and Api never need a VPC.

Day-to-day

Real requests. Your laptop. No waiting.

Run wisp dev and traffic to your API is handed to the code on your machine. Save a file and the next request already uses it — there is no redeploy in the loop.

It reads and writes your real data, so what you see locally is what you get in production.

How local development works
Terminal

How it compares

Where wisp fits, and where it doesn't.

wisp is opinionated, and opinions have costs. Here is an honest read on what you gain and what you give up.

AspectA server you runRaw AWS toolingwisp
Cost with no trafficRuns 24/7Whatever you provisioned$0, enforced at deploy
ScalingYou size and configure itYou size and configure itPer request, automatic
Infrastructure setupA separate config to maintainA separate config to maintainRead from your code
PermissionsOften one broad roleYou write each policyDerived per handler
Queues, cron, file storageAdd and wire a serviceWire each one yourselfBuilt in
Whose account it runs inYoursYoursYours

Managed serverless platforms

Vercel, Netlify, Cloudflare Workers

These also scale to zero, so cost is not the difference. The difference is where your backend lives: wisp deploys into your own AWS account, and your functions talk to AWS services directly rather than through a platform.

Infrastructure toolkits

SST, AWS CDK, Terraform

These also deploy to your account, and they can express far more than wisp can. wisp gives up that range on purpose: it reads infrastructure out of your application code instead of asking you to describe it, and refuses anything that would bill while idle.

Server frameworks

Express, Fastify, NestJS

These have larger ecosystems and run anywhere, which are real advantages. They also assume a process that stays running. wisp has no server to keep alive, so there is nothing to pay for or patch between requests.

When wisp is the wrong choice

Better to know now than three weeks in. Any of these means you should probably pick something else:

  • You need a relational database. wisp stores data in DynamoDB, and it blocks managed SQL databases because they bill by the hour.
  • You need long-lived connections, such as a WebSocket server or a process that holds state between requests.
  • You are not on AWS, or you need to stay portable across clouds.
  • You depend on a specific framework ecosystem, like Express middleware.

One command to a working project.

You'll need an AWS account and about five minutes. wisp deploys to your account, so there's nothing else to sign up for.

bunx create-wisp-app my-app
Read the getting started guide