Introduction
voidbase is an open source backend that speaks PocketBase's API and runs on Cloudflare. A database with a schema you design in a browser, authentication, file storage, realtime subscriptions and an admin panel, from one address, in an account that belongs to you.
What you get
One server, and everything a small application needs from a backend before it needs a team. Collections with a schema you edit in the admin panel and API rules that decide who may read and write each one. Users, passwords, OAuth and one-time codes. File uploads with thumbnails generated on request. A realtime subscription that pushes changes as they happen. Scheduled jobs. Endpoints and event handlers you write in JavaScript and drop into a directory.
None of that is new, and that is the point. It is PocketBase's API, reimplemented so it can run somewhere PocketBase cannot.
Around that core, plugins that ship with it: a description of your API at /api/docs, an MCP server at /api/mcp so an agent can discover the instance rather than be told about it, verified backups, payments through Stripe, Polar or Lemon Squeezy, translations, mail from your own domain, and the files crawlers ask for. What is an instance lists them.
Two things it is made of
PocketBase's API, not its code. The endpoints, the filter language, the API rules, the hook surface and the admin panel are PocketBase's, which means the SDKs work unchanged, anything written for PocketBase applies here, and moving between the two is changing an address. The panel served at /_/ is PocketBase's own build, unmodified. What differs is written down on the differences page rather than left for you to discover.
Cloudflare, in your own account. A deployed instance is one Worker with a D1 database, an R2 bucket, a jobs queue and the Durable Object that fans out realtime, created in the Cloudflare account you already have. There is no machine to size, nothing to keep patched, and nothing sitting between you and the platform. The same server also runs as a single process on your laptop, from one downloaded file or from npm, with the same API and the same panel, and voidbase migrate moves the data between any two of them.
# one file, nothing installed
./voidbase serve
# or from npm, with instances you name
bun i -g @voidbase-cloud/voidbase
voidbase local new blog
# or on Cloudflare, in your own account
voidbase deployWhat these pages assume
You have npm or bun, and nothing else. Where a command uses bun, npm does the same thing: npm i -g for bun i -g, and npx for bunx. The standalone page assumes less than that.
Because the API is PocketBase's, these pages are short on purpose. Where something differs we say so, and where it does not we link PocketBase's own documentation rather than copying it, because a copy goes stale and a link does not.
Where it is
voidbase is at 1.0. It runs, people are running it, and the API is PocketBase's and is not going to move. From 1.0 on the version means what semver says: a change that breaks something around that API is a new major version, and every release's changelog says what moved. It is free, and that page explains what we mean by the word and how a free backend pays for itself.
Fix it yourself. The link below opens this file in GitHub's editor and forks the repository for you if you need one, and your change becomes a pull request without leaving the browser.