[DISCUSS] Aegis MCP Governance Gateway Incubator Proposal
vaquar khan <[email protected]> Tue, 4 Aug 2026 00:18:26 -0500
| Newsgroups | gmane.comp.apache.incubator.general |
|---|---|
| Message-ID | <CAAeYL2Qijg7q5AGuVEUdVoFc9UifJSgaFdNYHB6_5uOn8PbNDw@mail.gmail.com> |
--000000000000a1ea53065831c9f7 Content-Type: text/plain; charset="UTF-8" Hello everyone, I would like to propose a project called Aegis MCP Governance Gateway for the Apache Incubator, and start a discussion. It is a working reference implementation, and I am bringing it here mainly because it needs a community rather than a single author, which I state plainly in the proposal. *In short: *when an AI agent needs to operate data systems like Flink, Kafka, Spark, or Iceberg, it usually drives each engine control plane directly or connects to a pile of separate MCP servers, each with its own security posture, no shared audit, and no common policy. An MCP server that can reach a control plane is a privileged client, so shipping one safely means shipping an access-control product. Aegis puts one governed control plane in front of all of those engines, so every agent action runs through a single fail-closed chain of identity, scope, policy, approval for destructive actions, egress and request-forgery defense, rate limiting, output redaction, and a tamper-evident audit trail. Engines plug in through a small service provider interface and contribute no policy. Current state, stated honestly. There is a working Java 21 build: a gateway core, four in-depth adapters (Flink, Kafka, Spark, Iceberg), thinner adapters for other Apache systems, and a runnable distribution. It builds cleanly with 309 tests passing across all modules. A published design-conformance matrix maps every design claim to Done or Roadmap. Several capabilities ship as roadmap items and are not sold as done: externalized high-availability state, CIMD and SPIFFE identity, a full Cedar runtime, vault-backed credentials, and an OpenTelemetry SDK bridge. Parts of the code were developed with AI-assisted tools under my direction and review, which I disclose up front for IP clearance. *Biggest risk: *The project is currently a single contributor. Growing a diverse, multi-organization community is the main reason I am bringing it here. I am currently in active conversations with engineers in the ecosystem and expect to add a few of them as initial committers in the next few days, prior to a formal vote What I am looking for now: a Champion (an ASF Member) and mentors (three or more IPMC members), ideally including people from the Flink, Kafka, Spark, or Iceberg communities. The full proposal follows, and the reference implementation is at https://github.com/vaquarkhan/aegis-mcp-gateway. I welcome feedback on scope, name (a name search is still to be run), risks, and anything I have missed. Thank you, Viquar Khan https://www.linkedin.com/in/vaquar-khan-b695577/ Apache Incubator Proposal: Aegis MCP Governance Gateway This is the proposal for entry into the Apache Incubator, written for discussion on the Incubator general list. Aegis is a working codename; a name search will be run and the ASF trademark process followed if the project is accepted. The document follows the ASF Incubator proposal template and states the maturity of the code honestly, including what is implemented and what is deferred to the roadmap. Field Value Proposal name Aegis MCP Governance Gateway (codename) Proposed short name aegis (subject to name search) Proposal date to be set at submission Sponsor Apache Incubator PMC Champion to be identified (ASF Member) Mentors to be recruited (three or more IPMC members) Initial code Java 21 multi-module reference implementation, 36 Maven modules, 309 tests passing Reference repository https://github.com/vaquarkhan/aegis-mcp-gateway (private for now, access on request) License Apache License 2.0 Discussion list general at incubator.apache.org Abstract Aegis MCP Governance Gateway is a vendor-neutral, secure-by-default Model Context Protocol (MCP) gateway that puts one governed, auditable control plane in front of many Apache data and streaming engines, so an AI agent never talks to Flink, Kafka, Spark, or Iceberg directly. Every agent action passes one fail-closed governance chain: secure-by-default tool exposure, per-caller authentication and scope, a policy decision point, approval for destructive operations, egress and server-side request forgery defense, rate limiting, circuit breaking, prompt-injection screening, output bounding and redaction, tool-catalog integrity, and a tamper-evident hash-chained audit trail. Engines plug in through a small service provider interface and contribute only tool definitions and backend calls. Proposal We propose to develop, under Apache governance, a Layer 7 policy MCP gateway plus a family of engine adapters. A proxy forwards bytes and a router dispatches by capability, but neither is a trust boundary. A gateway is: it knows the tool, the principal, the budget, and the policy for every call, and it can deny, redact, gate, and record. The gateway core is stateless at the protocol edge so it can scale behind an ordinary load balancer once shared governance state is externalized, and it is designed to align with OAuth 2.1, SPIFFE, SLSA, OpenTelemetry, and the NIST AI Risk Management Framework and ISO/IEC 42001. The initial contribution is a working Java reference implementation: a reusable gateway core, four in-depth engine adapters (Flink, Kafka, Spark, Iceberg), and a further set of thinner adapters for the wider Apache data platform. During incubation the priorities are community building, IP clearance, and promoting the roadmap items to full implementations. Background The Model Context Protocol has become a common way for AI agents to reach tools and data. As organizations connect agents to distributed Apache data estates, an agent that needs Flink, Kafka, Spark, and Iceberg must either drive each engine control plane directly or connect to a sprawl of independent, mostly read-only MCP servers, each with its own security posture, no shared audit, and no unified policy. An MCP server that can reach a control plane (a JobManager REST API, a Kafka AdminClient, a SQL gateway, an Iceberg catalog) is a privileged client. Shipping one safely is effectively shipping an access-control product: authentication, authorization, approval for destructive actions, redaction of secrets and personal data, rate and cost limits, and forensic audit. Many existing options lack these controls and carry single-maintainer sustainability risk. A single governed gateway, developed in the open under neutral governance, gives the ecosystem a shared standard for how agents operate Apache systems safely. Rationale A single governed gateway resolves the problems of the decentralized approach: - Security. One place enforces identity, authorization, approval, redaction, egress, and audit, instead of each server reimplementing or omitting them. - Maintainability. Adding an engine is a small adapter, not a new security model. There is one chain to review and harden, so the security review surface stays flat as engines are added. - Governance. One control plane for policy, budget, and provenance, with a stable deny taxonomy so operators can alert on codes such as POLICY_DENIED or APPROVAL_REQUIRED across every engine with one rule. Doing this under Apache governance keeps it neutral across vendors and engines rather than leaving agent access to fragmented single-vendor servers. Initial goals 1. Establish the project and practice the Apache Way: transparency, consensus, meritocracy, and community over code. 2. Complete IP clearance for the existing code and land it under Apache-2.0 with correct LICENSE and NOTICE files. 3. Publish and stabilize the adapter service provider interface so per-engine adapters are small, reviewable contributions. 4. Promote the roadmap items to full implementations: externalized high-availability state, CIMD and SPIFFE identity, a full Cedar runtime, vault-backed credential exchange, and an OpenTelemetry SDK bridge. 5. Produce the first Apache source releases and grow a diverse, multi-organization contributor base. Current status Aegis is a new codebase with a working multi-module reference implementation. It is not yet a community. The design, threat model, low-level design, and standards research are complete and public. The code builds green and is tested. A published design-conformance matrix maps every design claim to Done or Roadmap, so the maturity line is explicit. Verified build and test state - 36 Maven modules: a gateway core, adapters for 33 Apache engines (four in-depth today, Flink, Kafka, Spark, and Iceberg, and 29 thinner integrations covering Cassandra, HBase, Hive, Pulsar, Airflow, NiFi, Druid, Pinot, Doris, Impala, Calcite, Hudi, Paimon, Kudu, Ignite, BookKeeper, Ozone, Hadoop, ZooKeeper, Solr, Superset, Arrow Flight, Beam, Storm, Flume, ActiveMQ, CouchDB, Ranger, and Atlas), and a shaded runnable distribution. These are engine adapters the gateway supports, which is distinct from external adopters. - Builds with JDK 21 and runs on JDK 17 or newer with Maven 3.9 or newer. - 309 unit and integration tests across all modules, all passing, zero failures and zero errors on a clean build. Implemented in 0.1.0 - The governance chain with ordered steps and first-denial-wins semantics. - Identity: shared bearer and a hashed multi-caller token file with per-caller scope, and an OAuth 2.1 resource-server mode with JWKS validation. Constant-time secret comparison and fail-closed startup validation. - Approvals: HMAC-SHA256 signed, TTL-bounded, single-use, tool-and-scope-bound tokens with replay rejection. - Policy: a builtin decision point, a live fail-closed OPA HTTP decision point, and a Cedar-style deny-file or HTTP delegate. - Per-caller outbound credential pass-through so a downstream engine can see a per-caller Authorization value when one was bound at admission. - Egress and server-side request forgery defense: allow list plus unconditional deny of cloud metadata and non-routable ranges, including numeric IP encodings and resolved addresses, with redirects disabled on outbound clients. - Rate limiting, circuit breaking, per-tool timeout, read-only SQL guard, identifier validation, output bounding, and data-loss-prevention redaction. - Tool-catalog integrity with durable pins and a fail-closed switch, a tamper-evident hash-chained audit, Prometheus metrics, and GenAI-shaped span log lines. - Two transports: stdio and authenticated Streamable HTTP with TLS, plus health, readiness, and metrics endpoints. A CycloneDX software bill of materials is produced at build time. Deferred to the roadmap (honestly labeled, not sold as implemented) - CIMD and SPIFFE authentication modes (they refuse to start today). - A full Cedar policy runtime, and vault-backed or token-exchange credential resolution. - Externalized high-availability state (shared nonce, rate, and audit stores). Until then, run a single replica; multi-replica replay protection and rate limits require the shared store. - The MCP Tasks extension for long-running jobs, an OpenTelemetry SDK bridge, a full Merkle and signature-based reconciliation proof, and true semantic routing and caching. These are tracked in the roadmap and the design-conformance matrix that ship with the code. Meritocracy, community, core developers, alignment The project will operate meritocratically from day one, with technical decisions on the dev list and committership earned through contribution. The community is currently centered on the initial author, Viquar Khan, who has around 23 years in software, has worked in the open since 2013, and has contributed to Apache Spark, Apache Iceberg, Apache Kafka, and other open-source projects. The author also maintains MCP-related open-source packages that have together been downloaded on the order of half a million times, so there is an existing user base to draw contributors from. Growing a committer base across the Flink, Kafka, Spark, and Iceberg communities and across employers is the primary goal of incubation. Aegis consumes public engine interfaces only and does not fork or modify any engine core. Known risks Orphaned products Low to moderate. Agentic access to data systems is a growing need and the governance gap is real, so demand is unlikely to vanish. The initial author has maintained open-source projects since 2013 rather than abandoning them, and the MCP-related packages already have a real user base, which lowers the abandonment risk. Mitigation: build a multi-organization community, keep the core small and standards aligned, and keep adapters independent so the project survives the departure of any single contributor. Inexperience with open source Low. This is not the situation here. The initial author has about 23 years in software, has worked in open source since 2013, and has contributed to Apache Spark, Apache Iceberg, Apache Kafka, and other projects, so the norms of public development, code review, and releases are familiar. Mentors will still help with the ASF-specific mechanics of voting, board reports, and IP clearance, which are process details rather than a gap in open-source experience. Homogenous developers This is the real risk and we state it plainly: the podling has one committer today. However, we are in active discussions with potential co-committers and expect to formally add them to this proposal in the coming days. What further reduces this risk is that the author is already embedded in the exact communities this project draws from (Spark, Iceberg, Kafka) and has an existing user base for the MCP packages, so there is a concrete pool to recruit from rather than a cold start. Mitigation: recruit committers from more than one organization before graduation, shape the adapter contract so per-engine contributions are natural, and use good-first-issue and adapter-sized work to onboard newcomers. Growing the committer base is the main reason we are here. Reliance on salaried developers Low current reliance; the work to date is largely independent. The project will attract contributors with varied motivations and employers so no single company can stall it. Relationships with other Apache products Aegis consumes the public interfaces of Flink, Kafka, Spark, Iceberg, and other Apache data systems and does not fork or modify them. We will coordinate on the relevant dev lists and will not duplicate or compete with an engine that ships its own MCP surface; where an engine has one, Aegis composes with it. Aegis is not proposed for any engine core. Excessive fascination with the Apache brand The project seeks Apache governance for its community model and neutrality, not for the brand. Until and unless accepted, it uses a neutral name and does not use the Apache marks or the feather. The breadth of engine adapters reflects a common governance surface, not an attempt to claim the ecosystem; only four adapters are in-depth today and the rest are explicitly thin. Documentation Public documentation exists and will be maintained in the repository: an end-to-end design with architecture decision records, a low-level design with architecture, sequence, and state diagrams, a threat and governance model, a design-conformance matrix, standards research, and operations and adapter guides. Initial source The initial source is the Java multi-module gateway described above, currently in a private repository at https://github.com/vaquarkhan/aegis-mcp-gateway under the initial author. Access is available on request to anyone reviewing this proposal, and the author will make it public before the vote if the community prefers to read the code first. It includes the gateway core, the four in-depth adapters, the thinner adapters, the shaded distribution, runnable examples, and the documentation set. On acceptance it will be donated under a Software Grant and made public. Source and intellectual property submission plan The initial author will submit the code under a Software Grant Agreement and complete IP clearance early in incubation, with ICLAs from every committer. Every source file will carry the standard Apache-2.0 header with correct LICENSE and NOTICE files; any premature ASF-ownership wording will be corrected to the standard header at donation time. Transparency on tooling: parts of the codebase were developed with AI-assisted coding tools under the author's direction and review. The author asserts authorship and the right to contribute the work, and will confirm provenance and authorship during IP clearance so the grant is clean. We raise this proactively so the IPMC can review it rather than discover it. External dependencies Runtime dependencies are Apache-2.0 or compatible, including the MCP Java SDK, a servlet container for the HTTP transport, SLF4J, Logback, and Nimbus for JOSE and JWT, with JUnit for tests. Per-engine adapters add that engine to the official client, for example the Kafka clients library. A full dependency review and a CycloneDX software bill of materials are produced. No GPL or ASF category X dependency is introduced into the core. Cryptography Aegis uses standard, library-based cryptography: HMAC-SHA256 for approval tokens, TLS for the HTTP transport, and JSON Web Token validation for OAuth. Signature-based integrity is an optional gate. The project will comply with ASF export notification requirements. Required resources Mailing lists - [email protected] - [email protected] - [email protected] Source control - A Git repository under the ASF (gitbox with a GitHub mirror). Issue tracking - ASF Jira or GitHub issues per current ASF practice. Other - Website and wiki space, and continuous integration through ASF infrastructure. Initial committers - Viquar Khan *(Note: We are in active conversations with potential contributors and expect to add a few additional initial committers here in the next few days before moving to a formal vote.)* - To be recruited before and during incubation: committers from the Flink, Kafka, Spark, and Iceberg communities and from additional organizations. Adapter-sized work is designed to make these contributions natural. Affiliations To be completed as committers are confirmed. Diversity of affiliation is an explicit goal; the current single-affiliation status is the main risk being addressed. Sponsors Champion To be identified. An ASF Member Champion will help finalize this proposal, recruit mentors, and shepherd the discussion and vote on the Incubator general list. Nominated mentors Three or more IPMC members to be recruited, ideally including participants from the Flink, Kafka, and Iceberg communities. Sponsoring entity The Apache Incubator PMC. Roadmap during incubation Phase Focus Bootstrap IP clearance, name search, infra, initial committers, first dev-list decisions 0.2 Externalized HA state, vault-backed credentials, OAuth multi-issuer, OTel SDK bridge, supply-chain CI (enforcer, CVE scan, signing) 0.3 CIMD and SPIFFE identity, full Cedar runtime, MCP Tasks, signature-based reconciliation proof, semantic routing and caching Graduation readiness Diverse community, cadence of Apache releases, healthy governance References - Apache Incubator proposal guide: https://incubator.apache.org/guides/proposal.html - Apache Incubator Cookbook: https://incubator.apache.org/cookbook/ - The Apache Way: https://www.apache.org/theapacheway/ - Model Context Protocol: https://modelcontextprotocol.io/ --000000000000a1ea53065831c9f7--