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

releasenotes.md