Skip to content
STACK IT FAST

PocketBase vs Appwrite

Architecture comparison 2 projects Built from source-audited deep dives

PocketBase is a whole backend in one Go file: embedded SQLite, auth, files, realtime over Server-Sent Events and an admin UI compiled into the binary. Appwrite is a full backend-as-a-service platform: a PHP monolith on Swoole with PostgreSQL and Redis, isolated function runtimes, and generated SDKs for many platforms.

PocketBase
Go · MIT
Appwrite
PHP · BSD-3-Clause
Updated
2026-09-25

Which one should you pick?

Pick PocketBase if…
  • You want to deploy one binary with no external database
  • Your app fits a single SQLite database
  • You want to extend the backend with Go or JavaScript hooks (Goja)
Pick Appwrite if…
  • You need functions, messaging, static sites and storage in one platform
  • You want REST, GraphQL and realtime APIs with generated SDKs for web, mobile and server
  • You are ready to run a multi-container stack with PostgreSQL and Redis

Side by side

Attribute PocketBase Appwrite
Written in GoJavaScriptCSS PHPTypeScript
License MIT BSD-3-Clause
Frontend JavaScriptViteLeaflet none
Backend & APIs GoGoja PHPSwooleUtopia PHP framework familyGraphQL
Data & persistence SQLiteS3 PostgreSQLRedis
Infrastructure & deploy GoReleaser DockerTraefik
Key decisions
  • Pure Go SQLite driver eliminates CGO compile-time dependencies
  • Embedded admin UI compiles directly into the Go binary
  • Server-Sent Events for real-time subscription channels
  • The whole platform is one PHP monolith on Swoole, not microservices
  • A family of small utopia-php packages replaces a general web framework
  • Database and cache are pluggable but default to PostgreSQL and Redis
Audited 5cec579 · 2026-09-17 7ae78b5 · 2026-09-17

How they differ

One binary vs a platform

PocketBase compiles everything into a Go binary: a pure Go SQLite driver (no CGO), its own router instead of a third-party HTTP framework, the admin UI embedded at build time, and a Goja JavaScript VM for hooks. Appwrite is one PHP monolith running on Swoole and built from small utopia-php packages, fronted by Traefik, with Sites and Functions executed in isolated runtimes outside the API process.

Data

PocketBase stores data in SQLite and can put files on S3. Appwrite’s database and cache are pluggable but default to PostgreSQL and Redis.

Clients

Appwrite generates its client and server SDKs rather than hand-writing one per platform. PocketBase ships a JavaScript admin UI and relies on its REST and SSE APIs.

Architecture diagrams

PocketBase Open SVG
PocketBase architecture diagramYour app → pocketbase binary (REST · auth); Your app → Realtime (subscribe); Admin UI → pocketbase binary (superuser API); pocketbase binary → Hooks (events); pocketbase binary → SQLite (query builder); pocketbase binary → File storage (uploads)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEYour appREST · SSE clientsAdmin UIVite · embedded in binarypocketbase binaryGo · custom routerRealtimeServer-Sent EventsHooksGo · Goja JS VMSQLiteWAL · modernc (no CGO)File storagelocal disk or S3REST · authsubscribesuperuser APIeventsquery builderuploads
Appwrite Open SVG
Appwrite architecture diagramClient SDKs → Reverse proxy (REST · GraphQL); Console → Reverse proxy (HTTPS); Reverse proxy → API server (route); Reverse proxy → Realtime (websocket); API server → PostgreSQL (utopia database); API server → Redis (enqueue); Redis → Workers (jobs); Realtime → Redis (pub/sub); Workers → Functions & Sites (run)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEClient SDKsweb · mobile · serverConsoleweb UIReverse proxyTraefikAPI serverPHP · Swoole · UtopiaRealtimerealtime.phpWorkersworker-* binariesFunctions & Sitesisolated runtimesPostgreSQLdefault DB adapterRediscache · pub/sub · queueroutewebsocketrunREST · GraphQLHTTPSjobsutopia databaseenqueuepub/sub

Frequently asked questions

Does PocketBase need a separate database?

No. PocketBase embeds SQLite through a pure Go driver, so the whole backend runs as one file. Appwrite defaults to PostgreSQL and Redis.

How does realtime work in PocketBase and Appwrite?

PocketBase uses Server-Sent Events for its realtime subscription channels. Appwrite exposes a realtime API alongside REST and GraphQL.