Getting Started
Verified against the
ghcr.io/permify/permifycontainer at commitaa3a7c6. Commands assume Docker and a terminal.
Prerequisites
- Docker (to run the container) or a Go 1.25+ toolchain to build from source.
- A free TCP port for REST (3476) and one for gRPC (3478).
- PostgreSQL is optional for a first run; the default starts with an in-memory store (
README.md:100-114).
Install
The fastest path is the container. It starts with an in-memory store and no external dependencies.
docker run -p 3476:3476 -p 3478:3478 ghcr.io/permify/permify serveTo build from source instead:
go build ./cmd/permify
./permify serveA first working setup
This runs Permify and reaches its API. The default configuration serves REST on 3476 and gRPC on 3478, storing authorization data in memory (README.md:104-114).
Start the server with the install command above. Then:
- Confirm the API answers (see "Verify it works" below).
- Write a schema, insert relationships (and attributes for ABAC), then ask
Check. This is the minimal authorization loop.
The server exposes both REST (3476) and gRPC (3478). The Playground under playground/ is the quickest way to author a schema and try checks before wiring an SDK from sdk/.
Verify it works
Permify exposes a health endpoint on the REST port. A running server answers:
curl localhost:3476/healthzThis is the connection test the project documents (README.md:116-121).
Where to go next
- Production data: switch the in-memory store for PostgreSQL and run
permify migrate(registered incmd/permify/permify.go). - Distributed deployment: the binary registers a consistent-hash gRPC balancer and the Kubernetes resolver at startup (
cmd/permify/permify.go:16-17). - Configuration, schema language, and API reference live in the official documentation linked from the README (
README.md:113-114).