<?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: Ezekiel Adetoro</title>
    <description>The latest articles on DEV Community by Ezekiel Adetoro (@eadetoro).</description>
    <link>https://dev.to/eadetoro</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F418980%2Fd9d8a684-ecaf-4e62-b6b6-eab66aecc49e.jpg</url>
      <title>DEV Community: Ezekiel Adetoro</title>
      <link>https://dev.to/eadetoro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eadetoro"/>
    <language>en</language>
    <item>
      <title>Taking Control of AI Model Costs with Aegis-Monitor</title>
      <dc:creator>Ezekiel Adetoro</dc:creator>
      <pubDate>Fri, 06 Mar 2026 11:44:07 +0000</pubDate>
      <link>https://dev.to/eadetoro/taking-control-of-ai-model-costs-with-aegis-monitor-1ka0</link>
      <guid>https://dev.to/eadetoro/taking-control-of-ai-model-costs-with-aegis-monitor-1ka0</guid>
      <description>&lt;p&gt;As AI models become increasingly central to modern applications, organizations and individuals face a critical challenge: how do you maintain innovation velocity while keeping costs under control? That's where &lt;em&gt;aegis-monitor&lt;/em&gt; comes in—a powerful solution for real-time cost governance and model comparison.&lt;/p&gt;

&lt;p&gt;In this post, we'll explore a FastAPI demo application that showcases how &lt;em&gt;aegis-monitor&lt;/em&gt; helps teams track AI model costs, enforce budgets, and make data-driven decisions when comparing models.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI Cost Challenge
&lt;/h2&gt;

&lt;p&gt;Let's be honest: AI model costs can spiral out of control quickly. Whether you're using GPT-4, Claude, or open-source alternatives, every API call adds up. Consider these common scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A developer experiments with different prompts, unknowingly racking up hundreds of dollars in costs&lt;/li&gt;
&lt;li&gt;A product team deploys a feature using an expensive model when a cheaper alternative would suffice&lt;/li&gt;
&lt;li&gt;FinOps teams struggle to attribute costs across different teams and projects&lt;/li&gt;
&lt;li&gt;No one notices until the monthly bill arrives—too late to course-correct&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sound familiar? You're not alone. This is exactly why we built this demo to showcase aegis-monitor's capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing the Aegis-Monitor
&lt;/h2&gt;

&lt;p&gt;Our FastAPI demo application demonstrates three core capabilities that every AI-powered application needs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Real-Time Cost Tracking&lt;/strong&gt;&lt;br&gt;
Gone are the days of waiting for your cloud bill to understand AI spending. With aegis-monitor's &lt;code&gt;CostCalculator&lt;/code&gt;and &lt;code&gt;PricingRegistry&lt;/code&gt;, every inference request is tracked in real-time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;cost_calculator&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aegis_cost_calculator&lt;/span&gt;
&lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cost_calculator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;calculate_request_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;output_tokens&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculates token counts for both input and output&lt;/li&gt;
&lt;li&gt;Applies accurate, model-specific pricing&lt;/li&gt;
&lt;li&gt;Aggregates costs across requests, teams, and time periods&lt;/li&gt;
&lt;li&gt;Stores detailed records for analysis and auditing
&lt;strong&gt;Why this matters:&lt;/strong&gt; You gain immediate visibility into exactly what each API call costs, enabling proactive cost management instead of reactive damage control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Budget Enforcement That Actually Works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visibility is great, but what about prevention? The demo implements budget enforcement at the inference level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;default_budget&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Budget&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Budget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;default&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;default_budget&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;default_budget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;spent&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;default_budget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;HTTPException&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;402&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Budget limit reached. Inference blocked.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can configure budgets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per team: Marketing gets $500/month, Engineering gets $2000/month&lt;/li&gt;
&lt;li&gt;Per model: Limit experimental GPT-4 usage to $100/day&lt;/li&gt;
&lt;li&gt;Global limits: Set organization-wide caps&lt;/li&gt;
&lt;li&gt;Soft warnings: Get alerts at 75% and 90% of budget&lt;/li&gt;
&lt;li&gt;Hard blocks: Automatically prevent inference when limits are reached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; Instead of discovering overspending after the fact, you prevent it from happening in the first place. No more surprise bills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Intelligent Model Comparison&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's where things get really interesting. The &lt;code&gt;/compare&lt;/code&gt; endpoint reveals which models deliver the best value:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@router.get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;compare_models&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Depends&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;get_db&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InferenceRecord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;avg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InferenceRecord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;quality_score&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;avg_quality&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;avg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InferenceRecord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InferenceRecord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cost_per_token&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;group_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InferenceRecord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives you a clear view of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Average quality scores&lt;/strong&gt; per model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost per token&lt;/strong&gt; for each model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality vs. cost tradeoffs&lt;/strong&gt; across your model portfolio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; Data-driven decisions trump gut feelings. Maybe GPT-4 is worth the premium for customer-facing features, but Claude Sonnet or GPT-3.5 is perfectly adequate for internal tools. Now you have the data to prove it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Benefits
&lt;/h2&gt;

&lt;p&gt;Let's talk about the tangible impact of using aegis-monitor:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;For Developers&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instant feedback&lt;/strong&gt;: See the cost impact of your prompt engineering experiments immediately&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guilt-free innovation&lt;/strong&gt;: Experiment within budget guardrails instead of avoiding expensive models altogether&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better debugging&lt;/strong&gt;: Track down cost anomalies quickly with detailed inference records&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;For FinOps Teams&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Predictable spending&lt;/strong&gt;: Set and enforce budgets before costs spiral&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost attribution&lt;/strong&gt;: Know exactly which teams, projects, or models drive your AI spend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend analysis&lt;/strong&gt;: Identify usage patterns and optimize spending over time&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;For Product Teams&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Informed tradeoffs&lt;/strong&gt;: Choose the right model for each use case based on quality and cost data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk mitigation&lt;/strong&gt;: Prevent budget overruns that could impact product roadmaps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance benchmarking&lt;/strong&gt;: Track quality metrics alongside cost to ensure you're getting value&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;For Data Scientists&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model evaluation&lt;/strong&gt;: Compare models objectively on both performance and efficiency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-aware optimization&lt;/strong&gt;: Factor in inference costs when selecting models for production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regression detection&lt;/strong&gt;: Get alerts when model changes unexpectedly increase costs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Quick Tour of the API
&lt;/h2&gt;

&lt;p&gt;The demo exposes several endpoints that work together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /infer&lt;/code&gt;&lt;/strong&gt;: Submit inference requests with automatic cost tracking and budget enforcement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /costs&lt;/code&gt;&lt;/strong&gt;: Review total and per-model expenditures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /compare&lt;/code&gt;&lt;/strong&gt;: Analyze quality vs. cost metrics across models&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET/POST /budgets&lt;/code&gt;&lt;/strong&gt;: Manage team or project-specific budgets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /alerts&lt;/code&gt;&lt;/strong&gt;: Check for budget warnings and violations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each endpoint integrates seamlessly with aegis-monitor's cost calculation engine, ensuring accuracy and consistency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Want to try it yourself? The demo is straightforward to run:&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;# Clone and setup&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Run the application&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;app
fastapi dev main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application uses SQLite for persistence, so there's no complex database setup required. Within minutes, you can be tracking costs and comparing models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Demo: Production Considerations
&lt;/h2&gt;

&lt;p&gt;While this demo uses mock quality scores and simplified scenarios, the principles scale to production:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Integrate with real LLM providers&lt;/strong&gt;: Replace mock responses with actual API calls to OpenAI, Anthropic, or your provider of choice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement sophisticated quality metrics&lt;/strong&gt;: Track task-specific metrics like accuracy, BLEU scores, or custom evaluation criteria&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add notification channels&lt;/strong&gt;: Wire up Slack, email, or PagerDuty for real-time alerts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extend budget granularity&lt;/strong&gt;: Add per-user, per-endpoint, or custom budget dimensions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build dashboards&lt;/strong&gt;: Visualize cost trends, quality metrics, and model comparisons over time&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The aegis-monitor foundation gives you the flexibility to adapt to your specific needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;AI models are powerful, but without proper cost governance, they can become a budget black hole. Aegis-monitor provides the visibility, control, and intelligence you need to:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Track every dollar&lt;/strong&gt; spent on AI inference&lt;br&gt;
✅ &lt;strong&gt;Enforce budgets proactively&lt;/strong&gt; before overspending happens&lt;br&gt;
✅ &lt;strong&gt;Compare models objectively&lt;/strong&gt; based on quality and cost&lt;br&gt;
✅ &lt;strong&gt;Make data-driven decisions&lt;/strong&gt; about which models to use and when&lt;br&gt;
✅ &lt;strong&gt;Scale confidently&lt;/strong&gt; knowing costs won't spiral out of control&lt;/p&gt;

&lt;p&gt;Whether you're a startup managing limited resources or an enterprise deploying AI at scale, cost governance isn't optional—it's essential. This demo proves that with the right tools, it doesn't have to be complicated.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;The full source code for this demo is available in the repository. We encourage you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clone it and experiment with different models&lt;/li&gt;
&lt;li&gt;Implement your own quality metrics&lt;/li&gt;
&lt;li&gt;Integrate it with your existing AI infrastructure&lt;/li&gt;
&lt;li&gt;Share your feedback and improvements&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🚀 Ready to Add Aegis-Monitor to Your Project?
&lt;/h2&gt;

&lt;p&gt;Getting started with &lt;a href="https://adetorodev.github.io/aegis-monitor/" rel="noopener noreferrer"&gt;aegis-monitor&lt;/a&gt; in your own application is simple:&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 aegis-monitor&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;aegis-monitor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then integrate it into your FastAPI application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aegis.cost.calculator&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CostCalculator&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aegis.cost.pricing_registry&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PricingRegistry&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize in your FastAPI app
&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aegis_cost_calculator&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CostCalculator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;PricingRegistry&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="c1"&gt;# Calculate costs in your inference endpoints
&lt;/span&gt;&lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aegis_cost_calculator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;calculate_request_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;output_tokens&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here are additional usage patterns you can drop into a real project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sample 1: App Startup Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aegis.cost.calculator&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CostCalculator&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aegis.cost.pricing_registry&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PricingRegistry&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI Gateway&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@app.on_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;startup&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;init_aegis_monitor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;registry&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;PricingRegistry&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aegis_cost_calculator&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CostCalculator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;registry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sample 2: Track Cost in an Inference Endpoint
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;APIRouter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HTTPException&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt;

&lt;span class="n"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;APIRouter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nd"&gt;@router.post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/infer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;infer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Replace with your tokenizer in production.
&lt;/span&gt;    &lt;span class="n"&gt;input_tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
    &lt;span class="n"&gt;output_tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aegis_cost_calculator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;calculate_request_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;output_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;output_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;ValueError&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;exc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;HTTPException&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exc&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;exc&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;output_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;estimated_cost_usd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sample 3: Budget Guardrail Check Before Processing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;enforce_budget_or_raise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;current_spend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;budget_limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request_cost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;projected_spend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;current_spend&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;request_cost&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;projected_spend&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;budget_limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;HTTPException&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;402&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Budget limit reached. Inference blocked.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sample 4: Client Calls to Compare Models
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run two requests on different models&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://127.0.0.1:8000/infer &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model":"gpt-4","prompt":"Summarize this report"}'&lt;/span&gt;

curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://127.0.0.1:8000/infer &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model":"claude-3-haiku","prompt":"Summarize this report"}'&lt;/span&gt;

&lt;span class="c"&gt;# Review quality vs cost comparison&lt;/span&gt;
curl http://127.0.0.1:8000/compare/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sample 5: Budget Creation and Alert Check
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create or update a default budget&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://127.0.0.1:8000/budgets/ &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"name":"default","limit":50.0,"spent":0.0}'&lt;/span&gt;

&lt;span class="c"&gt;# Inspect budget alerts&lt;/span&gt;
curl http://127.0.0.1:8000/alerts/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! You now have accurate, real-time cost tracking for your AI models.&lt;/p&gt;

&lt;h3&gt;
  
  
  Next Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Explore the demo&lt;/strong&gt;: Clone this repository and run it locally to see aegis-monitor in action&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install aegis-monitor&lt;/strong&gt;: Add &lt;code&gt;aegis-monitor&lt;/code&gt; to your requirements.txt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrate with your app&lt;/strong&gt;: Start tracking costs in your existing inference endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up budgets&lt;/strong&gt;: Implement budget enforcement to prevent overspending&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build dashboards&lt;/strong&gt;: Visualize your cost and quality metrics&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ready to take control of your AI costs? Give &lt;a href="https://adetorodev.github.io/aegis-monitor/" rel="noopener noreferrer"&gt;aegis-monitor&lt;/a&gt; a try, and see how visibility and governance can transform your AI operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn More
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;&lt;a href="https://pypi.org/project/aegis-monitor/" rel="noopener noreferrer"&gt;PyPI&lt;/a&gt;&lt;/strong&gt;: &lt;code&gt;pip install aegis-monitor&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;&lt;a href="https://github.com/adetorodev/aegis-monitor" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/strong&gt;: Full code&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;&lt;a href="https://github.com/adetorodev/fastapi-aegis-demo" rel="noopener noreferrer"&gt;Demo Repository&lt;/a&gt;&lt;/strong&gt;: Check out the full source code with working example&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;&lt;a href="https://adetorodev.github.io/aegis-monitor/" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/strong&gt;: Share your feedback and contribute improvements&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Have questions or want to share your own cost governance stories? Reach out to our team or open an issue in the repository. We'd love to hear from you!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>My Experience with Ngrok on Windows</title>
      <dc:creator>Ezekiel Adetoro</dc:creator>
      <pubDate>Sat, 24 Jul 2021 09:02:39 +0000</pubDate>
      <link>https://dev.to/eadetoro/my-experience-with-ngrok-on-windows-25ng</link>
      <guid>https://dev.to/eadetoro/my-experience-with-ngrok-on-windows-25ng</guid>
      <description>&lt;p&gt;I am user used to Ubuntu. Since I started my career as a developer I have been using Ubuntu. Ubuntu is a great OS that I enjoy so much. But I have to stop using Ubuntu because my Laptop could not handle it anymore. The Laptop is kind of old and I need to get a new one. &lt;br&gt;
For the main time I have to change my OS to Windows. To get my environment setup was kind of hard for me to do. I am a Python Developer specialized in Django web development. As a developer you might need something apart from local server port 80: ngrok has been a big help in this aspect.&lt;br&gt;
When I switched to window I found it hard to use Ngrok because they environment had change.&lt;/p&gt;

&lt;p&gt;But here are what I did:&lt;br&gt;
Download Ngrok. That come in zip file&lt;br&gt;
Unzip the file, you will get ngrok.exe file&lt;br&gt;
Copy ngrok.exe file into a location you can easily find it&lt;br&gt;
Anytime you want to use it, go to that location and launch it.&lt;br&gt;
Then you are good to go.&lt;/p&gt;

&lt;p&gt;This is not like Ubuntu when you can launch it from the terminal.&lt;br&gt;
I welcome comments, if you know of any way I can use this, let me know.&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@jordanharrison?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Jordan Harrison&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/server?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ngrok</category>
      <category>django</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Django Auth</title>
      <dc:creator>Ezekiel Adetoro</dc:creator>
      <pubDate>Wed, 31 Mar 2021 06:17:11 +0000</pubDate>
      <link>https://dev.to/eadetoro/django-auth-22c1</link>
      <guid>https://dev.to/eadetoro/django-auth-22c1</guid>
      <description>&lt;p&gt;Share your experience with Django Auth, the bad, the good, the ugly, the mistake, the best time. I want to know and learn.&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
    </item>
  </channel>
</rss>
