1<!doctype html> 2<html lang="en" dir="ltr" class="plugin-pages plugin-id-default" data-has-hydrated="false"> 3<head> 4<meta charset="UTF-8"> 5<meta name="generator" content="Docusaurus v3.10.2"> 6<title data-rh="true">Fine-Grained Authorization | OpenFGA</title><meta data-rh="true" http-equiv="Content-Security-Policy" content="default-src 'none'; base-uri 'self'; block-all-mixed-content; worker-src 'self'; child-src www.youtube-nocookie.com; connect-src 'self' https://raw.githubusercontent.com https://s3.amazonaws.com https://cdn.cookielaw.org https://privacyportal.onetrust.com https://heapanalytics.com https://js.hs-scripts.com https://api.github.com https://js.hscollectedforms.net https://js.hs-analytics.net https://js.hs-banner.com https://forms.hscollectedforms.net https://proxy.kapa.ai https://kapa-widget-proxy-la7dkmplpq-uc.a.run.app https://metrics.kapa.ai https://www.google.com/recaptcha/ https://hcaptcha.com https://*.hcaptcha.com ; font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com; form-action 'none'; frame-src www.youtube-nocookie.com https://www.google.com https://hcaptcha.com https://*.hcaptcha.com; img-src 'self' data: https://openfga.dev https://pbs.twimg.com https://docs.github.com https://heapanalytics.com https://forms.hsforms.com https://track.hubspot.com ; media-src 'self'; object-src 'none'; script-src 'self' 'unsafe-inline' https://cdn.cookielaw.org https://geolocation.onetrust.com https://cdn.heapanalytics.com https://js.hs-scripts.com https://api.github.com https://js.hscollectedforms.net https://js.hs-analytics.net https://js.hs-banner.com https://widget.kapa.ai https://www.google.com https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://hcaptcha.com https://*.hcaptcha.com; style-src 'unsafe-inline' 'self' https://fonts.googleapis.com https://hcaptcha.com https://*.hcaptcha.com;"><meta data-rh="true" name="ahrefs-site-verification" content="9e1b5f58edf2d6711cf4a74b7756b9e13a3b59b3d6d89cc3bc38be8ad1834567"><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" property="og:url" content="https://openfga.dev/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:image" content="https://openfga.dev/img/og-rich-embed.png"><meta data-rh="true" property="og:type" content="website"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" name="twitter:site" content="@openfga"><meta data-rh="true" name="twitter:image" content="https://openfga.dev/img/og-rich-embed.png"><meta data-rh="true" property="og:title" content="Fine-Grained Authorization | OpenFGA"><meta data-rh="true" name="description" content="OpenFGA is a CNCF Incubating open-source fine-grained authorization engine inspired by Google Zanzibar. Used by Grafana, Docker, and Canonical."><meta data-rh="true" property="og:description" content="OpenFGA is a CNCF Incubating open-source fine-grained authorization engine inspired by Google Zanzibar. Used by Grafana, Docker, and Canonical."><link data-rh="true" rel="alternate" type="text/markdown" href="/index.md"><link data-rh="true" rel="describedby" href="/llms.txt"><link data-rh="true" rel="icon" href="/img/openfga-icon.svg"><link data-rh="true" rel="canonical" href="https://openfga.dev/"><link data-rh="true" rel="alternate" href="https://openfga.dev/" hreflang="en"><link data-rh="true" rel="alternate" href="https://openfga.dev/" hreflang="x-default">
6<script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://openfga.dev/#organization","name":"OpenFGA","url":"https://openfga.dev/","logo":"https://openfga.dev/img/openfga_logo.svg","sameAs":["https://github.com/openfga","https://x.com/openfga","https://mastodon.social/@openfga","https://www.linkedin.com/company/openfga/","https://www.youtube.com/@OpenFGA","https://www.cncf.io/projects/openfga/"],"parentOrganization":{"@id":"https://www.cncf.io/#organization"}},{"@type":"Organization","@id":"https://www.cncf.io/#organization","name":"Cloud Native Computing Foundation","alternateName":"CNCF","url":"https://www.cncf.io/","parentOrganization":{"@id":"https://www.linuxfoundation.org/#organization"}},{"@type":"Organization","@id":"https://www.linuxfoundation.org/#organization","name":"The Linux Foundation","url":"https://www.linuxfoundation.org/"},{"@type":"WebSite","@id":"https://openfga.dev/#website","name":"OpenFGA","url":"https://openfga.dev/","inLanguage":"en-US","publisher":{"@id":"https://openfga.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://openfga.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}</script>
6<script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,o="/"===s.substr(-1)?s:s+"/";e.textContent=o}document.addEventListener("DOMContentLoaded",(function(){void 0===window.docusaurus&&insertBanner()}))</script>
6<script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication","@id":"https://openfga.dev/#software","name":"OpenFGA","url":"https://openfga.dev","applicationCategory":"SecurityApplication","applicationSubCategory":"Authorization Service","operatingSystem":"Linux, macOS, Windows","owner":{"@id":"https://www.cncf.io/#organization"},"releaseNotes":"https://github.com/openfga/openfga/blob/main/CHANGELOG.md","isAccessibleForFree":true,"softwareHelp":{"@type":"WebPage","name":"OpenFGA Discussions","discussionUrl":"https://github.com/orgs/openfga/discussions"},"keywords":"open source, security, permissions, authorization, rbac, entitlements, abac, fga, pbac, fine grained access control, zanzibar, fine grained authorization, rebac, openfga","description":"OpenFGA is an open-source, CNCF-incubating fine-grained authorization engine inspired by Google Zanzibar.","license":"https://www.apache.org/licenses/LICENSE-2.0","subjectOf":{"@id":"https://openfga.dev/#source-code"}},{"@type":"SoftwareSourceCode","@id":"https://openfga.dev/#source-code","name":"OpenFGA source code","codeRepository":"https://github.com/openfga/openfga","programmingLanguage":["Go","JavaScript","Java",".NET","Python"],"license":"https://www.apache.org/licenses/LICENSE-2.0","targetProduct":{"@id":"https://openfga.dev/#software"}}]}</script>
6<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="OpenFGA RSS Feed"> 7<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="OpenFGA Atom Feed"> 8 9 10 11 12 13 14 15 16 17<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600&display=swap"> 18<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap">
19<script src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="c4285f4c-6c2b-42ed-91c6-e772392372ef" data-project-name="OpenFGA" data-project-color="#79ED83" data-project-logo="https://openfga.dev/img/openfga_logo.svg" data-button-hide="true" data-modal-override-open-selector=".ask-ai-button" data-modal-open-on-command-k="true" data-mcp-enabled="true" data-mcp-server-url="https://openfga.mcp.kapa.ai" data-modal-disclaimer="This OpenFGA chatbot is powered by kapa.ai and uses AI to answer questions about OpenFGA based on OpenFGA's documentation, OpenFGA's GitHub, and other resources. Please do not input any sensitive or private information. Responses are for informational purposes and may be inaccurate. Please verify for accuracy. By using this chatbot, you agree to the Linux Foundation's Privacy Policy and Terms." async></script>
vendor: 1 bytes, line 19
19
20<script src="https://js.hs-scripts.com/24392211.js" charset="UTF-8" id="hs-script-loader" async defer="defer"></script>
20<link rel="stylesheet" href="/assets/css/styles.5cc35aef.css">
21<script src="/assets/js/runtime~main.94fcc163.js" defer="defer"></script>
vendor: 1 bytes, line 21
21
22<script src="/assets/js/main.aadb25b3.js" defer="defer"></script>
22 23</head> 24<body> 25<svg style="display: none;"><defs> 26<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol> 27</defs></svg>
28<script>document.documentElement.setAttribute("data-theme","dark"),document.documentElement.setAttribute("data-theme-choice","dark"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script>
28<div id="__docusaurus"><div class="CustomizedRoot"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" target="_self" href="/"><div class="navbar__logo"><img src="/img/openfga_logo.svg" alt="OpenFGA" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/openfga_logo.svg" alt="OpenFGA" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/">Home</a><a href="https://openfga.dev/docs/fga" target="_self" rel="noopener noreferrer" class="navbar__item navbar__link" aria-label="Docs">Docs<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://openfga.dev/docs/api/service" target="_self" rel="noopener noreferrer" class="navbar__item navbar__link" aria-label="API">API<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a class="navbar__item navbar__link" href="/project">Project</a><a class="navbar__item navbar__link" href="/blog">Blog</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/openfga/openfga" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-social header-github-link" aria-label="OpenFGA on GitHub">GitHub</a><a href="https://twitter.com/OpenFGA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-social header-twitter-link" aria-label="OpenFGA on Twitter">Twitter</a><a href="https://openfga.dev/community" target="_self" rel="noopener noreferrer" class="navbar__item navbar__link header-social header-slack-link" aria-label="OpenFGA on Slack">CNCF Slack</a><div class="navbar__item ask-ai-nav-item"><button class="ask-ai-button ask-ai-nav-button" aria-label="Ask AI">Ask AI</button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search searchBarContainer_NW3z" dir="ltr"><input placeholder="Search" aria-label="Search" class="navbar__search-input searchInput_YFbd" value=""><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><header><div class="container__no-padding"><div class="grid_OmBo"><div></div><div></div></div><div class="social-media-banner_EIek"><a href="https://github.com/openfga/openfga" target="_blank" rel="noopener noreferrer" class="social-media-banner-item_bn21 social-media-banner-github_kjwB" aria-label="OpenFGA on GitHub">GitHub</a><a href="https://twitter.com/OpenFGA" target="_blank" rel="noopener noreferrer" class="social-media-banner-item_bn21 social-media-banner-twitter_Se7d" aria-label="OpenFGA on Twitter">Twitter</a><a href="https://openfga.dev/community" target="_blank" rel="noopener noreferrer" class="social-media-banner-item_bn21 social-media-banner-cncf-slack_h6wH" aria-label="OpenFGA on Slack">CNCF Slack</a></div><div class="container_Xn_q"><div class="content_mBeF"><h1 class="heading_OPPZ"><span style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0">OpenFGA â</span><svg width="413" height="89" viewBox="0 0 472 101" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 30.8163V49.021C0 68.8706 12.173 79.8373 31.1453 79.8373C50.1176 79.8373 62.181 68.8706 62.181 49.021V30.8163C62.181 10.9667 50.1176 0 31.1453 0C12.173 0 0 10.9667 0 30.8163ZM12.7213 30.37
2877C12.7213 18.753 19.5207 11.2957 31.1453 11.2957C42.6603 11.2957 49.4596 18.753 49.4596 30.3777V49.4597C49.4596 61.0843 42.6603 68.5416 31.1453 68.5416C19.5207 68.5416 12.7213 61.0843 12.7213 49.4597V30.3777Z" fill="white"></path><path d="M72.9968 100.235H84.9505V70.6253H86.0472C89.1178 75.341 94.6012 79.8373 104.581 79.8373C117.85 79.8373 129.365 68.8706 129.365 51.2143C129.365 33.6677 117.85 22.701 104.581 22.701C94.6012 22.701 89.1178 27.1973 85.8278 32.1323H84.7312V24.2363H72.9968V100.235ZM101.071 69.419C91.7498 69.419 84.8408 62.6196 84.8408 51.2143C84.8408 39.809 91.7498 33.0097 101.071 33.0097C110.503 33.0097 117.302 39.809 117.302 51.2143C117.302 62.7293 110.503 69.419 101.071 69.419Z" fill="white"></path><path d="M136.211 50.995C136.211 67.9933 147.397 79.8373 163.847 79.8373C178.762 79.8373 185.122 71.2833 188.303 65.5806L178.323 60.207C176.13 64.9226 172.291 69.419 164.066 69.419C155.403 69.419 149.042 63.3873 148.603 55.0526H189.619V50.1176C189.619 33.558 179.091 22.5913 163.408 22.5913C147.507 22.5913 136.211 34.1063 136.211 50.995ZM148.713 45.731C149.7 38.164 154.964 33.0097 163.299 33.0097C171.304 33.0097 176.678 37.9446 177.336 45.731H148.713Z" fill="white"></path><path d="M199.37 24.2363V78.302H211.324V50.5563C211.324 39.3703 217.136 33.1193 226.129 33.1193C234.135 33.1193 238.85 37.3963 238.85 46.4986V78.302H250.914V45.8406C250.914 32.0227 242.14 23.2493 229.748 23.2493C219.439 23.2493 214.614 27.8553 212.201 32.571H211.105V24.2363H199.37Z" fill="white"></path><path d="M263.952 1.53533V78.302H276.673V45.5117H310.122V34.1063H276.673V13.0503H312.315V1.53533H263.952Z" fill="white"></path><path d="M318.933 48.8016C318.933 68.6513 331.106 79.8373 350.297 79.8373C369.05 79.8373 379.907 68.9803 379.907 51.1046V40.2477H347.336V51.1046H367.405V52.5303C367.405 62.2906 361.703 68.5416 350.297 68.5416C338.782 68.5416 331.654 61.0843 331.654 48.9113V30.926C331.654 18.753 338.782 11.2957 350.297 11.2957C361.483 11.2957 366.747 17.8757 366.747 26.978V28.4037H379.469V27.1973C379.469 10.857 369.27 0 350.297 0C331.215 0 318.933 11.186 318.933 31.1453V48.8016Z" fill="white"></path><path d="M405.595 1.53533L383.004 78.302H396.054L401.208 60.4263H429.722L434.876 78.302H447.817L425.225 1.53533H405.595ZM404.279 48.9113L414.917 12.173H416.013L426.541 48.9113H404.279Z" fill="white"></path><path d="M441.889 1.26831V3.48623H446.515V16.0544H448.944V3.48623H453.57V1.26831H441.889Z" fill="white"></path><path d="M455.137 1.26831V16.0544H457.503V3.80307H457.714L461.347 16.0544H464.79L468.402 3.80307H468.613V16.0544H471V1.26831H466.797L463.164 13.583H462.952L459.34 1.26831H455.137Z" fill="white"></path></svg><span class="headingSubtitle_qc__">Fine-Grained Authorization</span></h1><p class="headingDescription_uSbN">OpenFGA is an open-source authorization solution that allows developers to build granular access control using an easy-to-read modeling language and friendly APIs.</p><div class="buttons_qNcx"><a href="#quick-start" class="buttonLink_MrmQ buttonLinkPrimary__51_"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.37046 10.4506H0.875325C0.126602 10.4506 -0.275417 9.61053 0.2155 9.07089L8.20846 0.28415C8.76556 -0.328002 9.81555 0.124049 9.70393 0.92644L8.37046 10.4506Z" fill="#272B33"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M7.62834 5.54883H15.1245C15.8732 5.54883 16.2752 6.38889 15.7843 6.92853L7.79033 15.7162C7.23323 16.3284 6.18324 15.8763 6.29486 15.0739L7.62834 5.54883Z" fill="#272B33"></path></svg>Quick start</a><a href="https://github.com/openfga" target="_blank" rel="noopener noreferrer" class="buttonLink_MrmQ"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8 0C3.58 0 0 3.67055 0 8.20235C0 11.8319 2.29 14.8975 5.47 15.9843C5.87 16.0561 6.02 15.81 6.02 15.5947C6.02 15.3999 6.01 14.754 6.01 14.067C4 14.4464 3.48 13.5646 3.32 13.1033C3.23 12.8674 2.84 12.1395 2.5 11.9447C2.22 11.7909 1.82 11.4115 2.49 11.4013C3.12 11.391 3.57 11.9959 3.72 12.242C4.44 13.4826 5.59 13.134 6.05 12.9187C6.12 12.3855 6.33 12.0267 6.56 11.8216C4.78 11.6166 2.92 10.9091 2.92 7.77173C2.92 6.87972 3.23 6.14151 3.74 5.56735C3.66 5.36229 3.38 4.52155 3.82 3.39372C3.82 3.39372 4.49 3.17841 6.02 4.23446C6.66 4.04991 7.34 3.95763 8.02 3.95763C8.7 3.95763 9.38 4.04991 10.02 4.23446C11.55 3.16816 12.22 3.39372 12.22 3.39372C12.66 4.52155 12.38 5.36229 12.3 5.56735C12.81 6.14151 13.12 6.86947 13.12 7.77173C13.12 10.9194 11.25 11.6166 9.47 11.8216C9.76 12.078 10.01 12.5701 10.01 13.3391C10.01 14.4361 10 15.3179 10 15.5947C10 15.81 10.
2815 16.0664 10.55 15.9843C12.1381 15.4346 13.5182 14.3881 14.4958 12.9921C15.4735 11.5961 15.9996 9.92095 16 8.20235C16 3.67055 12.42 0 8 0Z" fill="#D3D8DF"></path></svg>Join us on GitHub</a></div></div><video width="400" preload="auto" autoplay="" muted="" loop="" class="heroPattern_dn9n" poster="/assets/images/pattern-5de3eb8b397a4a785603c49c6e70e860.png"></video></div></div></header><main><section class="section_OFtz section_VjpN" id="quick-start"><div class="container__no-padding"><div class="container_bmt1"><div class="content_APwV"><h2 class="section_heading">Quick Start</h2><p class="highlight_WKpk">Trying OpenFGA is as easy as...</p><p>Run the following snippet in a terminal in an environment with Docker installed:</p><div class="copyCodeBlock__2Ng"><pre id="dockerSnippet" class="dockerSnippet_ru9D">docker pull openfga/openfga && \<br>docker run -p 8080:8080 -p 8081:8081 \<br>-p 3000:3000 openfga/openfga run</pre><button class="copyQuickstart_nRnP" data-copied="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><title>Copy quick start command to clipboard</title><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button></div><p>OpenFGA will be running at localhost:8080 on your machine. Learn about other options and next steps in the project <a href="https://github.com/openfga/openfga" target="_blank" rel="noopener noreferrer">README.md</a> or<!-- --> <a href="https://openfga.dev/docs/getting-started" target="_blank" rel="noopener noreferrer">Getting Started</a> guides.</p><p>Learn how to use sample authorization models and create your own with the projectâs extensive<!-- --> <a href="https://openfga.dev/docs/modeling" target="_blank" rel="noopener noreferrer">documentation</a>.</p></div><div class="terminalContainer_peeJ"><video width="646" preload="auto" autoplay="" muted="" loop="" class="terminalImg_qyMa" poster="/assets/images/terminal-beeca3a53258f5076350c9fe9924d782.png"><source src="/assets/medias/terminal-6773f514460e24a9550af5e15596b3ee.webm" type="video/webm"><source src="/assets/medias/terminal-f381a84e549a3a52d6f2dff645264fe7.mp4" type="video/mp4"></video></div></div><section class="banner_KVd7" aria-label="OpenFGA adopters"><p class="title_YAb7">Adopted by teams at</p><div class="carousel_ZBNv"><div class="track_U3Al"><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/agicap.svg" alt="Agicap logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/appscode.svg" alt="Appscode logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/auth0.svg" alt="Auth0 logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/canonical.svg" alt="Canonical logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/distyl.svg" alt="Distyl logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/docker.svg" alt="Docker logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/earthscope.svg" alt="EarthScope logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/flex.svg" alt="Flex logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/grafana.svg" alt="Grafana logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/headspace.svg" alt="Headspace logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/okta.svg" alt="Okta logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/openobserve.svg" alt="OpenObserve logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/platformmesh.svg" alt="PlatformMesh logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/readai.svg" alt="ReadAI logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/skyral.svg" alt="Skyral logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/sourcegraph.svg" alt="Sourcegraph logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="false"><img src="/img/adopters/zuplo.svg" alt="Zuplo logo - OpenFGA Adopter" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/agicap.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/appscode.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/auth0.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/canonical.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/distyl.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/docker.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/earthscope.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/flex.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/grafana.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/headspace.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/okta.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/openobserve.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/platformmesh.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/readai.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/skyral.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/sourcegraph.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div><div class="logo_H28d" aria-hidden="true"><img src="/img/adopters/zuplo.svg" alt="" aria-hidden="true" loading="lazy" decoding="async"></div></div></div></section></div></section><section class="section_OFtz section_sUhq" id="features"><div class="container__no-padding"><div class="grid_OmBo"><div></div><div></div></div><h2 class="section_heading">Features</h2><div class="grid_f5pM"><div class="feature_kx3O">
28<div class="icon_ip5S"><svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.8281 9.30033V1.5444C10.8281 0.695828 10.1333 0 9.28604 0H1.54202C0.694758 0 0 0.695828 0 1.5444V9.28336C0 10.1319 0.694758 10.8278 1.54202 10.8278H9.26909C10.1333 10.8447 10.8281 10.1489 10.8281 9.30033Z" fill="#79ED83"></path><path d="M9.83963 24.737C7.67455 24.737 5.94248 22.8147 6.15899 20.5319C6.35884 18.5581 8.12422 17.1164 10.0561 17.1164H20.7317C24.2791 17.1164 27.4601 14.456 27.8098 10.8002C28.2095 6.62944 25.0119 3.09375 21.0314 3.09375H14.6528C13.82 3.09375 13.1372 3.79746 13.1372 4.65563C13.1372 5.51381 13.82 6.21752 14.6528 6.21752H20.8149C22.7802 6.21752 24.5788 7.67642 24.7787 9.68456C25.0119 12.0016 23.2465 13.9583 21.0314 13.9583H10.1394C6.62532 13.9583 3.47762 16.6015 3.12788 20.2058C2.72817 24.3422 5.89252 27.8436 9.83963 27.8436H16.2849C17.1176 27.8436 17.8005 27.1399 17.8005 26.2817C17.8005 25.4235 17.1176 24.7198 16.2849 24.7198H9.83963V24.737Z" fill="#272B33"></path><path d="M31 29.4141V21.7843C31 20.9477 30.3013 20.2617 29.4491 20.2617H21.6603C20.8082 20.2617 20.1094 20.9477 20.1094 21.7843V29.4141C20.1094 30.2507 20.8082 30.9367 21.6603 30.9367H29.4321C30.3013 30.9367 31 30.2507 31 29.4141Z" fill="#BDC4CF"></path></svg></div><h3>Model any authorization system</h3><p>OpenFGA takes the best ideas from Google's Zanzibar paper for Relationship-Based Access Control, and also solves problems for Role-based Access Control and Attribute-Based Access Control use cases. The modeling language is powerful enough for engineers, but friendly enough for other stakeholders on your team as well.</p></div><div class="feature_kx3O"><div class="icon_ip5S"><div style="height:100%"></div></div><h3>Works with your code</h3><p>SDKs for the most popular languages have already been written, making it easy to integrate and grow alongside your applications. OpenFGA also makes it trivial to contribute new SDKs to support your project's language.</p></div><div class="feature_kx3O"><div class="icon_ip5S"><div style="height:100%"></div></div><h3>Blazing fast</h3><p>OpenFGA is designed to answer authorization check calls in milliseconds, which lets it scale with projects of any size. It works just as well for small startups and hobby programmers building single applications as it does for enterprise companies building platforms on a global scale.</p></div><div class="feature_kx3O"><div class="icon_ip5S"><div style="height:100%"></div></div><h3>Built in the open</h3><p>Transparency and peer review are important for building secure, stable, and sustainable software. OpenFGA's <a href="https://github.com/openfga/rfcs/blob/main/README.md" target="_blank">RFC process</a> and <a href="https://github.com/openfga/.github/blob/main/CONTRIBUTING.md" target="_blank">governance model</a> invite anyone to become a contributor, and collaboratively develop the <a href="https://github.com/orgs/openfga/projects/1" target="_blank">public roadmap</a>. Come create the next standard for authorization with us!</p></div><div class="feature_kx3O"><div class="icon_ip5S"><svg xmlns="http://www.w3.org/2000/svg" width="31" height="31" viewBox="5.52 5.02 388.71 388.96"><path fill="#fff" d="M66.5 333.2v-71.3H13v124.7h124.7v-53.4zm267.1-70.9v70.9h-70.9l-.3-.4v53.8H387V261.9h-53.8zM66.5 136.9V66h70.8l.4.4V12.6H13v124.7h53.9zM262.4 12.6V66h71.2v71.3H387V12.6z" style="isolation:isolate"></path><path fill="#A2A2A2" d="M208.5 137.3h47.3L184.5 66h77.9V12.6H137.7v53.8zm18.4 160-35.4-35.4h-47.2l59 59.1 12.2 12.2h-77.8v53.4h124.7v-53.8zm106.7-106.6v24.4l-12.2-12.2-59-59v47.2l35.4 35.4 35.4 35.4H387V137.3h-53.4zm-267.1-6.6 71.2 71.2v-47.2l-70.8-70.8H13v124.6h53.5z"></path></svg></div><h3>CNCF Incubation Project</h3><p>We are a <a href="https://www.cncf.io/">Cloud Native Computing Foundation</a> incubating project.</p></div><div class="feature_kx3O"><div class="icon_ip5S"><div style="height:100%"></div></div><h3>Get Involved</h3><p>Join OpenFGA's active <a href="https://openfga.dev/community" target="_blank">Slack and GitHub community</a>, check out existing <a href="https://github.com/openfga/rfcs" target="_blank">RFCs</a> to understand where the project is headed, and learn more about how to take part by reading our <a href="https://github.com/openfga/.github/blob/main/CONTRIBUTING.md" target="_blank">CONTRIBUTING.md</a>.</p><p><a target="_blank" href="https://github.com/openfga/.github/blob/main/CONTRIBUTING.md#contribution-process">Learn how to get involved �â </a></p></div></div></div></section><section class="section_OFtz sectionContainer_yxUZ" id="resources"><div class="container__no-padding"><div class="grid_OmBo"><div></div><div></div></div><div data-theme="dark" class="container_Q0_S"><div class="mainArea_jMsm"><h2 class="heading_PV1J">Since you're here, you might be interested in some ReBAC resources:</h2><ul class="links_JbSJ"><li><svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.99414 0C2.33729 0 0.994141 1.34315 0.994141 3V17C0.994141 18.6569 2.33729 20 3.99414 20H17.0495C18.7064 20 20.0495 18.6569 20.0495 17V3C20.0495 1.34315 18.7064 0 17.0495 0H3.99414ZM3.99146 5.35339V2.72754H17.0836V5.08785L8.20292 14.6176H17.3278V17.273H3.7168V14.8832L12.567 5.35339H3.99146Z" fill="#eaecee"></path></svg><a href="https://zanzibar.academy/" target="_blank" rel="noopener noreferrer">Zanzibar Academy â</a></li><li><svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.8281 9.30033V1.5444C10.8281 0.695828 10.1333 0 9.28604 0H1.54202C0.694758 0 0 0.695828 0 1.5444V9.28336C0 10.1319 0.694758 10.8278 1.54202 10.8278H9.26909C10.1333 10.8447 10.8281 10.1489 10.8281 9.30033Z" fill="#FFF"></path><path d="M9.83963 24.737C7.67455 24.737 5.94248 22.8147 6.15899 20.5319C6.35884 18.5581 8.12422 17.1164 10.0561 17.1164H20.7317C24.2791 17.1164 27.4601 14.456 27.8098 10.8002C28.2095 6.62944 25.0119 3.09375 21.0314 3.09375H14.6528C13.82 3.09375 13.1372 3.79746 13.1372 4.65563C13.1372 5.51381 13.82 6.21752 14.6528 6.21752H20.8149C22.7802 6.21752 24.5788 7.67642 24.7787 9.68456C25.0119 12.0016 23.2465 13.9583 21.0314 13.9583H10.1394C6.62532 13.9583 3.47762 16.6015 3.12788 20.2058C2.72817 24.3422 5.89252 27.8436 9.83963 27.8436H16.2849C17.1176 27.843
286 17.8005 27.1399 17.8005 26.2817C17.8005 25.4235 17.1176 24.7198 16.2849 24.7198H9.83963V24.737Z" fill="#CCC"></path><path d="M31 29.4141V21.7843C31 20.9477 30.3013 20.2617 29.4491 20.2617H21.6603C20.8082 20.2617 20.1094 20.9477 20.1094 21.7843V29.4141C20.1094 30.2507 20.8082 30.9367 21.6603 30.9367H29.4321C30.3013 30.9367 31 30.2507 31 29.4141Z" fill="#FFF"></path></svg><a href="https://play.fga.dev/" target="_blank" rel="noopener noreferrer">Auth0 FGA Playground â</a></li><li><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.9778 1C11.1836 1 10.422 1.31607 9.86044 1.87868C9.29888 2.44129 8.9834 3.20435 8.9834 4V12C8.9834 12.7956 9.29888 13.5587 9.86044 14.1213C10.422 14.6839 11.1836 15 11.9778 15C12.772 15 13.5336 14.6839 14.0952 14.1213C14.6567 13.5587 14.9722 12.7956 14.9722 12V4C14.9722 3.20435 14.6567 2.44129 14.0952 1.87868C13.5336 1.31607 12.772 1 11.9778 1Z" fill="#eaecee"></path><path d="M18.9642 10V12C18.9642 13.8565 18.228 15.637 16.9177 16.9497C15.6074 18.2625 13.8303 19 11.9772 19C10.1241 19 8.34698 18.2625 7.03667 16.9497C5.72636 15.637 4.99023 13.8565 4.99023 12V10" stroke="#eaecee" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M11.9775 19V23" stroke="#eaecee" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M7.98535 23H15.9705" stroke="#eaecee" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><a href="https://podcastindex.org/podcast/4368675" target="_blank" rel="noopener noreferrer">Podcast - Authorization in Software â</a></li></ul></div></div></div></section></main></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="footer__links text--center"><div class="footer__links"><a href="https://twitter.com/OpenFGA" target="_blank" rel="noopener noreferrer" class="footer__link-item header-social header-twitter-link" aria-label="OpenFGA on Twitter">Twitter</a><span class="footer__link-separator">·</span><a href="https://openfga.dev/community" target="_blank" rel="noopener noreferrer" class="footer__link-item header-social header-slack-link" aria-label="OpenFGA on Slack">CNCF Slack</a><span class="footer__link-separator">·</span><a href="https://github.com/openfga" target="_blank" rel="noopener noreferrer" class="footer__link-item header-social header-github-link" aria-label="OpenFGA on GitHub">GitHub</a><span class="footer__link-separator">·</span><a href="https://mastodon.social/@openfga" target="_blank" rel="me noopener noreferrer" class="footer__link-item header-social header-mastodon-link" aria-label="OpenFGA on Mastodon">Mastodon</a></div></div><div class="footer__bottom text--center"><div class="footer__copyright"><div><a href="https://www.linuxfoundation.org/trademark-usage"><img src="/img/cncf-icon-white.svg" alt="CNCF" style="vertical-align:middle; margin-right:8px;"></a> © 2026 <a href="https://www.linuxfoundation.org/" target="_blank">The Linux Foundation</a>®. All rights reserved. <span class="display-on-desktop">For a list of trademarks of The Linux Foundation, see our <a href="https://www.linuxfoundation.org/trademark-usage" class="light-text" target="blank">Trademark Usage page</a>.</span></div></div></div></div></footer></div></div>
29<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"3505acbc975d422ea9cd85a8c3ef997a","r":1,"spa":2}' crossorigin="anonymous"></script>
29 30</body> 31</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.