Auth & permissions
Register, login, JWT bearer tokens, bcrypt passwords and a per-collection permission system — public, user and admin rules enforced on every request.
Blazers is a Back-end as a Service written in Rust: auth, a schema-less database, file storage, realtime streams, webhooks, cron jobs, encrypted secrets, pub/sub and an admin dashboard — all persisted to a single SQLite file. No Docker, no accounts, no cloud.
$ cargo install blazers$ blazersServer running at http://localhost:8080$ curl -X POST localhost:8080/api/auth/register \ -d '{"email":"a@b.c", "password":"secret1"}'{"id":"82ff…", "email":"a@b.c"}$ curl localhost:8080/api/docsSwagger UI — every endpoint documented
Modelled on PocketBase's "one file, one binary" philosophy and Supabase's feature breadth, shipped as a Cargo workspace you can audit crate by crate.
Register, login, JWT bearer tokens, bcrypt passwords and a per-collection permission system — public, user and admin rules enforced on every request.
Schema-less collections stored as dynamic SQLite tables. Full CRUD with paging, search, sorting and JSON-schema validation.
Public and private buckets, streaming uploads, downloads and on-the-fly image thumbnails — files live next to the database.
WebSocket hub plus Server-Sent Events streams for notifications, logs and pub/sub topics — subscribe from any browser or client.
HMAC-signed webhook delivery with logs, and scheduled HTTP jobs managed entirely through the API — no code required.
AES-256-GCM encrypted key/value store for credentials, plus a Redis-style cache — strings, lists, hashes, atomic INCR/APPEND, TTL — persisted to SQLite.
An HTMX admin UI embedded in the binary at / — manage collections, records, files, webhooks, secrets and cron jobs from the browser. No build step.
blazers mcp serve exposes collections and records as Model Context Protocol tools — let an AI agent read and write your backend over stdio.
Swagger UI at /api/docs, a runtime-generated OpenAPI spec, JSON import/export snapshots and a backup endpoint.
One binary and one SQLite file like PocketBase; auth, storage, realtime, functions-adjacent jobs and an admin UI like Supabase — without Postgres, GoTrue or a fleet of services.
| Feature | PocketBase | Blazersrust | Supabase |
|---|---|---|---|
| Deployment | 1 Go binary + pb_data/ | 1 Rust binary + ~/.blazers/ | Postgres + GoTrue + PostgREST + Realtime + Storage |
| Database | SQLite | SQLite | Postgres |
| Auth | Email + OAuth2, request rules | Email + JWT (bcrypt), RBAC roles | GoTrue — email, OAuth2, MFA |
| File storage | Buckets | Buckets + thumbnails | S3-compatible storage |
| Realtime | SSE subscriptions | WebSocket + SSE + pub/sub | Realtime (Postgres changes) |
| Extensibility | JS hooks (pb_hooks) | HMAC webhooks + cron → HTTP | Edge Functions (Deno) |
| Scheduled jobs | — | Cron expressions, built-in | Scheduled Edge Functions |
| Admin UI | Bundled SPA | Embedded HTMX at / | Supabase Studio |
| API spec | — | OpenAPI + Swagger UI | OpenAPI (PostgREST) |
| AI / agent access | — | MCP server (stdio) | — |
| Ops extras | Backups, logs | Cache, secrets vault, notifications, logs | Managed add-ons (Auth, Realtime, …) |
Comparing deployment model, auth, storage, realtime and ops surface — not raw throughput. Blazers aims for PocketBase's simplicity with more of Supabase's feature set.
Prebuilt binaries on the releases page, or build from source with Cargo.
$ git clone https://github.com/hieudoanm/blazers$ cd blazers$ cargo build --release -p blazers$ ./target/release/blazers➜ Local: http://localhost:8080➜ Network: http://192.168.x.x:8080
$ curl -X POST localhost:8080/api/auth/register \ -H 'Content-Type: application/json' \ -d '{"email":"admin@example.com","password":"secret123"}'$ TOKEN=$(curl -s -X POST localhost:8080/api/auth/login \ -d '{…}' | jq -r .token)$ curl -X POST localhost:8080/api/collections \ -H "Authorization: Bearer $TOKEN" \ -d '{"name":"posts","schema":{"title":"string"}}'{"name":"posts", …}
Dashboard at / · API docs at /api/docs · Full docs at /docs · MCP server: blazers mcp serve. Data in ~/.blazers/ — set BLAZERS_DATA, PORT and JWT_SECRET to configure.
Self-host it, embed it, or point your AI agent at it over MCP.