Skip to content

Radius Resource Types and Recipes for Github-Radius integration #11863

Draft
Reshrahim wants to merge 10 commits into
radius-project:mainfrom
Reshrahim:resource-type-contrib
Draft

Radius Resource Types and Recipes for Github-Radius integration #11863
Reshrahim wants to merge 10 commits into
radius-project:mainfrom
Reshrahim:resource-type-contrib

Conversation

@Reshrahim
Copy link
Copy Markdown
Contributor

This pull request introduces a comprehensive design note outlining the strategy for integrating Radius resource types and recipes to support deterministic, reliable AI-driven deployment definition generation. The document proposes a catalog of well-defined resource types, a model for leveraging community infrastructure modules as recipes without maintaining IaC code, and a contribution and validation framework to ensure quality and extensibility.

Resource Types and Catalog Expansion

  • Defines a prioritized catalog of ~30 application-oriented resource types (e.g., PostgreSQL, Redis, Object Storage, LLM APIs) based on developer adoption data, with a tiered approach for implementation and maturity.
  • Describes automated schema generation using a resource-type-creator agent to ensure stable, provider-agnostic contracts.

Recipe Management and Direct Module Support

  • Establishes a model where recipes reference existing community modules (Bicep, Terraform, Helm) directly, eliminating the need for custom wrapper code and reducing maintenance/supply chain risks.
  • Details the structure and function of Recipe Packs for mapping resource types to modules and handling input/output resolution.

Validation, Testing, and Contribution Lifecycle

  • Outlines automated schema and recipe validation processes, including contract checks, deployment tests, and output mapping verification.
  • Defines contribution guidelines, maturity stages (Alpha, Beta, Stable),# Description

Please explain the changes you've made.

Type of change

  • This pull request fixes a bug in Radius and has an approved issue (issue link required).
  • This pull request adds or changes features of Radius and has an approved issue (issue link required).
  • This pull request is a minor refactor, code cleanup, test improvement, or other maintenance task and doesn't change the functionality of Radius (issue link optional).
  • This pull request is a design document and only includes files in the eng/design-notes directory.

Fixes: #issue_number

Contributor checklist

Please verify that the PR meets the following requirements, where applicable:

  • An overview of proposed schema changes is included in a linked GitHub issue.
    • Yes
    • Not applicable
  • A design document is added or updated under eng/design-notes/ in this repository, if new APIs are being introduced.
    • Yes
    • Not applicable
  • The design document has been reviewed and approved by Radius maintainers/approvers.
    • Yes
    • Not applicable
  • A PR for resource-types-contrib is created, if resource types or recipes are affected by the changes in this PR.
    • Yes
    • Not applicable
  • A PR for dashboard is created, if the Radius Dashboard is affected by the changes in this PR.
    • Yes
    • Not applicable
  • A PR for the documentation repository is created, if the changes in this PR affect the documentation or any user facing updates are made.
    • Yes
    • Not applicable

Reshrahim added 4 commits May 12, 2026 10:45
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
@radius-functional-tests
Copy link
Copy Markdown

radius-functional-tests Bot commented May 12, 2026

Radius functional test overview

🔍 Go to test action run

Click here to see the test run details
Name Value
Repository Reshrahim/radius
Commit ref 8044b0c
Unique ID funca2fe1ecadd
Image tag pr-funca2fe1ecadd
  • gotestsum 1.13.0
  • KinD: v0.29.0
  • Dapr: 1.14.4
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-funca2fe1ecadd
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-funca2fe1ecadd
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-funca2fe1ecadd
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-funca2fe1ecadd
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-funca2fe1ecadd
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ corerp-cloud functional tests succeeded
✅ Recipe publishing succeeded
⌛ Starting corerp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
✅ corerp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

@Reshrahim Reshrahim marked this pull request as ready for review May 13, 2026 15:30
@Reshrahim Reshrahim requested a review from a team as a code owner May 13, 2026 15:30
Copilot AI review requested due to automatic review settings May 13, 2026 15:30
@Reshrahim Reshrahim requested a review from a team as a code owner May 13, 2026 15:30
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an extensibility design note describing a strategy for GitHub–Radius integration, focusing on a deterministic catalog of application-oriented resource types and a recipe model that directly references community IaC modules (Bicep/Terraform/Helm), plus an adoption-ranked catalog appendix to guide prioritization.

Changes:

  • Introduces a top-level design note for resource type + recipe strategy, contribution lifecycle, and validation approach for AI-driven app.bicep generation.
  • Adds an adoption-ranked catalog of candidate application components with tiers and supporting metrics/methodology notes.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Main design note describing the proposed resource type catalog, direct-module recipe approach, and contribution/validation model.
eng/design-notes/extensibility/2026-05-radius-resource-types-recipes/resource-type-ranked-catalog.md Ranked catalog appendix used to justify prioritization of resource types based on adoption signals.

Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated

## Appendix C: Methodology

This catalog was produced using the Discover → Measure → Rank methodology documented in detail in [`resource-type-discovery-methodology.md`](resource-type-discovery-methodology.md). In brief:
1. Build a resource type catalog broad enough for AI agents to generate accurate `app.bicep` for real-world applications.
2. Eliminate recipe authoring by pointing directly at community modules, so Radius never owns or ships IaC code.
3. Establish a contribution model that lets the community add and validate resource types with clear maturity gates from Alpha to Stable.
4. Extend recipe driver coverage to match where developers deploy: Bicep for Azure, Terraform for AWS, Helm for Kubernetes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have any data on IaC usage for AWS? I'm curious if Terraform or CloudFormation is the right way to go. I suspect the key driver here is if there is an authoritative library of CloudFormation templates which Radius can link to.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I scanned through the Tf registry for AWS https://registry.terraform.io/namespaces/terraform-aws-modules and the weekly downloads are in millions. I couldn't find a authentic source for CloudFormation usage.

Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
| Tier | What's included | Criteria |
|------|----------------|----------|
| **Build First** | PostgreSQL, Redis, Object Storage, LLM Inference API, MongoDB, MySQL, Kafka, Elasticsearch/OpenSearch, RabbitMQ, SQL Server | Highest adoption + stable connection contracts suitable for cross-cloud abstraction |
| **Build Next** | Serverless Functions, Message Queue, MQTT, pgvector, NATS, Oracle, Neo4j, Vault, Cassandra, InfluxDB | Strong adoption but higher abstraction complexity or narrower use cases |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please clarify what is a message queue? You already have Kafka and RabbitMQ in the tier 1 bucket.


Notable inclusions: LLM Inference API reflects AI becoming a first-class application dependency (81.4% of surveyed developers use OpenAI GPT models). pgvector (#14) is the recommended vector-database entry point with the same PostgreSQL connection contract and 3/3 cloud availability. Vault (#18) is included because applications directly establish runtime connections to secrets providers, unlike org-level identity or observability platforms.

Shared infrastructure services (identity/auth, observability, logging, email, feature flags) are provisioned at the platform level, but applications still connect to them at runtime. These may warrant a lightweight **shared resource type** with no recipe, just connection metadata at the environment level.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please clarify. If these are platform level resources, what would the resource type be and do?

Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
@Reshrahim Reshrahim marked this pull request as draft May 13, 2026 23:10
Reshrahim added 4 commits May 19, 2026 14:00
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>

## Goals

1. Build a resource type catalog broad enough for AI agents to generate accurate `app.bicep` for real-world applications.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we think of this as training the agents? i.e. when they come across a type or a user wants to define a type that does not directly map to a known resource the agent can create the type and recipe files successfully?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is about building the catalog (tested and validated) for the most basic services so that there is maximum determinism and less errors during application definition process for 60-80% of the cases.

After the basic catalog is in place which we can certainly think about training the agents to do more like generating types and recipes on the fly.

Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
|------------------|----------|----------------|----------|
| Azure | Bicep | [Azure Verified Modules (AVM)](https://aka.ms/avm) | `mcr.microsoft.com/bicep/avm/` |
| AWS | Terraform | [terraform-aws-modules](https://registry.terraform.io/namespaces/terraform-aws-modules) | `registry.terraform.io/terraform-aws-modules/` |
| Kubernetes | Helm | [Bitnami Charts](https://github.com/bitnami/charts) | `oci://registry-1.docker.io/bitnamicharts/` |
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might not be a best spource for Helm. Need to do an analysis here

**Recipe Validation** catches upstream module breakage before it impacts deployments:

- Weekly CI runs that deploy each referenced module and verify outputs map correctly
- Version-pinned references with automated PRs when new module versions are available
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can dependabot manage this?

Copy link
Copy Markdown
Contributor

@willdavsmith willdavsmith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great


Radius maintains the resource type schemas and recipes in the `resource-types-contrib` repository. We need about 30 application oriented resource types covering the basics: databases, caches, messaging, storage, and so on. These are what AI agents use to generate `app.bicep`, so the schemas need to be well-defined.

Recipes reference community modules directly rather than custom IaC code. The `resource-types-contrib` repository contains type definitions and tested module references. For Azure, recipes point at Azure Verified Modules. For AWS, the Terraform Registry. For Kubernetes, Helm charts. Radius resolves inputs and outputs automatically, with the mapping configuration maintained in Recipe packs.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we actually point at Helm Charts for Kubernetes? I think all of the ones we have are direct Terraform/Bicep k8s provider


Recipes reference community modules directly rather than custom IaC code. The `resource-types-contrib` repository contains type definitions and tested module references. For Azure, recipes point at Azure Verified Modules. For AWS, the Terraform Registry. For Kubernetes, Helm charts. Radius resolves inputs and outputs automatically, with the mapping configuration maintained in Recipe packs.

In most cases, there is no IaC code to maintain — just a module reference and mapping configuration. In rare cases where no suitable community module exists or where Radius-specific orchestration is needed (e.g., the container recipe that manages Kubernetes deployments directly), a custom recipe module is still required. This document lays out the strategy to build and maintain the types and recipes for the GitHub-Radius integration to be successful.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would frame this as an assumption, not a fact. We don't really know yet


Resource types are the building blocks of the application definition. Today's catalog is limited to a handful of types that serve only the Radius `todo-list` sample. To support real-world applications, the catalog needs to grow to cover the application dependencies developers actually use.

A data-driven analysis by Copilot from cloud provider catalogs, Docker Hub, the Stack Overflow 2025 Developer Survey, IaC registries, and package registry trends identified 27 application components ranked by actual developer adoption. Adoption is measured by dedicated client-library downloads across four ecosystems (npm, PyPI, NuGet, RubyGems), weighted by survey usage, Docker pulls, and cloud availability. The full ranked catalog with methodology is in [`resource-type-ranked-catalog`](2026-05-radius-resource-types-recipes/resource-type-ranked-catalog.md).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very cool that we got a data-driven approach

Comment thread eng/design-notes/extensibility/2026-05-radius-resource-types-recipes.md Outdated
### Resource type and Recipe correctness

- **Dependency resolution rate**: 80%+ of detected app dependencies should map to a defined resource type, measured across common application patterns (web apps, microservices, data pipelines).
- **Schema accuracy**: Generated `app.bicep` files should require zero manual edits for connection properties (host, port, credentials) when deploying against any supported platform.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes we need a way to measure the effectiveness of skills across apps

### Resource type and Recipe correctness

- **Dependency resolution rate**: 80%+ of detected app dependencies should map to a defined resource type, measured across common application patterns (web apps, microservices, data pipelines).
- **Schema accuracy**: Generated `app.bicep` files should require zero manual edits for connection properties (host, port, credentials) when deploying against any supported platform.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we write fuzzy AI tests to simulate bicep creation and verify that its output looks right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes we need a evaluation framework to know how good our skill or agent is

## Appendix: Testing, Validation, and Contribution Model

This will be covered in another doc with the technical details of the testing framework and contribution process, but here are the high-level principles.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we care about the app.bicep generating reliable/consistent output, we should test that somehow too

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes 💯

**Alpha**

- Schema passes validation (required properties, type checks, output contract)
- At least one working recipe module reference on any single platform
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how is this verified?

- Recipe module references for all three platforms (AWS, Azure, Kubernetes)
- README with usage examples across all platforms
- Recipe packs tested across all supported platforms
- Backward-compatible schema changes only
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how will this be verified?

Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants