A filesystem, key-value store, AI and auth — called directly from client-side JavaScript, with no API keys in the page and no backend code to write. It runs on your own Vercel account, not ours.
Press Run.Edit the code and press Run, or ⌘↵. This is a real deployment — the same one the reference pages use.
What you get
Sign in once and every namespace is scoped to that user. The session is an httpOnly cookie, so the browser cannot read it and a stolen bundle reveals nothing.
Nested directories, rename, move and copy. Bytes in Vercel Blob, tree in Redis.
Key-value with TTL and server-side atomic counters.
Streamed chat, image generation and transcription through AI Gateway.
Email and password with Argon2id, plus zero-friction anonymous sessions.
Your own server functions, called from the page. The secret stays on the server.
Two ways in
The client is a single file with no dependencies. Import it if you already have a bundler, or drop in a script tag if you do not — the API is identical, and so is everything above.
With a bundler
import { createClient } from 'perusta';
const cloud = createClient();
await cloud.auth.ensureUser();
await cloud.fs.write('notes/todo.md', '# Hello');Without one
<script src="https://unpkg.com/perusta"></script>
<script type="module">
await perusta.auth.ensureUser();
await perusta.fs.write('notes/todo.md', '# Hello');
</script>The script-tag build is 2.2 KB gzipped and installs one global. Both examples in the repository are real apps — one built with Next and React, and the same app again in one HTML file with no build step at all.
The awkward part, handled
Vercel Blob is flat object storage. It has no directories and no rename, so most things built on it either fake directories with key prefixes — making a rename an O(n) copy of every descendant — or simply do not offer one.
perusta keeps the tree in Redis and addresses each blob by an immutable node id that never appears in a path. Renaming a directory holding ten thousand files is two Redis writes and zero bytes moved. Try it in the playground above.
Your infrastructure
No account to create, no dashboard, no per-seat pricing, no rate limit set by someone else. You deploy the template to your own Vercel project, the storage is billed to you, and you can hand the whole thing to another developer without involving anyone.
That is also the honest trade-off: no managed service means no one is on call for you. It is MIT-licensed, so forking it is a supported outcome.