AICentral 0.21.6

dotnet add package AICentral --version 0.21.6
                    
NuGet\Install-Package AICentral -Version 0.21.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AICentral" Version="0.21.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AICentral" Version="0.21.6" />
                    
Directory.Packages.props
<PackageReference Include="AICentral" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AICentral --version 0.21.6
                    
#r "nuget: AICentral, 0.21.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AICentral@0.21.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AICentral&version=0.21.6
                    
Install as a Cake Addin
#tool nuget:?package=AICentral&version=0.21.6
                    
Install as a Cake Tool

AI Central

AI Central gives you control over your AI services.

  • Minimal overhead - written on Asp.Net Core, on dotnet 8. One of the fastest web-servers in the business.
  • Enable advanced Azure APIm scenarios such as passing a Subscription Key, and a JWT from libraries like PromptFlow that don't support that out-of-the-box.
  • PII Stripping logging to Cosmos DB
    • Powered by graemefoster/aicentral.logging.piistripping
  • Lightweight out-the-box token metrics surfaced through Open Telemetry
    • Does not buffer and block streaming
    • Use for PTU Chargeback scenarios
    • Gain quick insights into who's using what, how much, and how often
    • Standard Open Telemetry format to surface Dashboards in you monitoring solution of choice
  • Prompt and usage logging to Azure Monitor
    • Works for streaming endpoints as-well as non-streaming
  • Intelligent Routing
    • Endpoint Selector that favours endpoints reporting higher available capacity
    • Random endpoint selector
    • Prioritised endpoint selector with fallback
    • Lowest Latency endpoint selector
  • Can proxy asynchronous requests such as Azure OpenAI DALLE2 Image Generation across fleets of servers
  • Custom consumer OAuth2 authorisation
  • Can mint JWT time-bound and consumer-bound JWT tokens to make it easy to run events like Hackathons without blowing your budget
  • Circuit breakers and backoff-retry over downstream AI services
  • Local token rate limiting
    • By consumer / by endpoint
    • By number of tokens (including streaming by estimated token count)
  • Local request rate limiting
    • By consumer / by endpoint
  • Bulkhead support for buffering requests to backend
  • Distributed token rate limiting (using Redis)
    • Powered by an extension graemefoster/aicentral.ratelimiting.distributedredis
  • AI Search Vectorization endpoint
    • Powered by an extension graemefoster/aicentral.azureaisearchvectorizer
  • Support for Azure Inference endpoint

Configuration

See docs on Github for more details.

Minimal

This sample produces a AI-Central proxy that

  • Listens on a hostname of your choosing
  • Proxies directly through to a back-end Open AI server
  • Can be accessed using standard SDKs
  • Outputs open-telemetry metrics to capture usage information
{
  "AICentral": {
    "Endpoints": [
      {
        "Type": "AzureOpenAIEndpoint",
        "Name": "openai-1",
        "Properties": {
          "LanguageEndpoint": "https://<my-ai>.openai.azure.com",
          "AuthenticationType": "ApiKey",
          "ApiKey": "<key>"
        }
      }
    ],
    "EndpointSelectors": [
      {
        "Type": "SingleEndpoint",
        "Name": "default",
        "Properties": {
          "Endpoint": "openai-1"
        }
      }
    ],
    "AuthProviders": [
      {
        "Type": "ApiKey",
        "Name": "apikey",
        "Properties": {
          "Clients": [
            {
              "ClientName": "Consumer-1",
              "Key1": "<random-key>",
              "Key2": "<random-key>"
            }
          ]
        }
      }
    ],
    "Pipelines": [
      {
        "Name": "OpenAIPipeline",
        "Host": "mypipeline.mydomain.com",
        "EndpointSelector": "default",
        "AuthProvider": "apikey",
        "OpenTelemetryConfig": {
          "AddClientNameTag": true,
          "Transmit": true
        }
      }
    ]
  }
}

Full example

This pipeline will:

  • Present an Azure Open AI, and an Open AI downstream as a single upstream endpoint
    • maps the incoming deployment Name "GPT35Turbo0613" to the downstream Azure Open AI deployment "MyGptModel"
    • maps incoming Azure Open AI deployments to Open AI models
  • Present it as an Azure Open AI style endpoint
  • Protect the front-end by requiring an AAD token issued for your own AAD application
  • Put a local Asp.Net core rate-limiting policy over the endpoint
  • Emit Open Telemetry to be picked up by your OTel collector
  • Add rich logging to Azure monitor
    • Logs quota, client caller information (IP and identity name), and in this case the Prompt but not the response.
  • Publish the client-name as a tag in Open Telemetry
{
  "AICentral": {
    "Endpoints": [
      {
        "Type": "AzureOpenAIEndpoint",
        "Name": "openai-priority",
        "Properties": {
          "LanguageEndpoint": "https://<my-ai>.openai.azure.com",
          "AuthenticationType": "Entra|EntraPassThrough|ApiKey",
          "MaxConcurrency": 10,
          "ModelMappings": {
            "Gpt35Turbo0613": "MyGptModel"
          }
        }
      },
      {
        "Type": "OpenAIEndpoint",
        "Name": "openai-fallback",
        "Properties": {
          "LanguageEndpoint": "https://api.openai.com",
          "ModelMappings": {
            "Gpt35Turbo0613": "gpt-3.5-turbo",
            "Ada002Embedding": "text-embedding-ada-002"
          },
          "ApiKey": "<my-api-key>",
          "Organization": "<optional-organisation>"
        }
      }
    ],
    "AuthProviders": [
      {
        "Type": "Entra",
        "Name": "simple-aad",
        "Properties": {
          "Entra": {
            "ClientId": "<my-client-id>",
            "TenantId": "<my-tenant-id>",
            "Instance": "https://login.microsoftonline.com/",
            "Audience": "<custom-audience>"
          }
        }
      }
    ],
    "EndpointSelectors": [
      {
        "Type": "Prioritised",
        "Name": "my-endpoint-selector",
        "Properties": {
          "PriorityEndpoints": ["openai-1"],
          "FallbackEndpoints": ["openai-fallback"]
        }
      }
    ],
    "GenericSteps": [
      {
        "Type": "AspNetCoreFixedWindowRateLimiting",
        "Name": "token-rate-limiter",
        "Properties": {
          "LimitType": "PerConsumer|PerAICentralEndpoint",
          "MetricType": "Tokens",
          "Options": {
            "Window": "00:01:00",
            "PermitLimit": 1000
          }
        }
      },
      {
        "Type": "AspNetCoreFixedWindowRateLimiting",
        "Name": "window-rate-limiter",
        "Properties": {
          "LimitType": "PerConsumer|PerAICentralEndpoint",
          "MetricType": "Requests",
          "Options": {
            "Window": "00:00:10",
            "PermitLimit": 100
          }
        }
      },
      {
        "Type": "AzureMonitorLogger",
        "Name": "azure-monitor-logger",
        "Properties": {
          "WorkspaceId": "<workspace-id>",
          "Key": "<key>",
          "LogPrompt": true,
          "LogResponse": false,
          "LogClient": true
        }
      },
      {
        "Type": "BulkHead",
        "Name": "bulk-head",
        "Properties": {
          "MaxConcurrency": 20
        }
      }
    ],
    "Pipelines": [
      {
        "Name": "MyPipeline",
        "Host": "prioritypipeline.mydomain.com",
        "EndpointSelector": "my-endpoint-selector",
        "AuthProvider": "simple-aad",
        "Steps": [
          "window-rate-limiter",
          "bulk-head",
          "azure-monitor-logger"
        ],
        "OpenTelemetryConfig": {
          "AddClientNameTag": true,
          "Transmit": true
        }
      }
    ]
  }
}

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.21.6 2,005 9/9/2025
0.21.6-pullrequest0161-0009 156 9/9/2025
0.21.6-pullrequest0161-0006 141 9/9/2025
0.21.6-pullrequest0161-0005 157 9/9/2025
0.21.6-pullrequest0161-0004 153 9/9/2025
0.21.5 154 7/18/2025
0.21.4 2,760 2/21/2025
0.21.4-pullrequest0155-0003 103 2/21/2025
0.21.3 134 2/21/2025
0.21.3-pullrequest0155-0002 101 1/30/2025
0.21.1 661 1/14/2025
0.21.1-pullrequest0153-0003 88 1/14/2025
0.21.0 418 12/9/2024
0.21.0-pullrequest0152-0005 106 12/9/2024
0.21.0-pullrequest0152-0004 100 12/9/2024
0.21.0-pullrequest0152-0003 93 12/9/2024
0.21.0-pullrequest0152-0002 107 12/9/2024
0.20.7 282 11/26/2024
0.20.7-pullrequest0151-0002 99 11/26/2024
0.20.6 413 11/1/2024
0.20.6-pullrequest0150-0003 93 11/1/2024
0.20.5 399 9/30/2024
0.20.5-pullrequest0148-0004 106 9/30/2024
0.20.5-pullrequest0148-0003 102 9/30/2024
0.20.5-pullrequest0148-0002 124 9/30/2024
0.20.3 178 9/5/2024
0.20.3-pullrequest0146-0005 94 9/5/2024
0.20.3-pullrequest0146-0004 96 9/5/2024
0.20.2 129 9/4/2024
0.20.2-pullrequest0145-0004 101 9/4/2024
0.20.0 163 8/17/2024
0.20.0-pullrequest0143-0013 105 8/17/2024
0.20.0-pullrequest0143-0012 110 8/17/2024
0.20.0-pullrequest0143-0011 106 8/17/2024
0.20.0-pullrequest0143-0010 114 8/17/2024
0.20.0-pullrequest0143-0009 107 8/17/2024
0.19.6-pullrequest0143-0008 124 8/17/2024
0.19.5 127 8/7/2024
0.19.5-pullrequest0141-0002 89 8/7/2024
0.19.4 147 8/1/2024
0.19.4-pullrequest0140-0003 101 8/1/2024
0.19.4-pullrequest0139-0001 99 7/29/2024
0.19.3 132 7/29/2024
0.19.2 156 7/29/2024
0.19.2-pullrequest0138-0004 104 7/29/2024
0.19.1 133 7/29/2024
0.19.1-pullrequest0137-0003 102 7/29/2024
0.19.0 135 7/29/2024
0.19.0-pullrequest0136-0014 91 7/29/2024
0.19.0-pullrequest0136-0013 88 7/29/2024
0.19.0-pullrequest0136-0012 182 7/29/2024
0.19.0-pullrequest0136-0011 99 7/29/2024
0.19.0-pullrequest0136-0010 97 7/29/2024
0.19.0-pullrequest0136-0009 94 7/27/2024
0.19.0-pullrequest0136-0008 101 7/27/2024
0.19.0-pullrequest0136-0007 106 7/27/2024
0.18.6 147 7/15/2024
0.18.6-pullrequest0135-0002 97 7/15/2024
0.18.5 127 7/15/2024
0.18.5-pullrequest0134-0003 97 7/15/2024
0.18.4 125 7/15/2024
0.18.4-pullrequest0133-0009 90 7/15/2024
0.18.4-pullrequest0133-0008 100 7/15/2024
0.18.4-pullrequest0133-0007 102 7/15/2024
0.18.3 133 7/12/2024
0.18.3-pullrequest0132-0005 92 7/12/2024
0.18.2 124 7/12/2024
0.18.2-pullrequest0131-0003 97 7/11/2024
0.18.2-pullrequest0130-0003 95 7/11/2024
0.18.1 132 7/10/2024
0.18.1-pullrequest0129-0007 88 7/10/2024
0.18.0 173 7/10/2024
0.18.0-pullrequest0125-0014 92 7/10/2024
0.18.0-pullrequest0125-0013 101 7/10/2024
0.18.0-pullrequest0125-0012 94 7/10/2024
0.18.0-pullrequest0125-0011 93 7/10/2024
0.18.0-pullrequest0125-0010 98 7/10/2024
0.18.0-pullrequest0125-0009 103 7/10/2024
0.17.2-pullrequest0125-0008 96 7/10/2024
0.17.2-pullrequest0125-0007 104 7/10/2024
0.17.2-pullrequest0125-0006 92 7/10/2024
0.17.2-pullrequest0125-0005 94 7/10/2024
0.17.2-pullrequest0125-0004 104 7/10/2024
0.17.2-pullrequest0125-0003 93 7/9/2024
0.17.1 126 7/9/2024
0.17.1-pullrequest0124-0005 103 7/9/2024
0.17.0 134 7/8/2024
0.17.0-pullrequest0123-0024 87 7/8/2024
0.17.0-pullrequest0123-0023 93 7/8/2024
0.17.0-pullrequest0123-0021 105 7/8/2024
0.17.0-pullrequest0123-0019 94 7/8/2024
0.17.0-pullrequest0123-0018 86 7/8/2024
0.17.0-pullrequest0123-0017 99 7/8/2024
0.17.0-pullrequest0123-0015 92 7/8/2024
0.17.0-pullrequest0123-0014 92 7/8/2024
0.17.0-pullrequest0123-0013 93 7/8/2024
0.17.0-pullrequest0123-0012 92 7/8/2024
0.17.0-pullrequest0123-0011 98 7/8/2024
0.17.0-pullrequest0123-0009 102 7/6/2024
0.17.0-pullrequest0123-0008 91 7/6/2024
0.17.0-pullrequest0123-0007 137 7/6/2024
0.16.23 149 6/12/2024
0.16.23-pullrequest0118-0005 103 6/12/2024
0.16.23-pullrequest0118-0004 95 6/12/2024
0.16.23-pullrequest0118-0003 99 6/12/2024
0.16.23-pullrequest0118-0002 99 6/12/2024
0.16.21 188 5/29/2024
0.16.21-pullrequest0114-0002 101 5/29/2024
0.16.20 140 5/28/2024
0.16.20-pullrequest0112-0002 96 5/28/2024
0.16.19 139 5/13/2024
0.16.19-pullrequest0110-0004 121 5/13/2024
0.16.19-pullrequest0110-0003 107 5/13/2024
0.16.17 161 4/22/2024
0.16.17-pullrequest0108-0005 114 4/19/2024
0.16.17-pullrequest0108-0004 108 4/19/2024
0.16.17-pullrequest0108-0003 103 4/19/2024
0.16.16 155 4/16/2024
0.16.16-pullrequest0107-0003 120 4/16/2024
0.16.15 147 4/16/2024
0.16.15-pullrequest0106-0004 100 4/16/2024
0.16.15-pullrequest0106-0003 92 4/16/2024
0.16.15-pullrequest0106-0002 104 4/16/2024
0.16.14 216 4/16/2024
0.16.13 156 3/23/2024
0.16.13-pullrequest0103-0003 126 3/23/2024
0.16.12 159 3/23/2024
0.16.12-pullrequest0102-0006 118 3/22/2024
0.16.11 148 3/21/2024
0.16.11-pullrequest0101-0004 99 3/21/2024
0.16.11-pullrequest0101-0003 109 3/21/2024
0.16.11-pullrequest0101-0002 117 3/21/2024
0.16.9 158 3/16/2024
0.16.9-pullrequest0098-0008 110 3/16/2024
0.16.9-pullrequest0098-0007 104 3/16/2024
0.16.8 174 3/15/2024
0.16.8-pullrequest0097-0002 97 3/15/2024
0.16.7 145 3/10/2024
0.16.7-pullrequest0095-0002 123 3/10/2024
0.16.6 247 3/9/2024
0.16.6-pullrequest0094-0003 106 3/9/2024
0.16.6-pullrequest0094-0002 101 3/9/2024
0.16.2 157 3/5/2024
0.16.2-pullrequest0089-0009 110 3/5/2024
0.16.1 152 3/3/2024
0.16.1-pullrequest0088-0003 100 3/2/2024
0.16.1-pullrequest0088-0002 93 3/2/2024
0.16.0 206 2/28/2024
0.16.0-pullrequest0087-0010 102 2/28/2024
0.16.0-pullrequest0087-0009 103 2/28/2024
0.16.0-pullrequest0087-0007 121 2/28/2024
0.16.0-pullrequest0087-0006 105 2/28/2024
0.16.0-pullrequest0087-0005 94 2/28/2024
0.16.0-pullrequest0087-0004 108 2/28/2024
0.16.0-pullrequest0087-0003 107 2/28/2024
0.15.2 145 2/26/2024
0.15.2-pullrequest0086-0007 111 2/26/2024
0.15.2-pullrequest0086-0006 104 2/26/2024
0.15.1 150 2/23/2024
0.15.1-pullrequest0085-0006 102 2/23/2024
0.15.0 153 2/22/2024
0.15.0-pullrequest0084-0004 109 2/22/2024
0.15.0-pullrequest0084-0003 151 2/22/2024
0.14.1-pullrequest0084-0002 123 2/22/2024
0.14.0 158 2/21/2024
0.14.0-pullrequest0083-0011 121 2/8/2024
0.14.0-pullrequest0083-0010 103 2/8/2024
0.14.0-pullrequest0083-0009 102 2/8/2024
0.13.7 162 2/8/2024
0.13.7-pullrequest0082-0002 113 2/8/2024
0.13.6-pullrequest0081-0006 110 2/8/2024
0.13.5 168 2/7/2024
0.13.5-pullrequest0080-0002 106 2/7/2024
0.13.4 136 2/7/2024
0.13.4-pullrequest0079-0003 106 2/7/2024
0.13.1 141 2/1/2024
0.13.1-pullrequest0076-0003 108 2/1/2024
0.13.1-pullrequest0076-0002 107 2/1/2024
0.13.0 167 2/1/2024
0.13.0-pullrequest0075-0005 109 2/1/2024
0.13.0-pullrequest0075-0004 108 2/1/2024
0.12.2-pullrequest0075-0003 112 2/1/2024
0.12.1 143 2/1/2024
0.12.1-pullrequest0074-0002 119 2/1/2024
0.12.0 146 2/1/2024
0.12.0-pullrequest0073-0002 105 2/1/2024
0.11.0 162 1/31/2024
0.11.0-pullrequest0072-0011 123 1/31/2024
0.11.0-pullrequest0072-0010 102 1/31/2024
0.11.0-pullrequest0072-0008 103 1/31/2024
0.10.0 142 1/31/2024
0.10.0-pullrequest0070-0005 119 1/29/2024
0.10.0-pullrequest0070-0004 106 1/29/2024
0.9.1-pullrequest0069-0001 95 1/29/2024
0.9.0 136 1/29/2024
0.9.0-pullrequest0069-0002 98 1/29/2024
0.8.7-pullrequest0068-0001 109 1/29/2024
0.8.6 162 1/29/2024
0.8.4 158 1/19/2024
0.8.4-pullrequest0066-0009 94 1/19/2024
0.8.4-pullrequest0066-0008 100 1/19/2024
0.8.4-pullrequest0066-0007 107 1/19/2024
0.8.4-pullrequest0066-0005 94 1/19/2024
0.8.4-pullrequest0066-0004 99 1/19/2024
0.8.4-pullrequest0066-0003 98 1/19/2024
0.8.3 143 1/19/2024
0.8.3-pullrequest0065-0003 106 1/19/2024
0.8.3-pullrequest0065-0002 104 1/19/2024
0.8.1 138 1/19/2024
0.8.1-pullrequest0063-0013 106 1/19/2024
0.8.1-pullrequest0063-0011 105 1/19/2024
0.7.16-pullrequest0063-0010 113 1/19/2024
0.7.15 140 1/18/2024
0.7.15-pullrequest0062-0002 109 1/18/2024
0.7.12 144 1/16/2024
0.7.12-pullrequest0059-0006 103 1/16/2024
0.7.10 144 1/15/2024
0.7.10-pullrequest0059-0007 101 1/16/2024
0.7.10-pullrequest0058-0004 103 1/15/2024
0.7.10-pullrequest0057-0002 102 1/15/2024
0.7.9 157 1/15/2024
0.7.9-pullrequest0057-0003 94 1/15/2024
0.7.7 140 1/15/2024
0.7.7-pullrequest0056-0003 114 1/15/2024
0.7.4 150 1/15/2024
0.7.4-pullrequest0055-0012 107 1/15/2024
0.7.4-pullrequest0055-0011 111 1/15/2024
0.7.4-pullrequest0055-0010 111 1/15/2024
0.7.4-pullrequest0055-0009 110 1/15/2024
0.7.4-pullrequest0055-0008 107 1/15/2024
0.7.4-pullrequest0055-0007 114 1/15/2024
0.7.4-pullrequest0054-0005 109 1/15/2024
0.7.4-pullrequest0053-0004 114 1/15/2024
0.7.4-pullrequest0052-0002 95 1/15/2024
0.7.2 140 1/15/2024
0.7.2-pullrequest0051-0013 109 1/15/2024
0.7.2-pullrequest0050-0010 112 1/15/2024
0.7.1 158 1/13/2024
0.7.0 147 1/13/2024
0.7.0-pullrequest0046-0079 121 1/13/2024
0.6.12 178 1/3/2024
0.6.12-pullrequest0045-0018 96 1/13/2024
0.6.12-pullrequest0042-0010 124 1/12/2024
0.6.12-pullrequest0041-0007 121 1/12/2024
0.6.12-pullrequest0039-0002 115 1/3/2024
0.6.10 173 12/22/2023
0.6.10-pullrequest0038-0007 134 1/2/2024
0.6.10-pullrequest0038-0006 124 1/2/2024
0.6.10-pullrequest0038-0005 122 1/2/2024
0.6.8 166 12/21/2023
0.6.6 153 12/18/2023
0.6.6-pullrequest0035-0007 127 12/21/2023
0.6.6-pullrequest0035-0006 122 12/21/2023
0.6.6-pullrequest0035-0005 116 12/21/2023
0.6.3 164 12/18/2023
0.6.3-pullrequest0034-0018 126 12/18/2023
0.6.1 151 12/15/2023
0.6.1-pullrequest0029-0008 121 12/15/2023
0.6.1-pullrequest0028-0006 128 12/15/2023
0.6.1-pullrequest0027-0004 112 12/15/2023
0.5.3 154 12/11/2023
0.5.3-pullrequest0025-0049 124 12/14/2023
0.5.3-pullrequest0025-0047 121 12/14/2023
0.5.3-pullrequest0025-0043 118 12/13/2023
0.5.3-pullrequest0022-0038 117 12/13/2023
0.5.1 126 12/7/2023
0.5.0 130 12/6/2023
0.4.3 143 12/4/2023
0.4.2 133 12/4/2023
0.4.1 141 12/4/2023
0.3.10 145 11/22/2023
0.3.10-pullrequest0022-0008 115 11/27/2023
0.3.10-pullrequest0021-0005 112 11/22/2023
0.3.9 132 11/20/2023
0.3.8 139 11/9/2023
0.3.8-pullrequest0020-0005 109 11/9/2023
0.3.6 140 11/9/2023
0.3.5 133 11/9/2023
0.3.4 128 11/8/2023
0.3.3 136 11/8/2023
0.3.1 129 11/8/2023
0.3.1-pullrequest0018-0004 123 11/8/2023
0.2.1 174 11/2/2023
0.2.1-pullrequest0017-0050 135 11/8/2023
0.2.1-pullrequest0016-0048 136 11/8/2023
0.2.1-pullrequest0015-0045 129 11/8/2023
0.2.1-pullrequest0014-0035 133 11/7/2023
0.2.1-pullrequest0013-0033 125 11/7/2023
0.2.1-pullrequest0012-0031 135 11/7/2023
0.2.1-pullrequest0011-0024 128 11/6/2023
0.2.1-pullrequest0010-0015 146 11/2/2023
0.2.1-pullrequest0009-0011 136 11/2/2023
0.2.1-pullrequest0008-0009 136 11/2/2023
0.2.1-pullrequest0007-0007 148 11/2/2023
0.2.1-pullrequest0006-0005 126 11/2/2023
0.2.1-pullrequest0005-0001 125 11/2/2023
0.1.0 171 10/27/2023
0.1.0-pullrequest0004-0024 141 11/1/2023
0.1.0-pullrequest0003-0022 140 11/1/2023
0.1.0-pullrequest0002-0019 128 11/1/2023
0.1.0-pullrequest0001-0017 139 11/1/2023
0.1.0-pullrequest0001-0010 141 10/30/2023

releasenotes.md