PocketBase as a service

PocketBase, on demand.

Pick a name, get a backend: database, auth, files, realtime at https://<name>.duckerhub.com. No email, no setup — just sign up and build.

your frontend, already talking to it
$ curl -s https://myapp.duckerhub.com/api/collections/posts/records
{
  "page": 1, "perPage": 30, "totalItems": 2,
  "items": [
    { "id": "a9xk2…", "title": "hello ducker" },
    { "id": "b3qm7…", "title": "it is just PocketBase" }
  ]
}
How it works

Signup to first API call in a minute.

No email, no credit card, no YAML. Three steps and your frontend has a backend.

01

Sign up

Username and password — that's the whole form. You get an API key and a one-time recovery code.

02

Name your ducker

Pick a name and it's live in seconds at <name>.duckerhub.com — container, persistent storage and TLS included.

03

Point your frontend at it

Create the superuser via the installer at /_/, then hit the API from JS, Dart/Flutter, or anything that speaks HTTP.

Why duckerhub

A backend that earns its keep.

Not a mock, not a shim — the real PocketBase, wrapped in the boring operational bits you didn't want to run yourself.

Real PocketBase

SQLite database, auth, file storage and realtime subscriptions — the complete PocketBase API and admin UI, unmodified.

zZSleeps when idle

After 15 idle minutes your ducker stops and costs nothing. The next HTTP request wakes it in a couple of seconds.

Isolated by default

Every ducker runs in its own gVisor-sandboxed container with its own data volume. Your process, your data, nobody else's.

Hosts your frontend too

Upload a tar.gz of your built site and it's served at the ducker root with SPA fallback. /api and /_/ stay PocketBase.

Agent-native

Remote MCP at duckerhub.com/mcp lets your coding agent create and manage duckers with your API key — backends become a tool call.

No ceremony

No email verification, no org, no project, no region picker. A name is a backend. Delete is one click and actually deletes.

Use it

Any language that speaks HTTP.

The standard PocketBase REST API at your subdomain. Create collections in the admin UI, then read and write from your app.

app.js — fetch
// list records
const res = await fetch(
  'https://myapp.duckerhub.com/api/collections/posts/records');
const { items } = await res.json();

// create a record
await fetch(
  'https://myapp.duckerhub.com/api/collections/posts/records',
  { method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ title: 'hello ducker' }) });
main.dart — package:http
import 'package:http/http.dart' as http;
import 'dart:convert';

// list records
final res = await http.get(Uri.https(
  'myapp.duckerhub.com',
  '/api/collections/posts/records'));
final items = jsonDecode(res.body)['items'];

// create a record
await http.post(
  Uri.https('myapp.duckerhub.com',
    '/api/collections/posts/records'),
  headers: {'Content-Type': 'application/json'},
  body: jsonEncode({'title': 'hello ducker'}));