# dotnet/extensions architecture

> Architecture diagram of the GitHub repository dotnet/extensions, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dotnet/extensions
- Repository: https://github.com/dotnet/extensions

## Overview

This repository is a suite of .NET libraries, not one application with a single end-to-end flow. Its users compose facilities for AI, ingestion, resilience, ASP.NET diagnostics, compliance reporting, and developer tooling. The clearest sampled runtime flow is file ingestion: a caller runs the pipeline, which reads files, applies document processors, and writes processed chunks; results and failures are yielded to the caller. Other branches reflect major README capabilities and the file tree. Wiring beyond the sampled excerpts is shown only where the README or source supports it.

Main entry points: [`src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipeline.cs`](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipeline.cs) (Ingestion pipeline), [`src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIRealtimeClientSession.cs`](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIRealtimeClientSession.cs) (OpenAI realtime), [`src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResiliencePipelineBuilderExtensions.cs`](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResiliencePipelineBuilderExtensions.cs) (HTTP resilience), [`src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/ByAuthorityPipelineKeyProvider.cs`](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/ByAuthorityPipelineKeyProvider.cs) (Authority pipeline keys)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ai["AI Libraries"]
  node_aiabstractions["AI abstractions"]
  node_embedding["Embedding registration"]
  node_realtime["OpenAI realtime"]
end

subgraph group_ingestion["Data Ingestion"]
  node_ingestpipeline["Ingestion pipeline"]
  node_ingestoptions["Pipeline options"]
  node_reader["Document reader"]
  node_docprocessors["Document processors"]
  node_chunkwriter["Chunk writer"]
  node_ingestresults["Ingestion results"]
end

subgraph group_robustness["Resilience"]
  node_resilience["HTTP resilience"]
  node_pipelinekeys["Authority pipeline keys"]
end

subgraph group_diagnostics["ASP.NET Diagnostics"]
  node_aspnetdiag["ASP.NET diagnostics"]
  node_headerparse["Header parsing"]
  node_latency["Latency capture"]
end

subgraph group_compliance["Compliance Reporting"]
  node_compliancegen["Compliance reports"]
  node_evalcache[("Evaluation cache")]
  node_resultstore[("Evaluation results")]
end

subgraph group_devtools["Developer Tools"]
  node_staticanalysis["Static analyzers"]
  node_sourcegenerators["Source generators"]
  node_apichief["API compatibility tools"]
  node_diagconfig["Diagnostic config tools"]
end

node_app(("Application developer"))
node_openai(("OpenAI service"))
node_files["Input files"]
node_httprequest["HTTP requests"]
node_azurestore[("Azure Data Lake")]

node_app -->|"starts session"| node_realtime
node_realtime -->|"sends commands"| node_openai
node_openai -->|"streams updates"| node_realtime
node_app -->|"registers generator"| node_embedding
node_app -->|"runs pipeline"| node_ingestpipeline
node_ingestpipeline -->|"enumerates files"| node_files
node_ingestpipeline -->|"reads documents"| node_reader
node_ingestpipeline -->|"processes documents"| node_docprocessors
node_ingestpipeline -->|"writes chunks"| node_chunkwriter
node_ingestpipeline -->|"yields results"| node_ingestresults
node_app -->|"configures pipelines"| node_resilience
node_resilience -->|"selects keys"| node_pipelinekeys
node_pipelinekeys -->|"keys by authority"| node_httprequest
node_app -->|"configures middleware"| node_aspnetdiag
node_app -->|"configures parsing"| node_headerparse
node_latency -->|"records checkpoints"| node_aspnetdiag
node_app -->|"uses compliance tools"| node_compliancegen
node_app -->|"caches evaluations"| node_evalcache
node_app -->|"stores results"| node_resultstore
node_evalcache -->|"reads and writes"| node_azurestore
node_resultstore -->|"reads and writes"| node_azurestore
node_app -->|"uses analyzers"| node_staticanalysis
node_app -->|"uses generators"| node_sourcegenerators
node_app -->|"checks API changes"| node_apichief
node_app -->|"manages diagnostics"| node_diagconfig

click node_aiabstractions "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.AI.Abstractions"
click node_embedding "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI/Embeddings/EmbeddingGeneratorBuilderServiceCollectionExtensions.cs"
click node_realtime "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIRealtimeClientSession.cs"
click node_ingestpipeline "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipeline.cs"
click node_ingestoptions "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipelineOptions.cs"
click node_reader "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion"
click node_docprocessors "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion"
click node_chunkwriter "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion"
click node_ingestresults "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion"
click node_resilience "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResiliencePipelineBuilderExtensions.cs"
click node_pipelinekeys "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/ByAuthorityPipelineKeyProvider.cs"
click node_aspnetdiag "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware"
click node_headerparse "https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.AspNetCore.HeaderParsing"
click node_latency "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Latency/CapturePipelineExitMiddleware.cs"
click node_compliancegen "https://github.com/dotnet/extensions/tree/main/src/Generators/Microsoft.Gen.ComplianceReports"
click node_evalcache "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting.Azure/Storage/AzureStorageResponseCache.cs"
click node_resultstore "https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting.Azure/Storage/AzureStorageResultStore.cs"
click node_staticanalysis "https://github.com/dotnet/extensions/tree/main/src/Analyzers"
click node_sourcegenerators "https://github.com/dotnet/extensions/tree/main/src/Generators"
click node_apichief "https://github.com/dotnet/extensions/tree/main/eng/Tools/ApiChief"
click node_diagconfig "https://github.com/dotnet/extensions/tree/main/eng/Tools/DiagConfig"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_aiabstractions,node_embedding,node_realtime toneBlue
class node_ingestpipeline,node_ingestoptions,node_reader,node_docprocessors,node_chunkwriter,node_ingestresults,node_azurestore toneAmber
class node_resilience,node_pipelinekeys,node_httprequest toneMint
class node_aspnetdiag,node_headerparse,node_latency toneRose
class node_compliancegen,node_evalcache,node_resultstore,node_app,node_openai,node_files toneIndigo
class node_staticanalysis,node_sourcegenerators,node_apichief,node_diagconfig toneTeal
```

## Components

### AI Libraries

- [AI abstractions](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.AI.Abstractions): `src/Libraries/Microsoft.Extensions.AI.Abstractions`
- [Embedding registration](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI/Embeddings/EmbeddingGeneratorBuilderServiceCollectionExtensions.cs): `src/Libraries/Microsoft.Extensions.AI/Embeddings/EmbeddingGeneratorBuilderServiceCollectionExtensions.cs`
- [OpenAI realtime](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIRealtimeClientSession.cs): `src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIRealtimeClientSession.cs`

### Data Ingestion

- [Ingestion pipeline](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipeline.cs): `src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipeline.cs`
- [Pipeline options](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipelineOptions.cs): `src/Libraries/Microsoft.Extensions.DataIngestion/IngestionPipelineOptions.cs`
- [Document reader](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion): `src/Libraries/Microsoft.Extensions.DataIngestion`
- [Document processors](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion): `src/Libraries/Microsoft.Extensions.DataIngestion`
- [Chunk writer](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion): `src/Libraries/Microsoft.Extensions.DataIngestion`
- [Ingestion results](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.Extensions.DataIngestion): `src/Libraries/Microsoft.Extensions.DataIngestion`

### Resilience

- [HTTP resilience](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResiliencePipelineBuilderExtensions.cs): `src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResiliencePipelineBuilderExtensions.cs`
- [Authority pipeline keys](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/ByAuthorityPipelineKeyProvider.cs): `src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/ByAuthorityPipelineKeyProvider.cs`

### ASP.NET Diagnostics

- [ASP.NET diagnostics](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware): `src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware`
- [Header parsing](https://github.com/dotnet/extensions/tree/main/src/Libraries/Microsoft.AspNetCore.HeaderParsing): `src/Libraries/Microsoft.AspNetCore.HeaderParsing`
- [Latency capture](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Latency/CapturePipelineExitMiddleware.cs): `src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Latency/CapturePipelineExitMiddleware.cs`

### Compliance Reporting

- [Compliance reports](https://github.com/dotnet/extensions/tree/main/src/Generators/Microsoft.Gen.ComplianceReports): `src/Generators/Microsoft.Gen.ComplianceReports`
- [Evaluation cache](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting.Azure/Storage/AzureStorageResponseCache.cs): `src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting.Azure/Storage/AzureStorageResponseCache.cs`
- [Evaluation results](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting.Azure/Storage/AzureStorageResultStore.cs): `src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting.Azure/Storage/AzureStorageResultStore.cs`

### Developer Tools

- [Static analyzers](https://github.com/dotnet/extensions/tree/main/src/Analyzers): `src/Analyzers`
- [Source generators](https://github.com/dotnet/extensions/tree/main/src/Generators): `src/Generators`
- [API compatibility tools](https://github.com/dotnet/extensions/tree/main/eng/Tools/ApiChief): `eng/Tools/ApiChief`
- [Diagnostic config tools](https://github.com/dotnet/extensions/tree/main/eng/Tools/DiagConfig): `eng/Tools/DiagConfig`

### Other components

- **Application developer**
- **OpenAI service**
- **Input files**
- **HTTP requests**
- **Azure Data Lake**

## Connections

- Application developer → OpenAI realtime: starts session
- OpenAI realtime → OpenAI service: sends commands
- OpenAI service → OpenAI realtime: streams updates
- Application developer → Embedding registration: registers generator
- Application developer → Ingestion pipeline: runs pipeline
- Ingestion pipeline → Input files: enumerates files
- Ingestion pipeline → Document reader: reads documents
- Ingestion pipeline → Document processors: processes documents
- Ingestion pipeline → Chunk writer: writes chunks
- Ingestion pipeline → Ingestion results: yields results
- Application developer → HTTP resilience: configures pipelines
- HTTP resilience → Authority pipeline keys: selects keys
- Authority pipeline keys → HTTP requests: keys by authority
- Application developer → ASP.NET diagnostics: configures middleware
- Application developer → Header parsing: configures parsing
- Latency capture → ASP.NET diagnostics: records checkpoints
- Application developer → Compliance reports: uses compliance tools
- Application developer → Evaluation cache: caches evaluations
- Application developer → Evaluation results: stores results
- Evaluation cache → Azure Data Lake: reads and writes
- Evaluation results → Azure Data Lake: reads and writes
- Application developer → Static analyzers: uses analyzers
- Application developer → Source generators: uses generators
- Application developer → API compatibility tools: checks API changes
- Application developer → Diagnostic config tools: manages diagnostics
