Three things nothing else does at once.
One binary.
Built with bun build --compile for Linux, macOS and Windows. No native deps, no sidecar, no companion daemon.
Real SQL tables.
Every collection is a real table: vb_posts, vb_users. SQLite by default (open it with sqlite3), Postgres (beta) when you outgrow the box. Index it. Migrate it.
Logic in the browser.
Hooks, routes, cron and queue workers, written in the admin UI with autocomplete typed to your real schema. Save it. The next request runs it.
One small box, zero errors.
A 4 vCPU VPS running the default install behind nginx. Measured over the internet against a 100,000-record collection, re-run before every release.
record reads, realistic mix
single-record fetches
record writes
mixed, 80 % reads · 20 % writes
Every figure is a sustained rate with no failed request and p95 under 400 ms end to end, round trip included. Setup, method and scripts: how we measure →
Six services at $140 a month. Or one $5 box.
- SQLite
- Auth
- Files
- Realtime
- Hooks
- Queue
- MCP
scp as a backup.
Eight systems. Zero add-ons.
No plugins, no Pro tier. All of it ships in v0.27.1.
Collections + REST
Real SQL tables with typed, validated fields. REST with filter, sort, expand and projection. ETag optimistic concurrency. Edit a field and get an ALTER-style schema diff.
- relation · select · json · file
- editor · geoPoint · vector
- base · auth · view
- ETag-aware writes
?filter=status="published" &sort=-created &expand=author &fields=id,title,author.name
Auth
Email and password, OAuth2 with PKCE (Google, GitHub, Apple, Microsoft, Discord and more, plus generic OIDC), OTP and magic links, MFA/TOTP, anonymous sessions and admin impersonation.
- JWT, configurable expiry
- Recovery codes
- No account-enumeration leaks
- Multi-admin
google · github · apple microsoft · discord · +10 generic OIDC MFA / TOTP ✓ magic link ✓
Realtime
Subscribe to a collection, a single record, one kind of event, or * for everything. SSE fallback included. Every stream is checked against your API rules.
- Record subscriptions
- Event-type topics
- Wildcard topics
- Auth-gated streams
subscribe posts subscribe posts/abc123 subscribe posts.create subscribe *
Files
Local disk by default, one-click S3 and R2 presets. On-the-fly thumbnails, MIME and size validation, and per-field protection with one-time, IP-bound tokens. Every download is audited.
- ?thumb=300x200
- Per-field viewRule
- One-time + IP-bound tokens
- Download audit log
?thumb=300x200 &token=one-time·ip-bound → files.download audit row
Server-side logic
Six hook points, custom HTTP routes, UTC cron, queue workers, HMAC-signed webhooks, feature flags with rollout, and push via OneSignal or FCM. All edited live in the browser with Monaco autocomplete.
- Edit live, no redeploy
- helpers.notify(userId, payload)
- helpers.flags.isEnabled
- helpers.http with retries
sql · fs · http · security template · cron · mails flags · webhooks · notify
Operations
Request log viewer with rule-eval inspection, admin audit log, per-collection record history with point-in-time restore, scheduled backups (a file copy on SQLite, pg_dump on Postgres), AES-GCM at rest, and session revoke. Every release is keyless-signed with a CycloneDX SBOM.
- Admin audit log
- Point-in-time restore
- Active sessions + revoke
- Sigstore signatures
$ vaultbase backup --to s3://bucket ✓ snapshot data.db ✓ uploaded 41.2 MB
Security
Per-email and per-IP brute-force lockout, CORS allow-list, password policy with an optional Have I Been Pwned check, SSRF egress guard for hooks, and Prometheus metrics with optional bearer auth.
- Brute-force lockout
- Password policy + HIBP
- SSRF egress guard
- Update checker
vaultbase_requests_total vaultbase_step_duration_microseconds vaultbase_database_bytes vaultbase_uptime_seconds
MCP for AI agents
A built-in MCP server for Claude, Cursor, ChatGPT, Zed and any other client that speaks the protocol. Tools are generated per collection, gated by token scopes, and every call is audited.
- 5 tools per collection
- Scope-gated tokens
- Every call audited
- Read-only mode
stdio HTTP + SSE stateless POST npx @vaultbase/mcp # remote bridge
Schema, rules and code. Live.
No migrations folder. No redeploy. Edit, save, done.
How it stacks up.
Built for solo devs and small teams on one host. If you need multi-region, use something else.
| Vaultbase | PocketBase | Supabase | Firebase | |
|---|---|---|---|---|
| Single binary, self-hosted | Yes (Supported) | Yes (Supported) | No (Not supported) | No (Not supported) |
| Database | SQLite or Postgres (Supported) | SQLite only (Partial) | Postgres (Supported) | Firestore (NoSQL) (Partial) |
| Logic editable in the browser | Yes (Supported) | File-based (Not supported) | Edge Fns (Partial) | Deploy only (Not supported) |
| Queues + cron built in | Native (Supported) | Cron only (Partial) | Extensions (Partial) | Cloud Tasks (Partial) |
| Realtime | WS + SSE (Supported) | SSE only (Partial) | WebSocket (Supported) | Proprietary (Supported) |
| Record history + restore | Yes (Supported) | No (Not supported) | DIY (Not supported) | No (Not supported) |
| First-party MCP server | Yes (Supported) | No (Not supported) | No (Not supported) | No (Not supported) |
| Open source | MIT (Supported) | MIT (Supported) | Apache 2.0 (Supported) | Proprietary (Not supported) |
| Multi-region | No (Not supported) | No (Not supported) | Yes (Supported) | Yes (Supported) |
Running in under a minute.
First run opens a setup wizard that creates your admin account.
$ curl -fsSL https://get.vaultbase.dev | sudo sh -s -- --verify-sig ✓ Latest release: v0.27.1 ✓ SHA-256 verified ✓ Cosign signature verified (Sigstore Fulcio) ✓ Installed /usr/local/bin/vaultbase # Linux · macOS · needs cosign on PATH · systemd service on Linux
> irm https://get.vaultbase.dev/install.ps1 | iex ✓ Latest release: v0.27.1 ✓ SHA-256 verified ✓ Installed %LOCALAPPDATA%\Programs\Vaultbase # no admin rights · adds vaultbase to your PATH
$ bun install $ bun run build # → ./vaultbase $ ./vaultbase # → :8091 # open localhost:8091/_/ → setup wizard
One process. Your data is files.
TypeScript end to end. No second asset server, no native module.
- bun
- elysia
- bun:sqlite
- Bun.sql
- drizzle
- react 19
- monaco
- queue engine
- oauth2 · jwt
- aes-gcm
- Multi-region deployments
- Sharding
- A managed cloud (it is on the roadmap for later)
- 100k+ concurrent connections
Starts as one file on one box. Outgrow it, and point it at Postgres (beta) to run several servers. Need more than that from your backend? Vaultbase isn't for you, by design.
Own your backend.
Download v0.27.1, run ./vaultbase, take your data with you whenever you want.