{"id":30091950,"url":"https://github.com/permitio/optoggles","last_synced_at":"2025-08-09T07:54:39.229Z","repository":{"id":38198573,"uuid":"399410275","full_name":"permitio/OPToggles","owner":"permitio","description":"Easily sync open-policy rules to your feature toggles  ","archived":false,"fork":false,"pushed_at":"2024-07-09T04:12:18.000Z","size":5488,"stargazers_count":135,"open_issues_count":41,"forks_count":5,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-07-30T01:06:25.457Z","etag":null,"topics":["authorization","example","featureflags","featuretoggles","launchdarkly","opal","openpolicyagent"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/permitio.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-24T09:37:28.000Z","updated_at":"2025-07-27T12:08:17.000Z","dependencies_parsed_at":"2024-05-22T23:26:26.560Z","dependency_job_id":"ab016949-c887-4b49-8660-04417c42b017","html_url":"https://github.com/permitio/OPToggles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/permitio/OPToggles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2FOPToggles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2FOPToggles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2FOPToggles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2FOPToggles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/permitio","download_url":"https://codeload.github.com/permitio/OPToggles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permitio%2FOPToggles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269548490,"owners_count":24436109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-09T02:00:10.424Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authorization","example","featureflags","featuretoggles","launchdarkly","opal","openpolicyagent"],"created_at":"2025-08-09T07:54:37.062Z","updated_at":"2025-08-09T07:54:39.192Z","avatar_url":"https://github.com/permitio.png","language":"Go","readme":"\u003cp  align=\"center\"\u003e\n \u003cimg src=\"https://i.ibb.co/m4cN6nW/optoggles.png\" height=170 alt=\"optoggles\" border=\"0\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\n🎚️ OPToggles 🎚️\n\u003c/h1\u003e\n\n\u003ch2 align=\"center\"\u003e\nOpen policy based feature toggling\n\u003c/h2\u003e\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/cf45f769-6b07-47b7-8aed-47213daede65/deploy-status)](https://app.netlify.com/sites/optoggles/deploys)\n\u003cspan\u003e\n\u003ca href=\"https://hub.docker.com/r/permitio/optoggles\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/docker/pulls/permitio/optoggles?label=Docker%20pulls\" alt=\"Docker pulls\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://opal-access.slack.com/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Slack%20Community-4A154B?logo=slack\u0026logoColor=white\" alt=\"Join our Slack!\"\u003e\n\u003c/a\u003e\n\u003c/span\u003e\n\n# What is OPToggles?\n\nWe often want our frontend to reflect the permissions enforced by the backend. E.g. if a user is not allowed to click run the action behind a button - don't show them that button.\n\n`OPToggles` brings the power of \u003ca href=\"https://github.com/permitio/opal\" target=\"_blank\"\u003e`OPA` + `OPAL`\u003c/a\u003e into your existing feature toggling solutions. \u003cbr/\u003e\nIt enables you to create user targeted feature flags/toggles based on \u003ca href=\"https://openpolicyagent.org\" target=\"_blank\"\u003eOpen Policy\u003c/a\u003e managed authorization rules, and keep them\nsynced thanks to `OPAL`'s realtime policy and policy-data change detection.\u003cbr/\u003e\n\u003cbr/\u003e\nWith OPToggles frontend devs can continue to enjoy working with the feature flags they are familar with, and backend-devs easily harness the power of open-policy.\n\n\u003cimg src=\"docs/website/optoggles-demo.gif\" alt=\"OPToggles Demo\"\u003e\n\n\u003c/br\u003e\n\n# Documentation\n\n- Read the full docs at [OPToggles.opal.ac](https://optoggles.opal.ac)\n- ⚡️ \u0026nbsp; [Quick Start Guide](https://optoggles.opal.ac/tutorials/quickstart/)\n- 🤿 \u0026nbsp; [How Does It Work](https://optoggles.opal.ac/tutorials/how_does_it_work/)\n- 🦮 \u0026nbsp; [OPToggles Demo](https://optoggles.opal.ac/tutorials/demo/)\n- 📓 \u0026nbsp; [Configuration File](https://optoggles.opal.ac/tutorials/configuration/)\n- 🩺 \u0026nbsp; [Health Checks](https://optoggles.opal.ac/tutorials/healthchecks/)\n- 📖 \u0026nbsp; [For further reading check out our Blog](https://bit.ly/permitioblog)\n\n# \u003ca name=\"community\"\u003e\u003c/a\u003e👥 Community \u0026 Contribution\n\n**Come talk to us about OPToggles, or authorization in general - we would love to hear from you ❤️**\n\nYou can raise questions and ask for features to be added to the road-map in our [**Github discussions**](https://github.com/permitio/OPToggles/discussions), report issues in [**Github issues**](https://github.com/permitio/OPToggles/issues), follow us on Twitter to get the latest OPToggles updates, and join our Slack community to chat about authorization, open-source, realtime communication, tech any anything else!\n\u003c/br\u003e\n\u003c/br\u003e\nIf you are using our project, please consider giving us a ⭐️\n\u003c/br\u003e\n\u003c/br\u003e\n\n[![Button][join-slack-link]][badge-slack-link] \u003c/br\u003e [![Button][follow-twitter-link]][badge-twitter-link]\n\n## Contributing to OPToggles\n\n- Pull requests are welcome! (please make sure to include _passing_ tests and docs)\n- Prior to submitting a PR - open an issue on GitHub, or make sure your PR addresses an existing issue well.\n\n[join-slack-link]: https://i.ibb.co/wzrGHQL/Group-749.png\n[badge-slack-link]: https://bit.ly/permitioslack\n[follow-twitter-link]: https://i.ibb.co/YZwWJm7/Group-751.png\n[badge-twitter-link]: https://twitter.com/opal_ac\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermitio%2Foptoggles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpermitio%2Foptoggles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermitio%2Foptoggles/lists"}