Menu

Tree [a32213] main /
 History

HTTPS access


File Date Author Commit
 .github 2023-12-21 Jimmy Zelinskie Jimmy Zelinskie [ae4fcc] .github: use public-read-only docker account
 cmd 2023-12-13 Joseph Schorr Joseph Schorr [9c744c] Add an integration test for schema watch
 e2e 2024-02-02 Joseph Schorr Joseph Schorr [801d30] Tidy e2e go.mod
 internal 2024-02-08 Joseph Schorr Joseph Schorr [d3a537] Reduce memory usage of WriteSchema
 magefiles 2023-12-20 Jimmy Zelinskie Jimmy Zelinskie [3fe097] pkg/proto: upgrade vtprotobuf to support WKTs
 pkg 2024-02-07 Joseph Schorr Joseph Schorr [091e45] Clarify that the datastore-revision-quantizatio...
 proto 2023-11-13 Víctor Roldán Betancort Víctor Roldán Betancort [44a345] change bloom filter in proto from string to bytes
 tools 2024-01-02 Joseph Schorr Joseph Schorr [d1e8f2] format analyzers go.work.sum
 .gitignore 2023-05-14 Evan Cordell Evan Cordell [43678a] add magefiles for running project commands
 .golangci.yaml 2023-05-14 Evan Cordell Evan Cordell [43678a] add magefiles for running project commands
 .goreleaser.yml 2023-07-26 Jimmy Zelinskie Jimmy Zelinskie [d73a8a] goreleaser: cut individual brew versions
 .markdownlint.yaml 2023-03-07 Jimmy Zelinskie Jimmy Zelinskie [2af927] README: refresh with more dev instructions
 .yamllint 2021-09-22 Jimmy Zelinskie Jimmy Zelinskie [3defad] .github: add yamllint
 CODE-OF-CONDUCT.md 2021-10-05 Jimmy Zelinskie Jimmy Zelinskie [c682e6] lint: lint all markdown files
 CODEOWNERS 2022-04-11 Jimmy Zelinskie Jimmy Zelinskie [81f9aa] CODEOWNERS: init
 CONTRIBUTING.md 2023-08-17 Jimmy Zelinskie Jimmy Zelinskie [f64e11] *: refresh README/CONTRIBUTING
 DCO 2021-08-17 Jimmy Zelinskie Jimmy Zelinskie [0af4b5] spicedb: add readme, license, etc..
 Dockerfile 2024-02-02 dependabot[bot] dependabot[bot] [9f6931] Bump golang from 1.21.5-alpine3.18 to 1.21.6-al...
 Dockerfile.release 2024-02-02 dependabot[bot] dependabot[bot] [9f6931] Bump golang from 1.21.5-alpine3.18 to 1.21.6-al...
 LICENSE 2021-08-17 Jimmy Zelinskie Jimmy Zelinskie [0af4b5] spicedb: add readme, license, etc..
 NOTICE 2022-06-23 Jimmy Zelinskie Jimmy Zelinskie [030935] *: add NOTICE
 README.md 2023-08-30 Jimmy Zelinskie Jimmy Zelinskie [81b05a] README: swap to our DNS for rpm/debian packages
 TELEMETRY.md 2022-04-06 Jake Moshenko Jake Moshenko [a62cd4] split telemetry registry, read datastore stats,...
 buf.gen.yaml 2023-05-14 Evan Cordell Evan Cordell [43678a] add magefiles for running project commands
 buf.work.yaml 2021-09-24 Jimmy Zelinskie Jimmy Zelinskie [af8830] buf: remove non-existent authzed-api path
 go.mod 2024-02-02 dependabot[bot] dependabot[bot] [ece7c9] Bump google.golang.org/api from 0.152.0 to 0.161.0
 go.sum 2024-02-02 dependabot[bot] dependabot[bot] [ece7c9] Bump google.golang.org/api from 0.152.0 to 0.161.0
 mage.go 2023-05-14 Evan Cordell Evan Cordell [43678a] add magefiles for running project commands
 nightly.goreleaser.yml 2023-03-22 Jason Hall Jason Hall [69a9f5] use cgr.dev/chainguard/busybox as base instead ...
 tools.go 2023-07-23 Evan Cordell Evan Cordell [8bd3e4] move as many tools as possible into the mage mo...

Read Me

SpiceDB

CII Best Practices
Container Image
Docs
Discord Server
Twitter

SpiceDB is an open source, [Google Zanzibar]-inspired database for creating and managing security-critical application permissions.

Developers create a [schema] and use [client libraries] to apply the schema to the database, insert [relationships] into the database, and query the database to efficiently check permissions in their applications.

Features that distinguish SpiceDB from other systems include:

  • Expressive [gRPC] and [HTTP/JSON] APIs for checking permissions, listing access, and powering devtools
  • A 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]
  • An expressive [schema language] with a [playground] and CI/CD integrations for [validation] and [integration testing]
  • A pluggable [storage system] supporting [in-memory], [Spanner], [CockroachDB], [PostgreSQL] and [MySQL]
  • Deep observability with [Prometheus] metrics, [pprof] profiles, structured logging, and [OpenTelemetry] tracing

Want to learn more about the inspiration for SpiceDB? We've annotated [Google's Zanzibar Paper] with our own commentary.

Joining the Community

SpiceDB is a community project where everyone is invited to participate and [feel welcomed].
While the project has a technical goal, participation is not restricted to those with code contributions.

Learn

  • Ask questions via [GitHub Discussions] or our [Community Discord]
  • Read [blog posts] from the Authzed team describing the project and major announcements
  • Watch our [YouTube videos] about SpiceDB, modeling schemas, leveraging CNCF projects, and more
  • Explore the [SpiceDB Awesome List] that enumerates official and third-party projects built by the community
  • Reference [community examples] for demo environments, integration testing, CI pipelines, and writing schemas

Contribute

[CONTRIBUTING.md] documents communication, contribution flow, legal requirements, and common tasks when contributing to the project.

You can find issues by priority: [Urgent], [High], [Medium], [Low], [Maybe].
There are also [good first issues].

Our [documentation website] is also open source if you'd like to clarify anything you find confusing.

Getting Started

Installing the binary

Binary releases are available for Linux, macOS, and Windows on AMD64 and ARM64 architectures.

[Homebrew] users for both macOS and Linux can install the latest binary releases of SpiceDB and [zed] using the official tap:

brew install authzed/tap/spicedb authzed/tap/zed

[Debian-based Linux] users can install SpiceDB packages by adding a new APT source:

sudo apt update && sudo apt install -y curl ca-certificates gpg
curl https://pkg.authzed.com/apt/gpg.key | sudo apt-key add -
sudo echo "deb https://pkg.authzed.com/apt/ * *" > /etc/apt/sources.list.d/fury.list
sudo apt update && sudo apt install -y spicedb zed

[RPM-based Linux] users can install SpiceDB packages by adding a new YUM repository:

sudo cat << EOF >> /etc/yum.repos.d/Authzed-Fury.repo
[authzed-fury]
name=AuthZed Fury Repository
baseurl=https://pkg.authzed.com/yum/
enabled=1
gpgcheck=0
EOF
sudo dnf install -y spicedb zed

Running a container

Container images are available for AMD64 and ARM64 architectures on the following registries:

[Docker] users can run the latest SpiceDB container with the following:

docker run --rm -p 50051:50051 authzed/spicedb serve --grpc-preshared-key "somerandomkeyhere"

SpiceDB containers use [Chainguard Images] to ship the bare minimum userspace which is a huge boon to security, but can complicate debugging.
If you want to execute a user session into a running SpiceDB container and install packages, you can use one of our debug images.

Appending -debug to any tag will provide you an image that has a userspace with debug tooling:

docker run --rm -ti --entrypoint sh authzed/spicedb:latest-debug

Containers are also available for each git commit to the main branch under ${REGISTRY}/authzed/spicedb-git:${COMMIT}.

Deploying to Kubernetes

Production Kubernetes users should be relying on a stable release of the [SpiceDB Operator].
The Operator enforces not only best practices, but orchestrates SpiceDB updates without downtime.

If you're only experimenting, feel free to try out one of our community-maintained [examples] for [testing SpiceDB on Kubernetes]:

kubectl apply -f https://raw.githubusercontent.com/authzed/examples/main/kubernetes/example.yaml

Developing your own schema

You can try both SpiceDB and zed entirely in your browser on the [playground] thanks to the power of WebAssembly.

If you don't want to start with the examples loadable from the Playground, you can follow a guide for [developing a schema] or review the the schema language [design documentation].

To get a quick idea of schema development, you can watch the creators of SpiceDB writing a schema for GitHub:

Modeling GitHub YouTube Video Thumbnail

Trying out the API

For debugging or getting started, we recommend [installing zed], the official command-line client.
The [Playground] also has a tab for experimenting with zed all from within your browser.

When it's time to write code, we recommend using one of the [existing client libraries] whether it's official or community-maintained.

Because every millisecond counts, we recommend using libraries that leverage the gRPC API for production workloads.

To get an understanding of integrating an application with SpiceDB, you can follow the [Protecting Your First App] guide or review API documentation on the [Buf Registry] or [Postman].

Acknowledgements

SpiceDB is a community project fueled by contributions from both organizations and individuals.
We appreciate all contributions, large and small, and would like to thank all those involved.

In addition, we'd like to highlight a few notable contributions:

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.