<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Burak Unuvar</title>
    <description>The latest articles on DEV Community by Burak Unuvar (@mburakunuvar).</description>
    <link>https://dev.to/mburakunuvar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4068530%2F9a7bffd6-21ae-4678-8047-bc7f24bce9e5.jpg</url>
      <title>DEV Community: Burak Unuvar</title>
      <link>https://dev.to/mburakunuvar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mburakunuvar"/>
    <language>en</language>
    <item>
      <title>GPT-5.6 Luna on Foundry: PTU Sizing, PayGo vs. PTU + Spillover Pricing</title>
      <dc:creator>Burak Unuvar</dc:creator>
      <pubDate>Sun, 30 Aug 2026 13:33:25 +0000</pubDate>
      <link>https://dev.to/mburakunuvar/gpt-56-luna-on-foundry-ptu-sizing-paygo-vs-ptu-spillover-pricing-55dk</link>
      <guid>https://dev.to/mburakunuvar/gpt-56-luna-on-foundry-ptu-sizing-paygo-vs-ptu-spillover-pricing-55dk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A quick note before we start: While this article focuses on GPT-5.6 Luna to make the pricing and PTU calculations concrete, the same methodology applies to other models when their model-specific throughput and pricing values are substituted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Provisioned Throughput provides a dedicated, fixed amount of processing capacity exclusively for your model deployment. Unlike Standard/PayGo, it provides a model-specific latency SLA, and its capacity is not shared across tenants.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PTU is a good fit for predictable, sustained traffic with consistent latency and high-throughput requirements.&lt;/li&gt;
&lt;li&gt;PTU quota is model-independent, so the same quota pool can be allocated across supported models. Throughput per PTU remains model- and version-specific.&lt;/li&gt;
&lt;li&gt;PTU quota is granted per subscription, region, and deployment type. Quota in East US does not carry over to West Europe, and Global Provisioned quota does not carry over to Data Zone Provisioned.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PTU Sizing and Estimation
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model and Version&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The model determines which &lt;strong&gt;Input TPM per PTU&lt;/strong&gt; and &lt;strong&gt;output-to-input ratio&lt;/strong&gt; values to use. Each model has a &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/provisioned-throughput-sizing#deployment-parameters-and-throughput-values-by-model" rel="noopener noreferrer"&gt;minimum PTU count and specific PTU throughput&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The provisioned deployment type: &lt;strong&gt;Global Provisioned&lt;/strong&gt;, &lt;strong&gt;Data Zone Provisioned&lt;/strong&gt;, or &lt;strong&gt;Regional Provisioned&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Peak RPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The expected peak number of calls per minute sent to the model.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average prompt size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The average number of input tokens per request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average response size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The average number of output tokens per request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cache rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The percentage of input tokens served from the prompt cache. Cached tokens don't consume any PTU capacity.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;FORMULAS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Input TPM&lt;/code&gt; = &lt;code&gt;Peak RPM&lt;/code&gt; × &lt;code&gt;Average input tokens per request&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Output TPM&lt;/code&gt; = &lt;code&gt;Peak RPM&lt;/code&gt; × &lt;code&gt;Average output tokens per request&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Effective Input TPM&lt;/code&gt; = &lt;code&gt;Input TPM&lt;/code&gt; × (1 - &lt;code&gt;Cache rate&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Normalized TPM&lt;/code&gt; = &lt;code&gt;Effective Input TPM&lt;/code&gt; + (&lt;code&gt;Output-to-input ratio&lt;/code&gt; × &lt;code&gt;Output TPM&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Estimated PTUs&lt;/code&gt; = &lt;code&gt;Normalized TPM&lt;/code&gt; / &lt;code&gt;Input TPM per PTU&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;Input TPM&lt;/code&gt; is the workload-specific calculated volume, whereas &lt;code&gt;Input TPM per PTU&lt;/code&gt; is a model-specific sizing constant. For example, some listed &lt;code&gt;Input TPM per PTU&lt;/code&gt; values are 30,000 for GPT-5.6 Luna, 3,000 for GPT-5.6 Terra, and 1,200 for GPT-5.6 Sol.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Sample Pricing Calculations for GPT-5.6 Luna on Microsoft Foundry
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Representative sample:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's suppose your application sends requests at a peak rate of &lt;strong&gt;1,000 RPM&lt;/strong&gt;, with an average prompt size of &lt;strong&gt;1,200 tokens&lt;/strong&gt; and an average response size of &lt;strong&gt;200 tokens&lt;/strong&gt;, using the &lt;strong&gt;gpt-5.6-luna&lt;/strong&gt; model with a &lt;strong&gt;Global Provisioned&lt;/strong&gt; deployment.&lt;/p&gt;

&lt;p&gt;Based on the &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/provisioned-throughput-sizing#latest-azure-openai-models" rel="noopener noreferrer"&gt;Microsoft Foundry PTU sizing table&lt;/a&gt;, &lt;code&gt;gpt-5.6-luna&lt;/code&gt; has these constants:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPT-5.6 LUNA SIZING CONSTANT&lt;/th&gt;
&lt;th&gt;VALUE&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input TPM per PTU&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;30,000&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output-to-input ratio&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum Global Provisioned deployment&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;15 PTUs&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Global Provisioned scale increment&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5 PTUs&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  1. Without Prompt Caching
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CALCULATION&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Input TPM&lt;/code&gt; = 1,000 × 1,200 = &lt;strong&gt;1,200,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Output TPM&lt;/code&gt; = 1,000 × 200 = &lt;strong&gt;200,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Normalized TPM&lt;/code&gt; = 1,200,000 + (6 × 200,000) = &lt;strong&gt;2,400,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Estimated PTUs&lt;/code&gt; = 2,400,000 / 30,000 = &lt;strong&gt;80 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;PTUs deployed&lt;/code&gt; = &lt;strong&gt;80 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2. With a 50% Prompt-Cache Hit Rate
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CALCULATION&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Input TPM&lt;/code&gt; = 1,000 × 1,200 = &lt;strong&gt;1,200,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Effective Input TPM&lt;/code&gt; = 1,200,000 × (1 - 0.50) = &lt;strong&gt;600,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Output TPM&lt;/code&gt; = 1,000 × 200 = &lt;strong&gt;200,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Normalized TPM&lt;/code&gt; = 600,000 + (6 × 200,000) = &lt;strong&gt;1,800,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Estimated PTUs&lt;/code&gt; = 1,800,000 / 30,000 = &lt;strong&gt;60 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;PTUs deployed&lt;/code&gt; = &lt;strong&gt;60 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Peak RPM&lt;/th&gt;
&lt;th&gt;Prompt size&lt;/th&gt;
&lt;th&gt;Response size&lt;/th&gt;
&lt;th&gt;Cache rate&lt;/th&gt;
&lt;th&gt;Effective Input TPM&lt;/th&gt;
&lt;th&gt;Output TPM&lt;/th&gt;
&lt;th&gt;Normalized TPM&lt;/th&gt;
&lt;th&gt;Estimated PTUs&lt;/th&gt;
&lt;th&gt;PTUs deployed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,200&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;1,200,000&lt;/td&gt;
&lt;td&gt;200,000&lt;/td&gt;
&lt;td&gt;2,400,000&lt;/td&gt;
&lt;td&gt;80.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;80&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,200&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;600,000&lt;/td&gt;
&lt;td&gt;200,000&lt;/td&gt;
&lt;td&gt;1,800,000&lt;/td&gt;
&lt;td&gt;60.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Notes and Remarks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;For this simplified example, each representative prompt is assumed to contain 1,200 tokens. This exceeds the 1,024-token minimum for prompt caching. A cache hit also requires at least the first 1,024 tokens to be identical across requests.&lt;/li&gt;
&lt;li&gt;Prompt caching is also available for Provisioned Throughput deployments. Cached input tokens don't consume PTU capacity. In this example, caching reduces the calculated requirement from &lt;strong&gt;80 PTUs to 60 PTUs&lt;/strong&gt;—a reduction of &lt;strong&gt;20 PTUs (25%)&lt;/strong&gt;. Both values are above the &lt;strong&gt;15-PTU minimum&lt;/strong&gt; and divisible by the &lt;strong&gt;5-PTU scale increment&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;No additional rounding is required in this example. Rounding would be required if an estimate fell below the 15-PTU minimum or between supported 5-PTU increments; for example, 62.4 PTUs would be rounded up to 65 PTUs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Handling Spiky Traffic
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Illustrative 24-Hour RPM Profile and 30-Day Estimate
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Representative sample:&lt;/strong&gt; Let's suppose traffic fluctuates between &lt;strong&gt;0 and 2,500 RPM&lt;/strong&gt; over a typical 24-hour period, with an average input size of &lt;strong&gt;1,200 tokens&lt;/strong&gt; and an average response size of &lt;strong&gt;200 tokens&lt;/strong&gt;, using the &lt;strong&gt;gpt-5.6-luna&lt;/strong&gt; model with a &lt;strong&gt;Global Standard (pay-as-you-go)&lt;/strong&gt; deployment. For the 30-day estimate, this daily traffic profile is assumed to repeat every day.&lt;/p&gt;

&lt;p&gt;We'll also assume that 50% of input tokens are cache reads and the remaining 50% are cache misses. Of all input tokens, 10 percentage points are cache writes, leaving 40 percentage points as regular input that is neither read from nor written to the cache. Prompt caching applies only to input tokens; output tokens are always charged at the regular output-token rate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Illustrative RPM distribution over 24 hours
(RPM changes every 4 hours)

2500 ┤                         ██████
2250 ┤                         ██████
2000 ┤                         ██████  ██████
1750 ┤                         ██████  ██████
1500 ┤                         ██████  ██████
1250 ┤                         ██████  ██████
1000 ┤                 ██████  ██████  ██████  ██████
 750 ┤                 ██████  ██████  ██████  ██████
 500 ┤         ██████  ██████  ██████  ██████  ██████
 250 ┤         ██████  ██████  ██████  ██████  ██████
   0 ┼─────────────────────────────────────────────────
HOUR │ 00–04 │ 04–08 │ 08–12 │ 12–16 │ 16–20 │ 20–24
 RPM │     0 │   500 │ 1,000 │ 2,500 │ 2,000 │ 1,000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  1. PayGo-Only Cost Calculation
&lt;/h2&gt;

&lt;p&gt;For Standard/PayGo rates, as of August 27, 2026, the &lt;a href="https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/" rel="noopener noreferrer"&gt;Azure OpenAI pricing page&lt;/a&gt; lists these USD rates for &lt;code&gt;gpt-5.6-luna&lt;/code&gt; Global Standard:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Meter&lt;/th&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;th&gt;Price per 1M tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Regular input&lt;/td&gt;
&lt;td&gt;&lt;code&gt;P_regular&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cached input&lt;/td&gt;
&lt;td&gt;&lt;code&gt;P_cached&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache writes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;P_write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;&lt;code&gt;P_output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$1.20&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;50% cache reads + 10% cache writes + 40% regular input = 100%&lt;/code&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;RPM&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Requests per minute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;a.i.T&lt;/code&gt;, &lt;code&gt;a.o.T&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Average input and output tokens per request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Hours&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Duration of the batch in hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;r_cached&lt;/code&gt;, &lt;code&gt;r_write&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Cache-read and cache-write rates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C_batch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Total input-and-output token cost for one batch&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Formula&lt;/th&gt;
&lt;th&gt;Calculation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total input tokens&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;T_input&lt;/code&gt; = &lt;code&gt;RPM&lt;/code&gt; × &lt;code&gt;a.i.T&lt;/code&gt; × 60 × &lt;code&gt;Hours&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cached input tokens&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;T_cached&lt;/code&gt; = &lt;code&gt;T_input&lt;/code&gt; × &lt;code&gt;r_cached&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache-write input tokens&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;T_write&lt;/code&gt; = &lt;code&gt;T_input&lt;/code&gt; × &lt;code&gt;r_write&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regular input tokens&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;T_regular&lt;/code&gt; = &lt;code&gt;T_input&lt;/code&gt; - &lt;code&gt;T_cached&lt;/code&gt; - &lt;code&gt;T_write&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total output tokens&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;T_output&lt;/code&gt; = &lt;code&gt;RPM&lt;/code&gt; × &lt;code&gt;a.o.T&lt;/code&gt; × 60 × &lt;code&gt;Hours&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch cost&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;C_batch&lt;/code&gt; = (&lt;code&gt;T_regular&lt;/code&gt;·&lt;code&gt;P_regular&lt;/code&gt; + &lt;code&gt;T_cached&lt;/code&gt;·&lt;code&gt;P_cached&lt;/code&gt; + &lt;code&gt;T_write&lt;/code&gt;·&lt;code&gt;P_write&lt;/code&gt; + &lt;code&gt;T_output&lt;/code&gt;·&lt;code&gt;P_output&lt;/code&gt;) / 1,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each column represents one 4-hour batch on a typical day. The daily traffic profile is assumed to repeat itself for 30 days. Token values are shown in billions (B).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;00–04&lt;/th&gt;
&lt;th&gt;04–08&lt;/th&gt;
&lt;th&gt;08–12&lt;/th&gt;
&lt;th&gt;12–16&lt;/th&gt;
&lt;th&gt;16–20&lt;/th&gt;
&lt;th&gt;20–24&lt;/th&gt;
&lt;th&gt;Total per day&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Batch duration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4 hours&lt;/td&gt;
&lt;td&gt;4 hours&lt;/td&gt;
&lt;td&gt;4 hours&lt;/td&gt;
&lt;td&gt;4 hours&lt;/td&gt;
&lt;td&gt;4 hours&lt;/td&gt;
&lt;td&gt;4 hours&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;24 hours&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_regular&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.05760B&lt;/td&gt;
&lt;td&gt;0.11520B&lt;/td&gt;
&lt;td&gt;0.28800B&lt;/td&gt;
&lt;td&gt;0.23040B&lt;/td&gt;
&lt;td&gt;0.11520B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.80640B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_cached&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.07200B&lt;/td&gt;
&lt;td&gt;0.14400B&lt;/td&gt;
&lt;td&gt;0.36000B&lt;/td&gt;
&lt;td&gt;0.28800B&lt;/td&gt;
&lt;td&gt;0.14400B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.00800B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.01440B&lt;/td&gt;
&lt;td&gt;0.02880B&lt;/td&gt;
&lt;td&gt;0.07200B&lt;/td&gt;
&lt;td&gt;0.05760B&lt;/td&gt;
&lt;td&gt;0.02880B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.20160B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.02400B&lt;/td&gt;
&lt;td&gt;0.04800B&lt;/td&gt;
&lt;td&gt;0.12000B&lt;/td&gt;
&lt;td&gt;0.09600B&lt;/td&gt;
&lt;td&gt;0.04800B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.33600B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C_4-hour batch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;td&gt;$45.36&lt;/td&gt;
&lt;td&gt;$90.72&lt;/td&gt;
&lt;td&gt;$226.80&lt;/td&gt;
&lt;td&gt;$181.44&lt;/td&gt;
&lt;td&gt;$90.72&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$635.04&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;30-day token totals:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regular input (&lt;code&gt;T_regular&lt;/code&gt;): &lt;strong&gt;24.19200B&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Cached input (&lt;code&gt;T_cached&lt;/code&gt;): &lt;strong&gt;30.24000B&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Cache writes (&lt;code&gt;T_write&lt;/code&gt;): &lt;strong&gt;6.04800B&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Output (&lt;code&gt;T_output&lt;/code&gt;): &lt;strong&gt;10.08000B&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Estimated pay-as-you-go cost per day: $635.04.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Estimated cost per 30-day month: $19,051.20.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Estimated cost per 365-day year: $231,789.60.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. PTU + Spillover to PayGo Cost Calculation
&lt;/h2&gt;

&lt;p&gt;The following Sweden Central PTU rates were retrieved on August 27, 2026, using the &lt;a href="https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices" rel="noopener noreferrer"&gt;Azure Retail Prices API&lt;/a&gt;. Sample queries and commands are included in the Appendix as a reference.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Retail API rate&lt;/th&gt;
&lt;th&gt;Monthly equivalent per PTU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hourly PTU&lt;/td&gt;
&lt;td&gt;$1.00/PTU/hour&lt;/td&gt;
&lt;td&gt;$720.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly reservation&lt;/td&gt;
&lt;td&gt;$260.00/PTU/month&lt;/td&gt;
&lt;td&gt;$260.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-year reservation&lt;/td&gt;
&lt;td&gt;$2,652.00/PTU/year&lt;/td&gt;
&lt;td&gt;$221.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;The hourly PTU monthly equivalent assumes 720 hours (30 days).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Hourly, non-reserved PTU is best suited to temporary or uncertain workloads, such as testing, benchmarking, capacity validation, short pilots, or migration exercises.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2.A Provisioned Baseline of 250 RPM
&lt;/h3&gt;

&lt;p&gt;Let's take &lt;strong&gt;250 RPM&lt;/strong&gt; as the provisioned baseline and use Standard/PayGo spillover for bursts above it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CALCULATION&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Input TPM&lt;/code&gt; = 250 × 1,200 = &lt;strong&gt;300,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Effective Input TPM&lt;/code&gt; = 300,000 × (1 - 0.50) = &lt;strong&gt;150,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Output TPM&lt;/code&gt; = 250 × 200 = &lt;strong&gt;50,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Normalized TPM&lt;/code&gt; = 150,000 + (6 × 50,000) = &lt;strong&gt;450,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Estimated PTUs&lt;/code&gt; = 450,000 / 30,000 = &lt;strong&gt;15 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Provisioned baseline&lt;/code&gt; = &lt;strong&gt;15 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Incoming RPM&lt;/th&gt;
&lt;th&gt;Normalized TPM Demand&lt;/th&gt;
&lt;th&gt;15-PTU Capacity (Normalized TPM)&lt;/th&gt;
&lt;th&gt;Potential Spillover Demand&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;00–04&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;04–08&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08–12&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,800,000&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;td&gt;1,350,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12–16&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;4,500,000&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;td&gt;4,050,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16–20&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;3,600,000&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;td&gt;3,150,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20–24&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,800,000&lt;/td&gt;
&lt;td&gt;450,000&lt;/td&gt;
&lt;td&gt;1,350,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Incoming traffic ──▶ 15-PTU deployment (450,000 normalized TPM capacity)
                  X
                  X if throttled (HTTP 429)
                  │
                  └──▶ Automated Spillover to Standard/PayGo deployment if configured 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Spillover is optional and must be configured either for the provisioned deployment or per request. Once configured, Microsoft Foundry automatically routes eligible requests that the provisioned deployment cannot serve—such as requests receiving HTTP 429, 500, or 503—to the associated Standard deployment. Without this configuration, the application must implement its own fallback logic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Provisioned-Capacity Pricing for 15 PTUs
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pricing option&lt;/th&gt;
&lt;th&gt;Retail API rate&lt;/th&gt;
&lt;th&gt;1 PTU/month&lt;/th&gt;
&lt;th&gt;15 PTUs/month&lt;/th&gt;
&lt;th&gt;15 PTUs/day (approx.)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hourly PTU&lt;/td&gt;
&lt;td&gt;$1.00/PTU/hour&lt;/td&gt;
&lt;td&gt;$720.00&lt;/td&gt;
&lt;td&gt;$10,800.00&lt;/td&gt;
&lt;td&gt;$360.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly reservation&lt;/td&gt;
&lt;td&gt;$260.00/PTU/month&lt;/td&gt;
&lt;td&gt;$260.00&lt;/td&gt;
&lt;td&gt;$3,900.00&lt;/td&gt;
&lt;td&gt;$130.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-year reservation&lt;/td&gt;
&lt;td&gt;$2,652.00/PTU/year&lt;/td&gt;
&lt;td&gt;$221.00&lt;/td&gt;
&lt;td&gt;$3,315.00&lt;/td&gt;
&lt;td&gt;$108.99&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Monthly cost of a &lt;strong&gt;yearly PTU reservation&lt;/strong&gt; is an approximate equivalent calculated by dividing the annual price by 12.&lt;/p&gt;

&lt;p&gt;Daily cost of a &lt;strong&gt;yearly PTU reservation&lt;/strong&gt; is an approximate equivalent calculated by dividing the annual price by 365.&lt;/p&gt;

&lt;p&gt;Daily cost of &lt;strong&gt;monthly PTU reservation&lt;/strong&gt; is a rough estimation calculated by dividing the monthly price by 30.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Monthly Reserved PTU + PayGo Spillover Pricing
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;00–04&lt;/th&gt;
&lt;th&gt;04–08&lt;/th&gt;
&lt;th&gt;08–12&lt;/th&gt;
&lt;th&gt;12–16&lt;/th&gt;
&lt;th&gt;16–20&lt;/th&gt;
&lt;th&gt;20–24&lt;/th&gt;
&lt;th&gt;Daily total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Incoming RPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Estimated spillover RPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;250&lt;/td&gt;
&lt;td&gt;750&lt;/td&gt;
&lt;td&gt;2,250&lt;/td&gt;
&lt;td&gt;1,750&lt;/td&gt;
&lt;td&gt;750&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_regular&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.02880B&lt;/td&gt;
&lt;td&gt;0.08640B&lt;/td&gt;
&lt;td&gt;0.25920B&lt;/td&gt;
&lt;td&gt;0.20160B&lt;/td&gt;
&lt;td&gt;0.08640B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.66240B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_cached&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.03600B&lt;/td&gt;
&lt;td&gt;0.10800B&lt;/td&gt;
&lt;td&gt;0.32400B&lt;/td&gt;
&lt;td&gt;0.25200B&lt;/td&gt;
&lt;td&gt;0.10800B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.82800B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.00720B&lt;/td&gt;
&lt;td&gt;0.02160B&lt;/td&gt;
&lt;td&gt;0.06480B&lt;/td&gt;
&lt;td&gt;0.05040B&lt;/td&gt;
&lt;td&gt;0.02160B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.16560B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.01200B&lt;/td&gt;
&lt;td&gt;0.03600B&lt;/td&gt;
&lt;td&gt;0.10800B&lt;/td&gt;
&lt;td&gt;0.08400B&lt;/td&gt;
&lt;td&gt;0.03600B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.27600B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C_PTU reservation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$21.67&lt;/td&gt;
&lt;td&gt;$21.67&lt;/td&gt;
&lt;td&gt;$21.67&lt;/td&gt;
&lt;td&gt;$21.67&lt;/td&gt;
&lt;td&gt;$21.67&lt;/td&gt;
&lt;td&gt;$21.67&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$130.00&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C_PayGo spillover&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;td&gt;$22.68&lt;/td&gt;
&lt;td&gt;$68.04&lt;/td&gt;
&lt;td&gt;$204.12&lt;/td&gt;
&lt;td&gt;$158.76&lt;/td&gt;
&lt;td&gt;$68.04&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$521.64&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;C_PTU + spillover&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$21.67&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$44.35&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$89.71&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$225.79&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$180.43&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$89.71&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$651.64&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Daily estimate using a monthly reservation:&lt;/strong&gt; The $3,900 monthly PTU reservation amortizes to &lt;strong&gt;$130.00 per day&lt;/strong&gt; over a 30-day month. Estimated PayGo spillover is &lt;strong&gt;$521.64 per day&lt;/strong&gt;, for a combined daily estimate of &lt;strong&gt;$651.64&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;30-day estimate using a monthly reservation:&lt;/strong&gt; PTU reservation &lt;strong&gt;$3,900.00&lt;/strong&gt;; PayGo spillover &lt;strong&gt;$15,649.20&lt;/strong&gt;; combined cost &lt;strong&gt;$19,549.20&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;365-day estimate using a one-year reservation:&lt;/strong&gt; PTU reservation &lt;strong&gt;$39,780.00&lt;/strong&gt;; PayGo spillover &lt;strong&gt;$190,398.60&lt;/strong&gt;; combined cost &lt;strong&gt;$230,178.60&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Interval amounts are rounded independently. Daily and longer-term totals are calculated using unrounded values. Actual throughput and costs can vary with request concurrency, token-length distribution, caching behavior, model version, regional pricing, and throttling characteristics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2.B Provisioned Baseline of 500 RPM
&lt;/h3&gt;

&lt;p&gt;Let's take &lt;strong&gt;500 RPM&lt;/strong&gt; as the provisioned baseline and use Standard/PayGo spillover for bursts above it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CALCULATION&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Input TPM&lt;/code&gt; = 500 × 1,200 = &lt;strong&gt;600,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Effective Input TPM&lt;/code&gt; = 600,000 × (1 - 0.50) = &lt;strong&gt;300,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Output TPM&lt;/code&gt; = 500 × 200 = &lt;strong&gt;100,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Normalized TPM&lt;/code&gt; = 300,000 + (6 × 100,000) = &lt;strong&gt;900,000&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Estimated PTUs&lt;/code&gt; = 900,000 / 30,000 = &lt;strong&gt;30 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Provisioned baseline&lt;/code&gt; = &lt;strong&gt;30 PTUs&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Incoming RPM&lt;/th&gt;
&lt;th&gt;Normalized TPM Demand&lt;/th&gt;
&lt;th&gt;30-PTU Capacity (Normalized TPM)&lt;/th&gt;
&lt;th&gt;Potential Spillover Demand&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;00–04&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;04–08&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08–12&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,800,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12–16&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;4,500,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;3,600,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16–20&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;3,600,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;2,700,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20–24&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,800,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;td&gt;900,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Incoming traffic ──▶ 30-PTU deployment (900,000 normalized TPM capacity)
                  X
                  X if throttled (HTTP 429)
                  │
                  └──▶ Automated Spillover to Standard/PayGo deployment if configured 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Spillover is optional and must be configured either for the provisioned deployment or per request. Once configured, Microsoft Foundry automatically routes eligible requests that the provisioned deployment cannot serve—such as requests receiving HTTP 429, 500, or 503—to the associated Standard deployment. Without this configuration, the application must implement its own fallback logic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Provisioned-Capacity Pricing for 30 PTUs
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pricing option&lt;/th&gt;
&lt;th&gt;Retail API rate&lt;/th&gt;
&lt;th&gt;1 PTU/month&lt;/th&gt;
&lt;th&gt;30 PTUs/month&lt;/th&gt;
&lt;th&gt;30 PTUs/day (approx.)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hourly PTU&lt;/td&gt;
&lt;td&gt;$1.00/PTU/hour&lt;/td&gt;
&lt;td&gt;$720.00&lt;/td&gt;
&lt;td&gt;$21,600.00&lt;/td&gt;
&lt;td&gt;$720.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly reservation&lt;/td&gt;
&lt;td&gt;$260.00/PTU/month&lt;/td&gt;
&lt;td&gt;$260.00&lt;/td&gt;
&lt;td&gt;$7,800.00&lt;/td&gt;
&lt;td&gt;$260.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-year reservation&lt;/td&gt;
&lt;td&gt;$2,652.00/PTU/year&lt;/td&gt;
&lt;td&gt;$221.00&lt;/td&gt;
&lt;td&gt;$6,630.00&lt;/td&gt;
&lt;td&gt;$217.97&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Monthly cost of a &lt;strong&gt;yearly PTU reservation&lt;/strong&gt; is an approximate equivalent calculated by dividing the annual price by 12.&lt;/p&gt;

&lt;p&gt;Daily cost of a &lt;strong&gt;yearly PTU reservation&lt;/strong&gt; is an approximate equivalent calculated by dividing the annual price by 365.&lt;/p&gt;

&lt;p&gt;Daily cost of &lt;strong&gt;monthly PTU reservation&lt;/strong&gt; is a rough estimation calculated by dividing the monthly price by 30.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Monthly Reserved PTU + PayGo Spillover Pricing
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;00–04&lt;/th&gt;
&lt;th&gt;04–08&lt;/th&gt;
&lt;th&gt;08–12&lt;/th&gt;
&lt;th&gt;12–16&lt;/th&gt;
&lt;th&gt;16–20&lt;/th&gt;
&lt;th&gt;20–24&lt;/th&gt;
&lt;th&gt;Daily total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Incoming RPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Estimated spillover RPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;1,500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_regular&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.05760B&lt;/td&gt;
&lt;td&gt;0.23040B&lt;/td&gt;
&lt;td&gt;0.17280B&lt;/td&gt;
&lt;td&gt;0.05760B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.51840B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_cached&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.07200B&lt;/td&gt;
&lt;td&gt;0.28800B&lt;/td&gt;
&lt;td&gt;0.21600B&lt;/td&gt;
&lt;td&gt;0.07200B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.64800B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.01440B&lt;/td&gt;
&lt;td&gt;0.05760B&lt;/td&gt;
&lt;td&gt;0.04320B&lt;/td&gt;
&lt;td&gt;0.01440B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.12960B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T_output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0.02400B&lt;/td&gt;
&lt;td&gt;0.09600B&lt;/td&gt;
&lt;td&gt;0.07200B&lt;/td&gt;
&lt;td&gt;0.02400B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.21600B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C_PTU reservation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$43.33&lt;/td&gt;
&lt;td&gt;$43.33&lt;/td&gt;
&lt;td&gt;$43.33&lt;/td&gt;
&lt;td&gt;$43.33&lt;/td&gt;
&lt;td&gt;$43.33&lt;/td&gt;
&lt;td&gt;$43.33&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$260.00&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C_PayGo spillover&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;td&gt;$45.36&lt;/td&gt;
&lt;td&gt;$181.44&lt;/td&gt;
&lt;td&gt;$136.08&lt;/td&gt;
&lt;td&gt;$45.36&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$408.24&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;C_PTU + spillover&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$43.33&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$43.33&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$88.69&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$224.77&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$179.41&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$88.69&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$668.24&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Daily estimate using a monthly reservation:&lt;/strong&gt; The $7,800 monthly PTU reservation amortizes to &lt;strong&gt;$260.00 per day&lt;/strong&gt; over a 30-day month. Estimated PayGo spillover is &lt;strong&gt;$408.24 per day&lt;/strong&gt;, producing a combined daily estimate of &lt;strong&gt;$668.24&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;30-day estimate using a monthly reservation:&lt;/strong&gt; PTU reservation &lt;strong&gt;$7,800.00&lt;/strong&gt;; PayGo spillover &lt;strong&gt;$12,247.20&lt;/strong&gt;; combined cost &lt;strong&gt;$20,047.20&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;365-day estimate using a one-year reservation:&lt;/strong&gt; PTU reservation &lt;strong&gt;$79,560.00&lt;/strong&gt;; PayGo spillover &lt;strong&gt;$149,007.60&lt;/strong&gt;; combined cost &lt;strong&gt;$228,567.60&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Interval amounts are rounded independently. Daily and longer-term totals are calculated using unrounded values. Actual throughput and costs can vary with request concurrency, token-length distribution, caching behavior, model version, regional pricing, and throttling characteristics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  PayGo Only vs. 15 PTUs + PayGo Spillover vs. 30 PTUs + PayGo Spillover
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Period and pricing basis&lt;/th&gt;
&lt;th&gt;PayGo only&lt;/th&gt;
&lt;th&gt;250-RPM baseline (15 PTUs) + spillover&lt;/th&gt;
&lt;th&gt;Difference vs. PayGo&lt;/th&gt;
&lt;th&gt;500-RPM baseline (30 PTUs) + spillover&lt;/th&gt;
&lt;th&gt;Difference vs. PayGo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Daily — monthly reservation&lt;/td&gt;
&lt;td&gt;$635.04&lt;/td&gt;
&lt;td&gt;$651.64&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+$16.60 (+2.61%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$668.24&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+$33.20 (+5.23%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30-day month — monthly reservation&lt;/td&gt;
&lt;td&gt;$19,051.20&lt;/td&gt;
&lt;td&gt;$19,549.20&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+$498.00 (+2.61%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$20,047.20&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+$996.00 (+5.23%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;365-day year — one-year reservation&lt;/td&gt;
&lt;td&gt;$231,789.60&lt;/td&gt;
&lt;td&gt;$230,178.60&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−$1,611.00 (−0.70%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$228,567.60&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−$3,222.00 (−1.39%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;With monthly reservation pricing, PayGo-only is the least expensive option. The 250-RPM baseline costs $498.00 more per 30-day month, while the 500-RPM baseline costs $996.00 more.&lt;/p&gt;

&lt;p&gt;With one-year reservation pricing, the result reverses. The 250-RPM baseline saves $1,611.00 per year relative to PayGo-only, while the 500-RPM baseline saves $3,222.00 per year. Under this representative traffic profile, the 500-RPM baseline therefore provides the lowest annual cost of the three options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Key Takeaway
&lt;/h3&gt;

&lt;p&gt;If cost is the primary objective, use PTUs to cover the workload's stable, sustained baseline and route variable or burst traffic to PayGo. Avoid reserving PTUs for capacity that may remain idle; each additional PTU block should save more in PayGo charges than it costs to reserve.&lt;/p&gt;

&lt;p&gt;That said, cost is not the only objective of PTUs. A correctly sized provisioned deployment also provides dedicated throughput, more predictable latency, a defined latency SLA, and more consistent benchmark results than shared PayGo capacity. The best choice therefore depends on both economics and performance requirements.&lt;/p&gt;




&lt;h2&gt;
  
  
  Billing and Reservation: Some Lessons Learnt by Blood
&lt;/h2&gt;

&lt;p&gt;You are billed on PTUs deployed, not tokens processed: an idle deployment costs exactly the same as a saturated one. Deployments cannot be paused, so under hourly billing, charges stop only when the deployment is deleted.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hourly billing&lt;/strong&gt; charges per PTU per hour, prorated for partial hours. Use it for benchmarking, evaluation, and short-lived capacity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Reservations&lt;/strong&gt; discount the effective PTU rate for a one-month or one-year commitment. This is the intended mode for sustained production workloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reservations and deployments are created independently, with two consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A reservation is a &lt;strong&gt;billing discount, not a capacity guarantee&lt;/strong&gt;. Create the deployment first to confirm capacity exists, then reserve the PTUs you actually deployed.&lt;/li&gt;
&lt;li&gt;If that deployment is later scaled down or deleted, the reservation keeps billing its original quantity. Deployed PTUs below it become unused coverage; PTUs above it bill at the hourly rate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scaling down also releases capacity back to the regional pool with no guarantee of reclaiming it, so cycling a production deployment up and down is a poor cost-control strategy. A reservation on a steady deployment is usually cheaper and safer.&lt;/p&gt;




&lt;h2&gt;
  
  
  References and Further Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/provisioned-throughput" rel="noopener noreferrer"&gt;Provisioned Throughput for Foundry Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/provisioned-throughput-sizing" rel="noopener noreferrer"&gt;Determine PTU sizing for a workload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/provisioned-throughput-billing" rel="noopener noreferrer"&gt;Provisioned Throughput billing and cost management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/spillover-traffic-management" rel="noopener noreferrer"&gt;Manage traffic with spillover&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://techcommunity.microsoft.com/blog/StartupsatMicrosoftBlog/azure-ai-foundry-from-zero-to-production/4542960" rel="noopener noreferrer"&gt;Azure AI Foundry: from zero to production&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Appendix
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How to Query the Pricing API for This Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
    curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;filter=productName%20eq%20%27Azure%20OpenAI%27%20and%20armRegionName%20eq%20%27swedencentral%27"&lt;/span&gt;

    curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;filter=productName%20eq%20%27Azure%20AI%20Foundry%20Provisioned%20Throughput%20Reservation%27%20and%20armRegionName%20eq%20%27swedencentral%27"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; | jq &lt;span class="nt"&gt;-rs&lt;/span&gt; &lt;span class="s1"&gt;'
    ["Pricing option", "USD / PTU", "Reservation term"],
    (
        .[].Items[]
        | select(.skuName == "Provisioned Managed Global")
        | [
                (if .reservationTerm == null
                 then "Hourly"
                 else .reservationTerm
                 end),
                .retailPrice,
                (.reservationTerm // "None")
            ]
    )
    | @tsv'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>azure</category>
      <category>ai</category>
      <category>foundry</category>
      <category>ptu</category>
    </item>
    <item>
      <title>FireConnect Open Models from MS Foundry to GH Copilot, or any other AI Coding Harness</title>
      <dc:creator>Burak Unuvar</dc:creator>
      <pubDate>Sun, 16 Aug 2026 21:37:19 +0000</pubDate>
      <link>https://dev.to/mburakunuvar/fireconnect-open-models-from-ms-foundry-to-gh-copilot-21jd</link>
      <guid>https://dev.to/mburakunuvar/fireconnect-open-models-from-ms-foundry-to-gh-copilot-21jd</guid>
      <description>&lt;p&gt;❓ Impressed by the latest open-source model benchmarks and eager to use those models in GitHub Copilot?&lt;/p&gt;

&lt;p&gt;❓ Using several AI coding tools and tired of configuring bring-your-own-key (BYOK) access separately in each one?&lt;/p&gt;

&lt;p&gt;🔥 &lt;strong&gt;&lt;a href="https://docs.fireworks.ai/ecosystem/fireconnect/overview" rel="noopener noreferrer"&gt;FireConnect&lt;/a&gt;&lt;/strong&gt; is an open-source CLI that connects agentic coding tools to open-source model families such as Llama, Qwen, DeepSeek, Kimi, and GLM.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  

&lt;p&gt;&lt;strong&gt;💡 A reminder about native GH Copilot models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At the time of writing, GitHub Copilot already supports 30 models, including &lt;a href="https://github.blog/changelog/2026-08-06-kimi-k3-is-now-available-in-github-copilot/" rel="noopener noreferrer"&gt;open models such as Kimi K3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FireConnect becomes useful when you want:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Faster access to an expanding range of models&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One configuration pattern across coding tools (GitHub Copilot, Claude Code, Cursor)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install once, sign in once, then flip any supported harness on or off without hand-editing config files&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;


&lt;h2&gt;
  
  
  What is Fireworks and FireConnect?
&lt;/h2&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;a href="https://fireworks.ai/models" rel="noopener noreferrer"&gt;Fireworks AI&lt;/a&gt;&lt;/strong&gt; is a high-performance inference and fine-tuning platform focused on open-source models such as Llama, Qwen, DeepSeek, Kimi, and GLM.&lt;/p&gt;

&lt;p&gt;💡 Microsoft announced Fireworks AI as an &lt;a href="https://azure.microsoft.com/en-us/blog/introducing-fireworks-ai-on-microsoft-foundry-bringing-high-performance-low-latency-open-model-inference-to-azure" rel="noopener noreferrer"&gt;official first-party inference provider inside Foundry&lt;/a&gt; in March 2026.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;a href="https://github.com/fw-ai/fireconnect" rel="noopener noreferrer"&gt;FireConnect&lt;/a&gt;&lt;/strong&gt; is the bridge between your AI coding harness and the model ecosystem, letting you plug in models your tool does not natively offer without changing how you work.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤔 Wait, aren't open models already available on Foundry?
&lt;/h3&gt;

&lt;p&gt;Yes, Microsoft Foundry already offers a rich catalog of models, including open source models &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure" rel="noopener noreferrer"&gt;sold directly by Azure&lt;/a&gt;. Fireworks provides an alternative inference path for many of those models at a quicker pace. Fireworks brings its own rapidly evolving catalog backed by an optimized inference platform that's directly integrated into Foundry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some examples:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Direct from Azure&lt;/th&gt;
&lt;th&gt;Via Fireworks on Foundry&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kimi K3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GLM 5.2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kimi K2.7 Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek V4 Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🤔 Looks like just another way of Bring Your Own Key (BYOK), do I really need FireConnect ?
&lt;/h3&gt;

&lt;p&gt;If you only need a custom model for GH Copilot CLI or GH Copilot inside VS Code, BYOK is more than enough and works great! &lt;/p&gt;

&lt;p&gt;FireConnect becomes much more interesting when you use multiple AI coding harnesses—such as GitHub Copilot, Cursor, Claude Code, Codex, or others—and want a more consistent way to connect and route them to models available through Fireworks AI. Instead of configuring every harness independently against different model-provider interfaces, FireConnect provides a common integration layer across supported tools.&lt;/p&gt;

&lt;p&gt;FireConnect will fit in perfectly when you need a &lt;strong&gt;single control plane&lt;/strong&gt; across multiple AI coding tools such as GH Copilot, Cursor, Claude Code and others. &lt;/p&gt;

&lt;blockquote&gt;

&amp;nbsp; &lt;h3&gt;When to Use Which Approach?&lt;/h3&gt;

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Use-Case&lt;/th&gt;
&lt;th&gt;Built-in providers and Extensions&lt;/th&gt;
&lt;th&gt;Custom Endpoint with FireConnect&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use a single model in VS Code chat&lt;/td&gt;
&lt;td&gt;✅ Just add your key and go&lt;/td&gt;
&lt;td&gt;Works, but overkill for this&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use the same Fireworks models across Copilot, Cline, Continue, etc.&lt;/td&gt;
&lt;td&gt;❌ Set up each tool separately&lt;/td&gt;
&lt;td&gt;✅ One setup — toggle harnesses on/off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Get Fireworks latency and routing out of the box&lt;/td&gt;
&lt;td&gt;❌ Generic endpoint, you're on your own&lt;/td&gt;
&lt;td&gt;✅ Built for Fireworks, tuned for their infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Get your whole team on the same model config&lt;/td&gt;
&lt;td&gt;❌ Everyone sets it up manually&lt;/td&gt;
&lt;td&gt;✅ Shared config that anyone can reproduce&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.fireworks.ai/ecosystem/fireconnect/claude-code" rel="noopener noreferrer"&gt;FireConnect&lt;/a&gt; provides technical integration between Claude Code and Fireworks models through an Anthropic-compatible endpoint. But, this is not an Anthropic-endorsed configuration, and &lt;a href="https://code.claude.com/docs/en/llm-gateway" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt; does not provide support for routing Claude Code to non-Claude models through third-party gateways.&lt;/p&gt;

&lt;p&gt;So maybe as a fun fact we can say:&lt;/p&gt;

&lt;p&gt;Claude Code can technically be configured to go outside the Claude family to make most out of open weighted models, but Anthropic currently doesn't like this 😁&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An active Azure subscription with the Fireworks integration enabled. See the &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/how-to/fireworks/enable-fireworks-models#enable-fireworks-on-foundry" rel="noopener noreferrer"&gt;Fireworks on Foundry setup guide&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Microsoft Foundry project and a deployment of your preferred open-weight model from the &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/how-to/fireworks/enable-fireworks-models#available-catalog-models" rel="noopener noreferrer"&gt;Fireworks model catalog&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Set Up the Foundry Resource and Project
&lt;/h3&gt;

&lt;p&gt;Before running the Azure CLI commands, create a local &lt;code&gt;.env&lt;/code&gt; file in the repository root. These variables are used by the commands below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
RESOURCE_GROUP=my-fireconnect-rg

AZURE_REGION=eastus

FOUNDRY_RESOURCE_NAME=my-fireconnect-foundry

PROJECT_NAME=my-fireconnect-project

MODEL_NAME=FW-GLM-5.2

BASE_URL=https://&amp;lt;your-resource-name&amp;gt;.services.ai.azure.com/

AZURE_API_KEY=your_key

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# Load the variables into your current Bash session.&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt;

&lt;span class="nb"&gt;source&lt;/span&gt; .env

&lt;span class="nb"&gt;set&lt;/span&gt; +a

&lt;span class="c"&gt;# create the resource group&lt;/span&gt;

az group create &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RESOURCE_GROUP&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$AZURE_REGION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Create the Microsoft Foundry resource.&lt;/span&gt;

az cognitiveservices account create &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FOUNDRY_RESOURCE_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--resource-group&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RESOURCE_GROUP&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$AZURE_REGION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--kind&lt;/span&gt; AIServices &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--sku&lt;/span&gt; S0 &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--custom-domain&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FOUNDRY_RESOURCE_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--yes&lt;/span&gt;

&lt;span class="c"&gt;# Create the Microsoft Foundry project.&lt;/span&gt;

az cognitiveservices account project create &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--project-name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PROJECT_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FOUNDRY_RESOURCE_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--resource-group&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RESOURCE_GROUP&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$AZURE_REGION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Deploy a Fireworks Model on Foundry
&lt;/h3&gt;

&lt;p&gt;Model benchmarks evolve frequently. For this example, I’ll use GLM-5.2 from Z.ai, which ranked among the strongest open-weight coding models in recent evaluations. See the &lt;a href="https://emergent.sh/learn/glm-5-2-benchmark" rel="noopener noreferrer"&gt;GLM-5.2 benchmark analysis&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# Inspect the model format.&lt;/span&gt;

&lt;span class="nv"&gt;MODEL_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"FW-GLM-5.2"&lt;/span&gt;

&lt;span class="nv"&gt;MODEL_INFO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;az cognitiveservices account list-models &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FOUNDRY_RESOURCE_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--resource-group&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RESOURCE_GROUP&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; | jq &lt;span class="nt"&gt;--arg&lt;/span&gt; MODEL &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$MODEL_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s1"&gt;'.[] | select(.name == $MODEL)'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$MODEL_INFO&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Deploy the model.&lt;/span&gt;

az cognitiveservices account deployment create &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--resource-group&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RESOURCE_GROUP&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FOUNDRY_RESOURCE_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--deployment-name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$MODEL_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--model-format&lt;/span&gt; &lt;span class="s2"&gt;"Fireworks"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--model-name&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$MODEL_NAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--model-version&lt;/span&gt; &lt;span class="s2"&gt;"1"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--sku-name&lt;/span&gt; &lt;span class="s2"&gt;"DataZoneStandard"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--sku-capacity&lt;/span&gt; 100

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Install, Upgrade, and Configure FireConnect
&lt;/h3&gt;

&lt;p&gt;Install FireConnect, then configure its global VS Code settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# Install FireConnect.&lt;/span&gt;

curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw&lt;span class="se"&gt;\.&lt;/span&gt;githubusercontent.com/fw-ai/fireconnect/main/install.sh | bash

fireconnect upgrade

&lt;span class="c"&gt;# Configure the global FireConnect settings.&lt;/span&gt;

fireconnect configure &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--provider&lt;/span&gt; azure &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--base-url&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BASE_URL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--api-key&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$AZURE_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

fireconnect vscode on &lt;span class="nt"&gt;--model&lt;/span&gt; FW-GLM-5.2

fireconnect vscode status

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start or restart VS Code, open Copilot Chat, and pick a Fireworks model from the model picker.&lt;/p&gt;

&lt;p&gt;For one-off routing without changing the global configuration, pass your Foundry model with &lt;code&gt;--model&lt;/code&gt; (for example, &lt;code&gt;FW-GLM-5.2&lt;/code&gt;), not a Fireworks serverless short ID.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
fireconnect vscode on &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--azure&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--base-url&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BASE_URL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;

&amp;nbsp; &lt;span class="nt"&gt;--model&lt;/span&gt; FW-GLM-5.2

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To disable or uninstall FireConnect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# Disable FireConnect for VS Code.&lt;/span&gt;

fireconnect vscode off

&lt;span class="c"&gt;# Uninstall FireConnect for VS Code.&lt;/span&gt;

fireconnect uninstall 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;/p&gt;
  🔐 BYOK in Depth
  &lt;h2&gt;
  
  
  BYOK IN DEPTH
&lt;/h2&gt;

&lt;p&gt;Bring your own key (BYOK) allows you to use Copilot with models of your choice: local or hosted by an external provider. GitHub Copilot supports BYOK at two levels:&lt;/p&gt;



&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Enterprise BYOK&lt;/th&gt;
&lt;th&gt;Local BYOK&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Who configures it&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enterprise / Org owner&lt;/td&gt;
&lt;td&gt;Individual developer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Where keys live&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Server-side (GitHub)&lt;/td&gt;
&lt;td&gt;Client-side only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Copilot license needed?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Works offline / air-gapped?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;

&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&amp;nbsp;Local BYOK works across multiple surfaces:&lt;/p&gt;



&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;VS Code&lt;/th&gt;
&lt;th&gt;JetBrains IDEs&lt;/th&gt;
&lt;th&gt;Xcode&lt;/th&gt;
&lt;th&gt;Copilot CLI&lt;/th&gt;
&lt;th&gt;GitHub Copilot App&lt;/th&gt;
&lt;th&gt;Copilot SDK&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ GA&lt;/td&gt;
&lt;td&gt;✅ Public preview&lt;/td&gt;
&lt;td&gt;✅ Public preview&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;/tr&gt;

&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;BYOK to GH Copilot in VS Code and FireConnect&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://code.visualstudio.com/docs/agent-customization/language-models#_bring-your-own-language-model-key" rel="noopener noreferrer"&gt;VS Code offers different ways to add language models:&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;



&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Provider option&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Built-in providers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The provider is already listed (Azure, Anthropic, Gemini, OpenAI, and others)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Extensions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A marketplace extension provides the model (e.g., AI Toolkit for local models)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom endpoint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You have a self-hosted or enterprise endpoint that speaks Chat Completions, Responses, or Messages API&lt;/td&gt;
&lt;/tr&gt;

&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;💡 &lt;strong&gt;FireConnect&lt;/strong&gt; is configured through &lt;strong&gt;custom endpoints&lt;/strong&gt;.&lt;/p&gt;





&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  📚 References
  &lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;1. &lt;a href="https://docs.fireworks.ai/ecosystem/fireconnect/overview" rel="noopener noreferrer"&gt;FireConnect overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2. &lt;a href="https://github.blog/changelog/2026-08-06-kimi-k3-is-now-available-in-github-copilot/" rel="noopener noreferrer"&gt;GitHub Copilot model availability&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3. &lt;a href="https://fireworks.ai/models" rel="noopener noreferrer"&gt;Fireworks AI model catalog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4. &lt;a href="https://azure.microsoft.com/en-us/blog/introducing-fireworks-ai-on-microsoft-foundry-bringing-high-performance-low-latency-open-model-inference-to-azure" rel="noopener noreferrer"&gt;Fireworks AI on Microsoft Foundry&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5. &lt;a href="https://github.com/fw-ai/fireconnect" rel="noopener noreferrer"&gt;FireConnect GitHub repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6. &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure" rel="noopener noreferrer"&gt;Models sold directly by Azure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7. &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/how-to/fireworks/enable-fireworks-models#enable-fireworks-on-foundry" rel="noopener noreferrer"&gt;Enable Fireworks models on Foundry&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8. &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/how-to/fireworks/enable-fireworks-models#available-catalog-models" rel="noopener noreferrer"&gt;Available Fireworks catalog models&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9. &lt;a href="https://emergent.sh/learn/glm-5-2-benchmark" rel="noopener noreferrer"&gt;GLM-5.2 benchmark analysis&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10. &lt;a href="https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh" rel="noopener noreferrer"&gt;FireConnect installer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11. &lt;a href="https://code.visualstudio.com/docs/agent-customization/language-models#_bring-your-own-language-model-key" rel="noopener noreferrer"&gt;VS Code BYOK language models&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;12. &lt;a href="https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models#supported-providers" rel="noopener noreferrer"&gt;GitHub Copilot CLI BYOK providers&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>llm</category>
      <category>fireworks</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>GitHub Agentic Workflows for Guardrailed Automation</title>
      <dc:creator>Burak Unuvar</dc:creator>
      <pubDate>Sat, 08 Aug 2026 22:27:11 +0000</pubDate>
      <link>https://dev.to/mburakunuvar/github-agentic-workflows-your-octopus-students-for-controlled-automation-3ma8</link>
      <guid>https://dev.to/mburakunuvar/github-agentic-workflows-your-octopus-students-for-controlled-automation-3ma8</guid>
      <description>&lt;p&gt;❓ Have you found your self orchestrating multiple coding agents across different harnesses, screens, surfaces? How many at most can you track and monitor simultaneously?  😫&lt;/p&gt;

&lt;p&gt;❓ Did you ever give up on approving permission asks and started running all of them on YOLO mode ? Please try not to do that, at least not in production, agents can easily get out control and dangerous! 😱&lt;/p&gt;

&lt;p&gt;Although I love all the magic and efficiency AI Coding Tools are bringing to my life, I'm a bit overwhelmed recently, trying to achieve tens maybe hundreds of tasks! Some really deserve my full attention and active steering to achieve the best possible outcome, while for most, the judgement of a model is more than enough. &lt;/p&gt;

&lt;p&gt;In order to bring intelligent and controlled automation to my Github Repositories, I hired octopus students 🐙 🐙 🐙   &lt;/p&gt;

&lt;p&gt;GitHub Agentic Workflows(GH-AW). &lt;/p&gt;

&lt;h2&gt;
  
  
  What is GH-AW?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: &lt;a href="github/gh-aw:%20GitHub%20Agentic%20Workflows"&gt;GitHub Agentic Workflows&amp;nbsp;a.k.a. GH-AW&lt;/a&gt; is an open-source&amp;nbsp;GitHub CLI&amp;nbsp;extension developed by&amp;nbsp;GitHub. It is announced in February 2026 by GitHub Next and Microsoft Research, still in public preview but already widely adopted by Microsoft itself as well as many other organizations. &lt;/p&gt;

&lt;p&gt;GH-AW enables running the coding agents you know and love such as GitHub Copilot, Claude Code, OpenAI Codex, or Google Gemini in GitHub Actions. Consider them as intelligent systems embedded directly into your CI/CD 💡 They all run within pre-defined guardrails, using safe outputs and sandboxed execution. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fun2er2c5ilmnpippmjnn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fun2er2c5ilmnpippmjnn.jpg" alt="intro-ghaw" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of the use cases are :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repository Maintenance with Issue Triages, PRs Reviews
&lt;/li&gt;
&lt;li&gt;Continuous Documentation maintenance and consistency&lt;/li&gt;
&lt;li&gt;Metrics &amp;amp; Analytics for daily reports and workflow health monitoring&lt;/li&gt;
&lt;li&gt;Test improvements, CI failure diagnosis, quality checks
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hmm, what does it really address ?
&lt;/h3&gt;

&lt;p&gt;👍 Do you want to gather daily activity data, analyze all the PRs and issues, check workflow results, and creates status report in form of issues ? Enable &lt;a href="https://github.com/githubnext/agentics/blob/main/docs/repo-status.md" rel="noopener noreferrer"&gt;Daily Repo Status&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👍 Do you want to automatically assign issues labeled &lt;code&gt;cookie&lt;/code&gt; to the Copilot coding agent every 30 minutes? Enable &lt;a href="https://github.com/githubnext/agentics/blob/main/docs/issue-monster.md" rel="noopener noreferrer"&gt;Issue Monster&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Above are only two examples from a sample family of reusable pre-baked workflows maintained by Github Next, called &lt;a href="https://github.com/githubnext/agentics" rel="noopener noreferrer"&gt;agentics&lt;/a&gt;. There're plenty of interesting ones such as CI Doctor to Monitor CI workflows or  Grumpy Reviewer for On-demand opinionated code review by a grumpy but thorough senior developer. &lt;/p&gt;

&lt;h3&gt;
  
  
  These may be useful, what else ?
&lt;/h3&gt;

&lt;p&gt;👍  Do you have an automation in mind that you could describe entirely in natural language?  Then you can create custom agentic workflows for that !&lt;/p&gt;

&lt;p&gt;Whether it’s fixing a simple bug, creating and running tests on a schedule, fetching data from the web to keep your documentation up to date, or something entirely different. &lt;/p&gt;

&lt;h3&gt;
  
  
  How does it work ?
&lt;/h3&gt;

&lt;p&gt;Agentic Workflow: From  Prompt to Execution&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                                         gh aw compile
┌──────────────────────┐  ┌──────────────────────┐  ┌──────────────────────┐
│  1. YOUR PROMPT      │  │  2. GH-AW            │  │  3. GH-AW COMPILER   │
│                      │  │   CUSTOMAGENT        │  │                      │
│  /agentic-workflows  │  │  Creates workflow.md │  │  Validates source    │
│  "Create a workflow" │──►  using its skill     │──►  Injects runtime     │
│                      │  │                      │  │  Generates YAML      │
│                      │  │  - schedule          │  │                      │
│                      │  │  - permissions       │  │  workflow.lock.yml   │
│                      │  │  - safe outputs      │  │                      │
│                      │  │  - task brief        │  │                      │
└──────────────────────┘  └──────────────────────┘  └───────────┬──────────┘
                                                                │
           ┌───────────────────── commit + push ────────────────┘
           ▼
┌──────────────────────┐                     ┌──────────────────────┐
│  4. GITHUB ACTIONS   │                     │  5. GITHUB REPO      │
│                      │                     │                      │
│  Launches agent      │                     │  Issues / PRs / code │
│  Executes task       │   ───────►          │                      │
│  Posts safe outputs  │                     │                      │
│                      │                     │                      │
└──────────────────────┘                     └──────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why is this really a thing , can't I just build my own custom agents ?
&lt;/h2&gt;

&lt;p&gt;Yes of course you can - sky is the limit ! But enforcing what they can do access and affect can can quite trickly. GH-AW runs within an isolated sandbox with Read-Only permissions, prevents Prompt Injection and is authorized to write only what you let. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fffzpax0fct99n7huoqpm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fffzpax0fct99n7huoqpm.jpg" alt="sandbox" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use which: Github Actions VS Github Agentic Workflows
&lt;/h2&gt;

&lt;p&gt;⚠️ A better question would be "How to use both together". 💡&lt;/p&gt;

&lt;p&gt;Agentic workflows are complementary; your deterministic build, test, and release pipelines stay unchanged. Github Actions requires YAML configuration for fully deterministic systems.  Agentic workflows use AI to interpret natural language instructions in markdown. Think of it as Continuous AI alongside CI/CD: a new automation layer in GitHub Actions for tasks where exact reproducibility doesn’t matter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdp20u6sbrdy4vsc0leew.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdp20u6sbrdy4vsc0leew.jpg" alt="actions-ghaw-together" width="799" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How can I start ?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.github.com/gh-aw/setup/quick-start/" rel="noopener noreferrer"&gt;Quick Start with  Github CLI&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/mburakunuvar/GH-AgenticWorkflows-DEVTO" rel="noopener noreferrer"&gt;A github repo&lt;/a&gt; to experiment some pre-built and 2 custom workflows&lt;br&gt;
&lt;strong&gt;Disclaimer&lt;/strong&gt;: Please don't hate me in case of errors 😃 and please feel free to submit issues or contribute  🤗&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are you looking something for advanced, a zero to hero style workshop ? &lt;a href="https://githubnext.github.io/gh-aw-workshop" rel="noopener noreferrer"&gt;gh-aw-workshop&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Last but not least, here comes the main source of all information and updates &lt;a href="https://github.github.com/gh-aw/" rel="noopener noreferrer"&gt;GitHub Agentic Workflows&lt;/a&gt; 🚀 🚀 🚀 &lt;/p&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>githubcopilot</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
