<?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: Tushar Khadde</title>
    <description>The latest articles on DEV Community by Tushar Khadde (@devtushark).</description>
    <link>https://dev.to/devtushark</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%2F4157186%2Fe4c7dd81-1186-452c-84bd-78d4ebb166f5.png</url>
      <title>DEV Community: Tushar Khadde</title>
      <link>https://dev.to/devtushark</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devtushark"/>
    <language>en</language>
    <item>
      <title>CI Watchdog — The Autonomous CI Minutes &amp; Spend Sentinel with Open AI Failure Triage</title>
      <dc:creator>Tushar Khadde</dc:creator>
      <pubDate>Mon, 05 Oct 2026 03:38:55 +0000</pubDate>
      <link>https://dev.to/devtushark/ci-watchdog-the-autonomous-ci-minutes-spend-sentinel-with-open-ai-failure-triage-43gd</link>
      <guid>https://dev.to/devtushark/ci-watchdog-the-autonomous-ci-minutes-spend-sentinel-with-open-ai-failure-triage-43gd</guid>
      <description>&lt;h1&gt;
  
  
  CI Watchdog
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;An autonomous GitHub App and SaaS platform that stops wasted CI spend before it hits your invoice, and automatically diagnoses broken builds using open-weight AI.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Every developer has that one friend or team lead who dreads the 20th of the month: the day GitHub sends the notification:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"You have used 100% of your included GitHub Actions minutes."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I built &lt;strong&gt;CI Watchdog&lt;/strong&gt; for my friend and engineering teammate, who was constantly battling ballooning CI bills and jammed pipeline queues on open-source and startup projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problems:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers push 4 quick commits to a PR, and GitHub blindly spawns 4 redundant 15-minute test suites in parallel on expensive runners (Ubuntu, macOS, Windows).&lt;/li&gt;
&lt;li&gt;When a build fails after 20 minutes, developers have to dig through 30,000 lines of terminal logs just to discover a blocked database container port or a missing env variable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Waste Prevention:&lt;/strong&gt; Detects and cancels superseded runs, runaway jobs exceeding historical p95 execution baselines, and PR workflows left running on closed branches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proactive Workflow Hygiene:&lt;/strong&gt; Audits repository workflows for missing &lt;code&gt;concurrency&lt;/code&gt; blocks and generates 1-click YAML fixes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Failure Investigation:&lt;/strong&gt; The moment a build fails, an integrated AI agent pulls the raw runner logs, redacts secrets, diagnoses the exact root cause, pinpoints the failed step, categorizes the bug, and provides copy-paste solutions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-in-the-Loop Control Plane:&lt;/strong&gt; Includes a kill switch, dry-run observation safety rails, team approvals for cancellations, and interactive ROI spend simulators.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Dashboard:&lt;/strong&gt; &lt;a href="https://ci-watchdog.vercel.app" rel="noopener noreferrer"&gt;ci-watchdog.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Live Demo Pull Request:&lt;/strong&gt; &lt;a href="https://drive.google.com/file/d/1NgK95ftACly7ZpQnTOCnFLfNkLO0kkXM/view?usp=sharing" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Features to Explore
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&lt;/th&gt;
&lt;th&gt;Feature&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;/app&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Control Room Overview&lt;/td&gt;
&lt;td&gt;Live and dry-run minutes-saved counters, real-time system status indicators, and weekly savings charts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/app/investigations&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI Investigations&lt;/td&gt;
&lt;td&gt;Instant root-cause diagnostic cards generated by Gemma / Gemini 3.8 Flash, with failure hypotheses, log evidence snippets, and recommended next steps.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/app/decisions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Decision Engine &amp;amp; CSV Export&lt;/td&gt;
&lt;td&gt;Full searchable decision history with rule and status filters, plus 1-click CSV download for engineering management reports.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/app/approvals&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Human Approval Queue&lt;/td&gt;
&lt;td&gt;First-N quota approval flow with 1-click &lt;strong&gt;Approve&lt;/strong&gt; and &lt;strong&gt;Deny&lt;/strong&gt; buttons.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/app/digest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Interactive ROI Calculator&lt;/td&gt;
&lt;td&gt;Real-time savings simulator modeling monthly minute volume and runner tiers (see pricing below).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Runner pricing used in the ROI calculator:&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;Runner&lt;/th&gt;
&lt;th&gt;Cost per minute&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;td&gt;$0.008&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows&lt;/td&gt;
&lt;td&gt;$0.016&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;$0.080&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple Silicon (M-series)&lt;/td&gt;
&lt;td&gt;$0.160&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The entire codebase is open-source and structured as a high-performance TypeScript monorepo using &lt;strong&gt;Turborepo&lt;/strong&gt; and &lt;strong&gt;pnpm&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/Tusharkhadde/CI-watchdog" rel="noopener noreferrer"&gt;Tusharkhadde/CI-watchdog&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&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;apps/watchdog&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Event-driven Node.js background service deployed on Render. Connects to the GitHub App webhook stream, processes workflow states, runs the pure rule engine, and coordinates AI triage.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;apps/dashboard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Next.js 16 (Turbopack) dashboard deployed on Vercel with Shadcn UI, Auth.js (OAuth with GitHub &amp;amp; Google), and real-time state synchronization.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;config/watchdog.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Declarative team policies with per-repository overrides.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&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%2Fgc8f5efs51mqpbm0a44r.png" 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%2Fgc8f5efs51mqpbm0a44r.png" alt=" " width="581" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Pure, Deterministic Rule Engine
&lt;/h3&gt;

&lt;p&gt;The rule engine (&lt;code&gt;apps/watchdog/src/rules/&lt;/code&gt;) was designed to be 100% pure with zero side effects. Given the current run, sibling runs, historical durations, and workflow YAML, it evaluates four rules:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule&lt;/th&gt;
&lt;th&gt;Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SUPERSEDED&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cancels older runs queued on the same ref when a newer commit arrives.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;RUNAWAY_DURATION&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compares running jobs against historical p95 execution times and alerts/cancels if a job hangs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MISSING_CONCURRENCY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scans workflow ASTs and alerts if jobs lack top-level concurrency cancellation blocks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;STALE_ON_CLOSE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Immediately terminates active pipelines when a PR is merged or closed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Intelligent AI Failure Triage
&lt;/h3&gt;

&lt;p&gt;When a workflow concludes with a failure, CI Watchdog activates the AI investigator:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetches the raw runner logs via the GitHub API.&lt;/li&gt;
&lt;li&gt;Runs pattern redaction to scrub tokens and sensitive credentials.&lt;/li&gt;
&lt;li&gt;Dispatches the condensed failure excerpt to open-weight models (Google Gemma / Gemini 3.8 Flash via OpenAI-compatible endpoints).&lt;/li&gt;
&lt;li&gt;Validates the output with &lt;strong&gt;Zod&lt;/strong&gt;, enforcing structured JSON containing:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&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;rootCause&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Explicit technical diagnosis (e.g., missing Docker service container, database port refusal).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;failedStep&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exact bash command or step name that exited non-zero.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;One of: Infrastructure, Configuration, Test, or Code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nextSteps&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Concrete remediation actions.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Safety Rails &amp;amp; Human-in-the-Loop
&lt;/h3&gt;

&lt;p&gt;Automated cancellation can be intimidating for developers, so I implemented strict safety rails:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Default Dry-Run Mode:&lt;/strong&gt; Repositories begin in observation mode so teams can review what &lt;em&gt;would&lt;/em&gt; have been canceled without impacting active builds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;48-Hour Observation Window:&lt;/strong&gt; Go-live can only be unlocked after a repository has been observed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;First-N Live Approval Quota:&lt;/strong&gt; The first cancellations require explicit human confirmation via dashboard or Slack buttons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protected Branch Immunity:&lt;/strong&gt; Never cancels &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;master&lt;/code&gt;, or &lt;code&gt;release/*&lt;/code&gt; branches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Kill Switch:&lt;/strong&gt; Instantly pauses all active cancellations across all repositories.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation is what makes a tool like CI Watchdog possible without compromising developer trust:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty &amp;amp; Privacy:&lt;/strong&gt; Build logs often contain internal paths, dependencies, proprietary package names, and sensitive environment details. Relying on closed, proprietary cloud AI black boxes creates data-leakage risks for enterprise codebases. Open-weight models like Gemma enable teams to run AI failure analysis locally or within their own private infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Customization:&lt;/strong&gt; Open tooling and open protocols allow developers to customize rule thresholds, inspect prompts, tune temperature, and swap backend models based on compute constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Vendor Lock-In:&lt;/strong&gt; Developers shouldn't need a six-figure enterprise contract just to know why their CI pipeline broke or to prevent redundant job execution. Open innovation democratizes cost control for individual creators, open-source maintainers, and startups alike.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build for a Friend&lt;/li&gt;
&lt;li&gt;Open Innovation &amp;amp; Open-Weight AI&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ during Hacktoberfest. If your team is burning minutes on redundant CI runs, give CI Watchdog a spin!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
