Introduction
EdgeBase is an open-source edge-native BaaS built on Workers, Durable Objects, D1, and R2. Auth, Database, Realtime, Storage, and Functions share one serverless edge architecture, while shared blocks can switch to PostgreSQL when you need it. Develop locally on Node.js, then run the built app with Docker or a Pack artifact, or deploy globally on Cloudflare's edge. No vendor lock-in, MIT licensed.
Why EdgeBase?
| Firebase | Supabase | PocketBase | EdgeBase | |
|---|---|---|---|---|
| Database | NoSQL (Firestore) | PostgreSQL | SQLite | SQLite + PostgreSQL |
| Auth Cost | $275/100K MAU | Included in $25/mo | Free | Free |
| Cold Start | ~200ms | ~500ms | N/A | ~0ms |
| Egress | $0.12/GB | $0.09/GB | Server-dependent | $0 |
| Self-Host | No | Complex | Single binary | Docker + Pack |
| Live Subscriptions | Yes | Yes | Yes | Yes |
| Edge Deploy | No | No | No | Yes |
| Open Source | No | Yes (AGPL) | Yes (MIT) | Yes (MIT) |
Scale-Out by Design
Every other BaaS funnels traffic through a single database. When your app grows, you need replicas, connection pooling, and sharding. EdgeBase gives each user/tenant its own Durable Object with embedded SQLite — more users means more instances, not more load on a bottleneck. 10 users and 10 million users run the same code and config.
Runs Everywhere
Deploy your backend in whichever way suits your project:
| Mode | Command | Requirements | Best For |
|---|---|---|---|
| Cloud Edge | npx edgebase deploy | Cloudflare account | Production, global low-latency |
| Docker | npx edgebase docker run | Docker | Self-hosted, single container |
| Pack artifact | npx edgebase pack --format portable | Target platform | Self-hosted without Docker |
| Local development | npx edgebase dev | Node.js | Hot reload and local iteration |
Cloud Edge and the generated Docker/pack launchers run the same built
application contract. dev is the local iteration surface. No vendor lock-in.
Costs Scale with Compute, Not Users
Start free, scale without fear. No per-user auth charges. No egress or bandwidth fees on the Cloudflare edge stack EdgeBase builds on. Idle instances cost $0 through DO hibernation. Deploy core services to Cloudflare's edge on the Free plan, then scale up with the $5/month paid plan (account-level — covers unlimited projects). Optional products like R2 still need a one-time billing setup before first use. Or self-host for free.
~0ms Cold Starts
Built on workerd, so requests hit V8 isolates instead of waiting for containers to boot.
Fully Open Source
MIT licensed. Export your data anytime. Run it anywhere.
Core Features
-
Database -- SQLite-backed storage across D1 and Durable Objects, with full SQL support including JOINs, FTS5 full-text search, and automatic schema management.
-
Authentication -- Email/password, OAuth (14 providers: Google, GitHub, Apple, Discord, Microsoft, Facebook, Kakao, Naver, X, Reddit, Line, Slack, Spotify, Twitch), and anonymous auth. PBKDF2 password hashing via Web Crypto API.
-
Database Subscriptions -- WebSocket-based
onSnapshotsubscriptions for live data changes with server-side filtering. Hibernation API for cost efficiency. -
Room -- Server-authoritative state synchronization with built-in members (presence) and signals (pub/sub). Ideal for multiplayer, collaboration, coordination, and real-time workflows.
-
Storage -- R2-backed file storage with $0 egress, signed URLs, multipart upload with resume, and per-bucket access rules.
-
Functions -- Database triggers (
insert,update,delete), authentication triggers (beforeSignUp,onTokenRefresh, etc.), cron-scheduled functions, and HTTP endpoints. -
Push Notifications -- Register devices, send to users/topics/devices, and broadcast. Managed via Service Key API.
-
Admin Dashboard -- Built-in management UI at
/adminfor browsing data, managing users, and monitoring your backend.
Architecture
Client SDK ──→ Worker (Hono) ──→ Durable Objects (isolated DB blocks, subscriptions, rooms, atomic OAuth state)
──→ D1 (auth + single-instance DB blocks)
──→ R2 (File Storage)
──→ KV (ephemeral cache + legacy OAuth migration mirror)
DB blocks come in two types. Single-instance blocks (no instance ID) default to D1 — good for globally shared data. Dynamic blocks (instance: true) create a separate Durable Object per ID — good for isolated data. The block name is just a config key you choose; there are no reserved names.
- Single-instance (e.g.,
app,catalog,public) — one database, D1 by default. - Dynamic (e.g.,
mydata:{userId},team:{teamId}) — one Durable Object per ID, physically isolated.
Tables that need SQL JOINs share the same Durable Object by being defined under the same databases.{namespace}.tables block.
The same built application contract runs on cloud edge, the generated Docker container, and the generated Pack launcher. edgebase dev is local development only; the generated self-host launchers provide the production lifecycle. KV and R2 are emulated by the self-host runtime.
SDK Support
EdgeBase provides SDKs for 14 languages:
| Language | Package | Registry |
|---|---|---|
| JavaScript/TypeScript | @edge-base/web, @edge-base/react-native | npm |
| Flutter/Dart | edgebase_flutter | pub.dev |
| Swift (iOS) | edgebase-swift | SPM |
| Kotlin (Android/JVM) | com.github.edge-base.edgebase:edgebase-client | JitPack |
| Java (JVM) | com.github.edge-base.edgebase:edgebase-android-java | JitPack |
| Scala (JVM) | com.github.edge-base.edgebase:edgebase-admin-scala | JitPack |
| Python | edgebase-admin, edgebase-core | PyPI |
| C# (Unity/.NET) | EdgeBase | NuGet / source copy |
| Go | github.com/edge-base/sdk-go | Go Modules |
| PHP | edgebase/sdk | Packagist |
| Rust | edgebase-admin | crates.io |
| C++ (Unreal) | Source distribution | GitHub Releases |
| Ruby | edgebase_admin | RubyGems |
| Elixir | edgebase_admin | Hex |
Next Steps
- Quickstart -- Get running in 5 minutes
- Use EdgeBase With AI -- Route agents to the right SDK and trust boundary
- Configuration -- Set up your
edgebase.config.ts - Deployment -- Choose your deployment mode