MCPcopy
hub / github.com/permitio/opal

github.com/permitio/opal @0.9.6 sqlite

repository ↗ · DeepWiki ↗ · release 0.9.6 ↗
1,322 symbols 5,446 edges 198 files 518 documented · 39%
README

opal

⚡OPAL⚡

Open Policy Administration Layer

Tests Package Package Downloads

Docker pulls

Join our Slack!

What is OPAL?

OPAL is an administration layer for Policy Engines such as Open Policy Agent (OPA), and AWS' Cedar Agent detecting changes to both policy and policy data in realtime and pushing live updates to your agents. OPAL brings open-policy up to the speed needed by live applications.

As your app's data state changes (whether it's via your APIs, DBs, git, S3 or 3rd-party SaaS services), OPAL will make sure your services are always in sync with the authorization data and policy they need (and only those they need).

Check out OPAL's main site at OPAL.ac

OPAL Use Cases

OPAL is the easiest way to keep your solution's authorization layer up-to-date in realtime. It aggregates policy and data from across the field and integrates them seamlessly into the authorization layer, and is microservices and cloud-native.

Here are some of the main use cases for using OPAL: * End-to-End Fine-Grained Authorization service that can be used with any policy language or data store * Google-Zanzibar support for Policy as Code engines such as OPA and AWS Cedar * Streamline permissions in microservice architectures using centralized policy configuration with decentralized data sources and policy engines * Manage and automate the deployment of multiple Open Policy Agent engines in a Cloud-Native environment

simplified

OPAL uses a client-server stateless architecture. OPAL-Servers publish policy and data updates over a lightweight (websocket) PubSub Channel, which OPAL-clients subscribe to via topics. Upon updates, each client fetches data directly (from the source) to load it into its managed Policy Engine instance.

OPA + OPAL == 💜

While OPA (Open Policy Agent) decouples policy from code in a highly-performant and elegant way, the challenge of keeping policy agents up-to-date remains. This is especially true in applications, where each user interaction or API call may affect access-control decisions. OPAL runs in the background, supercharging policy agents and keeping them in sync with events in real time.

AWS Cedar + OPAL == 💪

Cedar is a very powerful policy language, which powers AWS' AVP (Amazon Verified Permissions) - but what if you want to enjoy the power of Cedar on another cloud, locally, or on premise? This is where Cedar-Agent and OPAL come in.

This video briefly explains OPAL and how it works with OPA, and a deeper dive into it at this OWASP DevSlop talk.

Who's Using OPAL?

OPAL is being used as the core engine of Permit.io Authorization Service and serves in production: * > 10,000 policy engines deployment * > 100,000 policy changes and data synchronizations every day * > 10,000,000 authorization checks every day

Besides Permit, OPAL is being used in Production in Tesla, Walmart, The NBA, Intel, Cisco, Live-Oak Bank, and thousands of other development teams and companies of all sizes.

Documentation

OPAL is available both as python packages with a built-in CLI as well as pre-built docker images ready-to-go.

curl -L https://raw.githubusercontent.com/permitio/opal/master/docker/docker-compose-example.yml \
> docker-compose.yml && docker compose up

📖 For further reading, check out our Blog

Community

We would love to chat with you about OPAL. Join our Slack community to chat about authorization, open-source, realtime communication, tech, or anything else!

You can raise questions and ask for features to be added to the road-map in our Github discussions, report issues in Github issues

If you like our project, please consider giving us a ⭐️

Button

Button

Contributing to OPAL

We would love for you to contribute to this project and help make it even better than it is today! 💎

As a contributor, here are the guidelines we would like you to follow: - Code of Conduct - Question or Problem? - Issues and Bugs - Feature Requests - Development Guidelines

There's more!

  • Check out OPToggles, which enables you to create user targeted feature flags/toggles based on Open Policy managed authorization rules!
  • Check out Cedar-Agent, the easiest way to deploy & run AWS Cedar.

Core symbols most depended-on inside this repo

str
called by 74
packages/opal-common/opal_common/confi/confi.py
should_ignore_path
called by 64
packages/opal-client/opal_client/policy_store/opa_client.py
create_task
called by 38
packages/opal-common/opal_common/utils.py
get
called by 36
packages/opal-server/opal_server/scopes/scope_repository.py
bool
called by 36
packages/opal-common/opal_common/confi/confi.py
wait
called by 30
packages/opal-common/opal_common/topics/publisher.py
load_conf_if_none
called by 29
packages/opal-common/opal_common/confi/confi.py
read
called by 26
packages/opal-common/opal_common/git_utils/commit_viewer.py

Shape

Method 717
Function 375
Class 188
Route 42

Languages

Python100%

Modules by API surface

packages/opal-client/opal_client/policy_store/opa_client.py64 symbols
packages/opal-client/opal_client/engine/runner.py37 symbols
packages/opal-common/opal_common/confi/confi.py33 symbols
packages/opal-common/opal_common/topics/publisher.py32 symbols
packages/opal-server/opal_server/git_fetcher.py31 symbols
packages/opal-common/opal_common/git_utils/commit_viewer.py31 symbols
packages/opal-client/opal_client/client.py30 symbols
packages/opal-client/opal_client/policy_store/base_policy_store_client.py29 symbols
packages/opal-server/opal_server/statistics.py26 symbols
packages/opal-client/opal_client/data/updater.py26 symbols
packages/opal-server/opal_server/scopes/api.py23 symbols
packages/opal-common/opal_common/emport.py22 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

@docusaurus/core3.9.1 · 1×
@docusaurus/module-type-aliases3.9.1 · 1×
@docusaurus/preset-classic3.9.1 · 1×
@docusaurus/theme-mermaid3.9.1 · 1×
@inkeep/cxkit-docusaurus0.5.100 · 1×
@mdx-js/react3.1.1 · 1×
axios1.12.2 · 1×
clsx2.1.1 · 1×
docusaurus-plugin-sass0.2.6 · 1×
micromatch4.0.8 · 1×
prism-react-renderer2.3.1 · 1×
react18.3.1 · 1×

Datastores touched

postgresDatabase · 1 repos

For agents

$ claude mcp add opal \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact