[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71472":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":41,"readmeContent":42,"aiSummary":43,"trendingCount":15,"starSnapshotCount":15,"syncStatus":44,"lastSyncTime":45,"discoverSource":46},71472,"openfga","openfga\u002Fopenfga","A high performance and flexible authorization\u002Fpermission engine built for developers and inspired by Google Zanzibar","https:\u002F\u002Fopenfga.dev",null,"Go",5273,411,38,135,0,21,52,125,63,38.84,"Apache License 2.0",false,"main",true,[26,27,28,29,30,31,32,33,34,5,35,36,37,38,39,40],"abac","authorization","entitlements","fga","fine-grained-access-control","fine-grained-authorization","go","golang","hacktoberfest","pbac","permissions","rbac","rebac","security","zanzibar","2026-06-12 02:02:52","\u003Cdiv align=\"center\">\n\n![OpenFGA Logo](.\u002Fopenfga-logo.png)\n# OpenFGA\n\n[![Join our community](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fslack-cncf_%23openfga-40abb8.svg?logo=slack)](https:\u002F\u002Fopenfga.dev\u002Fcommunity)\n[![DeepWiki](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeepWiki-openfga%2Fopenfga-blue.svg?logo=data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK\u002FAIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06\u002Fuv1saEDv4O3n3dV60RfP947Mm9\u002FSQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH\u002F\u002FPB8mnKqScAhsD0kYP3j\u002FYt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY\u002F56ebRWeraTjMt\u002F00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB\u002FimwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h\u002FU4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5\u002FXFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb\u002FvA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26\u002FHfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr\u002FFGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r\u002FcKaoqr+27\u002FXcrS5UwSMbQAAAABJRU5ErkJggg==)](https:\u002F\u002Fdeepwiki.com\u002Fopenfga\u002Fopenfga)\n[![Go Reference](https:\u002F\u002Fpkg.go.dev\u002Fbadge\u002Fgithub.com\u002Fopenfga\u002Fopenfga.svg)](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fopenfga\u002Fopenfga)\n![GitHub release (latest SemVer)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fopenfga\u002Fopenfga?sort=semver&color=green)\n[![Docker Pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fopenfga\u002Fopenfga)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fopenfga\u002Fopenfga\u002Ftags)\n[![Codecov](https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fopenfga\u002Fopenfga)](https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Fopenfga\u002Fopenfga)\n[![Go Report](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fopenfga\u002Fopenfga)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fopenfga\u002Fopenfga)\n[![CII Best Practices](https:\u002F\u002Fbestpractices.coreinfrastructure.org\u002Fprojects\u002F6374\u002Fbadge)](https:\u002F\u002Fbestpractices.coreinfrastructure.org\u002Fprojects\u002F6374)\n[![FOSSA Status](https:\u002F\u002Fapp.fossa.com\u002Fapi\u002Fprojects\u002Fgit%2Bgithub.com%2Fopenfga%2Fopenfga.svg?type=shield)](https:\u002F\u002Fapp.fossa.com\u002Fprojects\u002Fgit%2Bgithub.com%2Fopenfga%2Fopenfga?ref=badge_shield)\n[![Artifact HUB](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fartifacthub.io\u002Fbadge\u002Frepository\u002Fopenfga)](https:\u002F\u002Fartifacthub.io\u002Fpackages\u002Fhelm\u002Fopenfga\u002Fopenfga)\n[![OpenSSF Scorecard](https:\u002F\u002Fapi.securityscorecards.dev\u002Fprojects\u002Fgithub.com\u002Fopenfga\u002Fopenfga\u002Fbadge)](https:\u002F\u002Fsecurityscorecards.dev\u002Fviewer\u002F?uri=github.com\u002Fopenfga\u002Fopenfga)\n[![SLSA 3](https:\u002F\u002Fslsa.dev\u002Fimages\u002Fgh-badge-level3.svg)](https:\u002F\u002Fslsa.dev)\n\n\u003C\u002Fdiv>\n\n---\n\n**OpenFGA** is a high-performance, flexible authorization\u002Fpermission engine inspired by [Google Zanzibar](https:\u002F\u002Fresearch.google\u002Fpubs\u002Fpub48190\u002F).\nIt helps developers easily model and enforce fine-grained access control in their applications.\n\n## Highlights\n\n- ⚡ High-performance, developer-friendly APIs (HTTP & gRPC)\n- 🔌 Flexible storage backends (In-Memory, PostgreSQL, MySQL, SQLite beta)\n- 🧰 SDKs for [Java](https:\u002F\u002Fcentral.sonatype.com\u002Fartifact\u002Fdev.openfga\u002Fopenfga-sdk), [Node.js](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@openfga\u002Fsdk), [Go](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fgo-sdk), [Python](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fpython-sdk), [.NET](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FOpenFga.Sdk)\n- 🌐  Several additional SDKs and tools [contributed by the community](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fcommunity#community-projects)\n- 🧪 [CLI](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fcli) for interacting with an OpenFGA server and [testing authorization models](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fmodeling\u002Ftesting)\n- 🌿 [Terraform Provider](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fterraform-provider-openfga) for configuring OpenFGA servers as code\n- 🎮 [Playground](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fgetting-started\u002Fsetup-openfga\u002Fplayground) for modeling and testing\n- 🛠 Can also be embedded as a [Go library](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fopenfga\u002Fopenfga\u002Fpkg\u002Fserver#example-NewServerWithOpts)\n- 🤝 Adopted by [Auth0](https:\u002F\u002Ffga.dev), [Grafana Labs](https:\u002F\u002Fgrafana.com\u002F), [Canonical](https:\u002F\u002Fcanonical.com\u002F), [Docker](https:\u002F\u002Fdocker.com),  [Agicap](https:\u002F\u002Fagicap.com), [Read.AI](https:\u002F\u002Fread.ai) and [others](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fcommunity\u002Fblob\u002Fmain\u002FADOPTERS.md)\n\n---\n\n## Table of Contents\n- [Quickstart](#quickstart)\n- [Installation](#installation)\n    - [Docker](#docker)\n    - [Docker Compose](#docker-compose)\n    - [Homebrew](#homebrew)\n    - [Precompiled Binaries](#precompiled-binaries)\n    - [Build from Source](#build-from-source)\n    - [Verify Installation](#verify-installation)\n- [Playground](#playground)\n- [Next Steps](#next-steps)\n- [Limitations](#limitations)\n- [Production Readiness](#production-readiness)\n- [Contributing & Community](#contributing--community)\n\n---\n\n## Quickstart\n\n> [!IMPORTANT]  \n> The following steps are meant for quick local setup and evaluation.  \n> When using the default **in-memory storage engine**, data is ephemeral and will be discarded once the service stops.\n>\n> For [details on configuring](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fgetting-started\u002Fsetup-openfga\u002Fconfigure-openfga) storage \n> backends, tuning performance, and deploying OpenFGA securely in production-ready environments, refer to the \n> documentation: [Running in Production](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fgetting-started\u002Frunning-in-production).\n\n\nRun OpenFGA with in-memory storage (⚠️ **not for production**):\n\n```shell\ndocker run -p 8080:8080 -p 3000:3000 openfga\u002Fopenfga run\n```\n\nOnce running, create a store:\n\n```shell\ncurl -X POST 'localhost:8080\u002Fstores' \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data-raw '{\"name\": \"openfga-demo\"}'\n```\n\n## Installation\n\n### Docker\n\nOpenFGA is available on [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fopenfga\u002Fopenfga), so you can quickly start it using the\nin-memory datastore by running the following commands:\n\n```shell\ndocker pull openfga\u002Fopenfga\ndocker run -p 8080:8080 -p 3000:3000 openfga\u002Fopenfga run\n```\n\n> [!NOTE]\n> When the HTTP server is enabled, it will attempt to establish an internal client connection to the gRPC server via unix domain socket.\n> When it is not possible to establish a UDS, the client connection automatically falls back to using a TCP socket.\n>\n> If running the Docker image using the `--read-only` option, the `--tmpfs` option must also be set in order to enabled use of the unix domain socket.\n> For example `--tmpfs \u002Ftmp`\n\n### Docker Compose\n\n[`docker-compose.yaml`](.\u002Fdocker-compose.yaml) provides an example of how to launch OpenFGA with Postgres using `docker compose`.\n\n```shell\ncurl -LO https:\u002F\u002Fopenfga.dev\u002Fdocker-compose.yaml\ndocker compose up\n```\n\n### Homebrew\n\nIf you are a [Homebrew](https:\u002F\u002Fbrew.sh\u002F) user, you can install [OpenFGA](https:\u002F\u002Fformulae.brew.sh\u002Fformula\u002Fopenfga) with the following command:\n\n```shell\nbrew install openfga\n```\n\n### Precompiled Binaries\n\nDownload your platform's [latest release](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fopenfga\u002Freleases\u002Flatest) and extract it.\nThen run the binary with the command:\n\n```shell\n.\u002Fopenfga run\n```\n\n### Build from Source\n\n> [!NOTE]  \n> Make sure you have the latest version of Go installed. See the [Go downloads](https:\u002F\u002Fgo.dev\u002Fdl\u002F) page.\n\n#### `go install`\n\n```shell\nexport PATH=$PATH:$(go env GOBIN) # make sure $GOBIN is on your $PATH\ngo install github.com\u002Fopenfga\u002Fopenfga\u002Fcmd\u002Fopenfga\nopenfga run\n```\n\n#### `go build`\n\n```shell\ngit clone https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fopenfga.git && cd openfga\ngo build -o .\u002Fopenfga .\u002Fcmd\u002Fopenfga\n.\u002Fopenfga run\n```\n\n### Verify Installation\n\nNow that you have [installed](#installation) OpenFGA, you can test your installation by [creating an OpenFGA Store](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fgetting-started\u002Fcreate-store).\n\n```shell\ncurl -X POST 'localhost:8080\u002Fstores' \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data-raw '{\"name\": \"openfga-demo\"}'\n```\n\nIf everything is running correctly, you should get a response with information about the newly created store, for example:\n\n```json\n{\n  \"id\": \"01G3EMTKQRKJ93PFVDA1SJHWD2\",\n  \"name\": \"openfga-demo\",\n  \"created_at\": \"2022-05-19T17:11:12.888680Z\",\n  \"updated_at\": \"2022-05-19T17:11:12.888680Z\"\n}\n```\n\n## Playground\n\nThe Playground lets you model, visualize, and test authorization setups.\nBy default, it’s available at: [http:\u002F\u002Flocalhost:3000\u002Fplayground](http:\u002F\u002Flocalhost:3000\u002Fplayground)\n\n> [!NOTE]  \n> The Playground is intended for **local development only**.  \n> It can currently only be configured to connect to an OpenFGA server running on `localhost`.\n\nDisable it with:\n\n```shell\n.\u002Fopenfga run --playground-enabled=false\n```\n\nChange port:\n\n```shell\n.\u002Fopenfga run --playground-enabled --playground-port 3001\n```\n\n> [!TIP]\n> The `OPENFGA_HTTP_ADDR` environment variable can be used to configure the address at which the Playground expects the OpenFGA server to be.\n>\n> For example:\n>\n> ```shell\n> docker run -e OPENFGA_PLAYGROUND_ENABLED=true \\\n> -e OPENFGA_HTTP_ADDR=0.0.0.0:4000 \\\n> -p 4000:4000 -p 3000:3000 openfga\u002Fopenfga run\n> ```\n>\n> This starts OpenFGA on port 4000 and configures the Playground accordingly.\n\n## Next Steps\n\nTake a look at examples of how to:\n\n- [Write an Authorization Model](https:\u002F\u002Fopenfga.dev\u002Fapi\u002Fservice#\u002FAuthorization%20Models\u002FWriteAuthorizationModel)\n- [Write Relationship Tuples](https:\u002F\u002Fopenfga.dev\u002Fapi\u002Fservice#\u002FRelationship%20Tuples\u002FWrite)\n- [Perform Authorization Checks](https:\u002F\u002Fopenfga.dev\u002Fapi\u002Fservice#\u002FRelationship%20Queries\u002FCheck)\n- [Add Authentication to your OpenFGA server](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fgetting-started\u002Fsetup-openfga\u002Fdocker#configuring-authentication)\n\n📚 Explore the [Documentation](https:\u002F\u002Fopenfga.dev\u002F) and [API Reference](https:\u002F\u002Fopenfga.dev\u002Fapi\u002Fservice).\n\n## Limitations\n\n### MySQL Storage engine\n\nThe MySQL storage engine has stricter length limits on tuple properties than other backends. See [docs](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fgetting-started\u002Fsetup-openfga\u002Fdocker#configuring-data-storage).\n\n💡 OpenFGA’s MySQL adapter was contributed by @twintag — thank you!\n\n## Production Readiness\n\n- ✅ Used in production by [Auth0 FGA](https:\u002F\u002Fauth0.com\u002Ffine-grained-authorization) since December 2021\n- ⚠️ Memory storage adapter is **for development only**\n- 🗄 Supported storage: PostgreSQL 14+, MySQL 8, SQLite (beta)\n- 📘 See [Running in Production](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fbest-practices\u002Frunning-in-production)\n\nThe OpenFGA team treats **production-impacting issues with highest priority**.\n\nSee organizations using OpenFGA in production: [ADOPTERS.md](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fcommunity\u002Fblob\u002Fmain\u002FADOPTERS.md).\nIf your organization is using OpenFGA, please consider adding it to the list.\n\n## Contributing & Community\n\nWe welcome contributions and community participation.\n\n- 🤝 See [CONTRIBUTING](https:\u002F\u002Fgithub.com\u002Fopenfga\u002F.github\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)\n- 🗓 [Monthly Community Meetings](https:\u002F\u002Fgithub.com\u002Fopenfga\u002Fcommunity\u002Fblob\u002Fmain\u002Fcommunity-meetings.md)\n- 💬 Join us on [Slack](https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fcommunity)\n","OpenFGA 是一个高性能且灵活的权限\u002F授权引擎，专为开发者设计并受到 Google Zanzibar 的启发。它支持多种访问控制模型，包括基于属性（ABAC）、基于角色（RBAC）和细粒度访问控制（FGA），能够帮助开发者轻松实现复杂的安全策略。采用 Go 语言编写，确保了其运行效率与稳定性。该项目非常适合需要精细化权限管理的应用场景，如企业级应用、SaaS 服务等，能够有效提升系统的安全性和灵活性。",2,"2026-06-11 03:37:55","high_star"]