{"id":23455176,"url":"https://github.com/cloudnative-pg/cnpg-i","last_synced_at":"2025-12-24T17:34:38.951Z","repository":{"id":217333427,"uuid":"743586952","full_name":"cloudnative-pg/cnpg-i","owner":"cloudnative-pg","description":"CloudNativePG Interface (CNPG-I)","archived":false,"fork":false,"pushed_at":"2025-04-04T19:07:59.000Z","size":438,"stargazers_count":36,"open_issues_count":8,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-04T20:22:44.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/cloudnative-pg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-15T14:53:27.000Z","updated_at":"2025-04-04T19:07:35.000Z","dependencies_parsed_at":"2024-04-08T08:47:18.851Z","dependency_job_id":"edee9262-4236-41f3-9d8b-78c4164ab3d6","html_url":"https://github.com/cloudnative-pg/cnpg-i","commit_stats":null,"previous_names":["cloudnative-pg/cnpg-i"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fcnpg-i","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fcnpg-i/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fcnpg-i/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fcnpg-i/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudnative-pg","download_url":"https://codeload.github.com/cloudnative-pg/cnpg-i/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248800104,"owners_count":21163404,"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","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":[],"created_at":"2024-12-24T03:29:18.460Z","updated_at":"2025-12-24T17:34:38.944Z","avatar_url":"https://github.com/cloudnative-pg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CloudNativePG Interface (CNPG-I)\n\n**Status:** Experimental\n\nThe **CloudNativePG Interface (CNPG-I)** introduces a modular and extensible\napproach to integrating plugins with the\n[CloudNativePG operator for PostgreSQL](https://github.com/cloudnative-pg/cloudnative-pg),\nenabling greater flexibility and ease of feature development in the\nCloudNativePG ecosystem.\n\n## What is CNPG-I?\n\nThe **CloudNativePG Interface** is a **gRPC-based protocol** that defines a\nstandardized interface between the CloudNativePG operator and external plugins.\nThis approach empowers developers and organizations to extend the operator's\nfunctionality without the need to fork its codebase.\n\nFor a detailed protocol specification, refer to the [protocol.md](docs/protocol.md) file.\n\n## Why CNPG-I?\n\nOver the years, CloudNativePG's codebase has grown significantly, creating\nchallenges for developers contributing to the project and increasing the time\nrequired to deliver new features.\n\nTo address this, CNPG-I provides a **modular plugin architecture** inspired by\nthe success of Kubernetes' [Container Storage Interface (CSI)](https://github.com/container-storage-interface/spec/blob/master/spec.md).\n\nCNPG-I fosters a thriving ecosystem by making it easier to integrate new\ncapabilities through independent plugins, allowing for faster innovation and\nsimplified maintenance.\n\n### Key Benefits\n\n1. **Reduced Complexity**: Delegate responsibilities to external plugins,\n   reducing the cognitive load and size of the CloudNativePG core codebase.\n2. **Faster Feature Delivery**: Accelerate development by fostering independent\n   plugin creation, prototyping, and ecosystem growth.\n3. **Standardized gRPC API**:\n   Provide a robust, gRPC-based API specification for customizing operator and\n   operand behavior, complete with compliance testing tools.\n4. **Ecosystem Expansion**: Encourage innovation by enabling developers to\n   create enhancements as separate projects, avoiding forks and lowering barriers\n   to entry.\n5. **Ease of Adoption**: Simplify the move to CloudNativePG for Postgres and\n   Kubernetes users by facilitating custom enhancements and integrations.\n\n## Use Cases for Plugins\n\nCNPG-I enables the creation of plugins for diverse use cases, such as:\n\n- **WAL Management**\n- **Backup and Recovery**\n- **Logging and Auditing**\n- **Metrics Export**\n- **Authentication and Authorization**\n- **Extension Management**\n- **Instance Lifecycle Management**\n- **Configuration Management**\n\nBy leveraging plugins, developers can extend CloudNativePG’s functionality\nwithout modifying its core code.\n\n## Projects Built with CNPG-I\n\nExplore real-world applications of CNPG-I:\n\n- [CNPG-I Hello World](https://github.com/cloudnative-pg/cnpg-i-hello-world/):\n  A simple example plugin demonstrating CNPG-I.\n- [Barman Cloud CNPG-I Plugin](https://github.com/cloudnative-pg/plugin-barman-cloud):\n  A plugin for seamless integration with Barman Cloud for Continuous Backup and\n  Recovery using object stores.\n\n## Third-Party Plugins\n\n\u003e **Disclaimer:**\n\u003e The plugins listed in this section are developed and maintained by\n\u003e independent third parties. CloudNativePG and the CNPG-I project\n\u003e (both licensed under Apache-2.0) do not endorse, guarantee, or assume\n\u003e responsibility for their functionality, maintenance, support, or security.\n\u003e For usage, troubleshooting, or updates, please refer to the plugin’s own\n\u003e documentation, source repository, or other channels indicated on its pages.\n\n- [CNPG-I Scale-to-Zero Plugin](https://github.com/xataio/cnpg-i-scale-to-zero):\n  A plugin that automatically hibernates inactive CloudNativePG clusters to\n  optimize resource usage and reduce costs.\n  \n---\n\n## Trademarks\n\n*[Postgres, PostgreSQL and the Slonik Logo](https://www.postgresql.org/about/policies/trademarks/)\nare trademarks or registered trademarks of the PostgreSQL Community Association\nof Canada, and used with their permission.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnative-pg%2Fcnpg-i","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudnative-pg%2Fcnpg-i","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnative-pg%2Fcnpg-i/lists"}