SpiceDB is the most scalable and consistent Google Zanzibar-inspired database for storing and computing permissions data—use it to build global-scale fine grained authorization services.
Expressive gRPC and HTTP/JSON APIs for powering authorization logic in your client applications.
Distributed, parallel graph engine faithful to the architecture described in Google’s Zanzibar paper.
A flexible consistency model configurable per-request that includes resistance to the New Enemy Problem.
Intuitive authorization configuration language — SpiceDB Schema — with CI/CD integrations for validation & testing.
Support for in-memory, Spanner, CockroachDB, PostgreSQL, and MySQL relationship storage.
Deep observability with Prometheus metrics, pprof profiles, structured logging, and OpenTelemetry tracing.
GRPCDialContext as a handle on the server used deprecated gRPC methods. We modernized it and renamed it to NewClient (https://github.com/authzed/spicedb/pull/3147)--enable-experimental-watchable-schema-cache) no longer enters permanent fallback on transient watch errors. A new supervisor restarts the watch cycle with bounded exponential backoff and only treats caller-driven cancellation or unsupported-watch as terminal (https://github.com/authzed/spicedb/pull/3134)WatchCheckpoints now eventually observe every revision returned by WriteRelationships as a checkpoint. MemDB regressed this in https://github.com/authzed/spicedb/pull/2578 for no-op writes and MySQL never emitted checkpoints at all prior to now. Both now emit a checkpoint at the new revision. (https://github.com/authzed/spicedb/pull/3114)HeadRevision no longer allocates a new transaction ID on every call (https://github.com/authzed/spicedb/pull/3127)LookupSubjects no longer returns a subject excluded from a wildcard (e.g. viewer:* - banned) when the exclusion feeds an intersection (experimental --experimental-query-plan ls) (https://github.com/authzed/spicedb/pull/3136)OTEL_EXPORTER_OTLP_ENDPOINT. (https://github.com/authzed/spicedb/pull/3108)Foo and foo) incorrectly collided in unique indexes and lookups. ⚠️ The migration rebuilds the relation_tuple table in place via ALTER TABLE, which can hold a metadata/table lock for a long time on large datasets — run the upgrade in a low-traffic window, or apply it with an online schema-change tool (e.g. gh-ost). (https://github.com/authzed/spicedb/pull/3161)server.NewConfigWithOptionsAndDefaults now populates Config and its embedded structs with the same defaults as the CLI flags, fixing zero-value behavior when embedding SpiceDB as a library. (https://github.com/authzed/spicedb/pull/3156)caches object by @miparnisari in https://github.com/authzed/spicedb/pull/3167Full Changelog: https://github.com/authzed/spicedb/compare/v1.53.0...v1.54.0
This release is available at authzed/spicedb:v1.54.0, quay.io/authzed/spicedb:v1.54.0, ghcr.io/authzed/spicedb:v1.54.0
caches object by @miparnisari in https://github.com/authzed/spicedb/pull/3167Full Changelog: https://github.com/authzed/spicedb/compare/v1.53.0...v1.54.0
This release is available at authzed/spicedb:v1.54.0, quay.io/authzed/spicedb:v1.54.0, ghcr.io/authzed/spicedb:v1.54.0
kubectl create spicedbclusterDesign tailored authorization systems by defining relationships, permissions based on those relationships, and bits of policy called Caveats.