Case Studies

Barndoor.ai

CASE STUDY

Barndoor.ai

How Moda’s SRE Agent Helped Barndoor AI Reduce On-Call Burdens

Published · By Moda Labs

Highlights

  • 450 alert groups triaged a month, zero touched first by a human. Every alert gets acknowledged, investigated across Grafana, code, Kubernetes, and the database, and closed with a root cause and a Jira ticket on the incident record.

  • Ack time down 90%, to 40 seconds. On-call engineers had a median of 6 minutes to respond to alerts before, but the proactive SRE agent brought it down to 40 seconds.

  • Incident-response capacity 2x’d. Alert-group volume doubled from 200 → 450, but the amount of allocated incident response hours from engineers remained flat.

  • 6 weeks from a 2,500-line Go loop to a 620-line declarative agent. A deployed agent built on Bobi, Moda’s open-source framework for agent teams, with flexibility to update and refine the agent in YAML.

  • Greatly improved visibility. An alert setup that can err on the side of false positives without generating a level of noise that’s unmanageable.

The Challenge

Barndoor AI offers AI governance software that helps companies deploy AI and agents safely with their AI gateway. Maintaining the platform meant 75+ alert rules, 700+ actionable firings in a typical month, translating to ~60 dev hours a month on incident response, which is almost half a developer.

Right before we started, the platform team coded a v1 Go agent: about 2,500 lines of hand-rolled LLM loop, queue consumer, and retry logic. While their home-rolled agent was able to ack alerts and filter out transient ones, it wasn’t able to investigate errors or file and update tickets, and most importantly, every behavior change to the agent meant editing a bespoke runtime.

The Solution

Moda Labs deployed a persistent site reliability engineering agent that handled the first response for alerts, diagnosed the root cause, checked for existing issues in Jira, and posted updates or escalated accordingly.

As a result, we 2x’d the incident response capacity of the team and dropped alert acknowledge time by 90%.

The agent was deployed via our open-source framework, Bobi. It has two roles (director, engineer), one YAML workflow, a tool guide, and a skills index.

How the SRE agent works

At the top level, the director agent handles all human communication via Slack and response to any incoming events from Grafana. It understands what needs to be done, then dispatches a fresh SRE engineer agent to handle investigation and analysis.

The Bobi CLI enables all agents within the SRE team to talk to each other and collaborate.

The SRE agent's on-call process: Grafana OnCall fires through the AI gateway into Bobi's event queue; a sidecar leases, dedupes, and acks each alert; auto-dispatch runs one triage at a time; the SRE agent investigates with MCP tools and a read-only codebase and returns a structured result to the director agent, which notifies Slack, posts to Grafana, and updates Jira.

The alert investigation and triage workflow

When an alert happens, Grafana OnCall fires into the Bobi event bus queue. Then, the SRE agent team begins its workflow:

  1. 01

    Check for notes. The director checks for existing agent notes on this alert group and for sibling groups in the last six hours. It marks duplicates accordingly and escalates for investigation where needed.

  2. 02

    Acknowledge the alert. The director acks the OnCall group and posts “triage started.”

  3. 03

    Grafana investigation. An SRE agent runs PromQL and Cloud Logging queries and is told to push for root cause here. It hands back a finding and a confidence flag.

  4. 04

    Code trace. An SRE agent greps a read-only snapshot of the monorepo baked into the image for the log strings it saw.

  5. 05

    Kubernetes and database, only if needed. If the above wasn’t confident, the SRE agent will look at pod status, events, logs for the alert’s namespace, and cluster health.

  6. 06

    Synthesize findings. The SRE agent generates a root cause analysis with explicit gaps, evidence chain, severity, recommendation, and an escalation call.

  7. 07

    Jira ticketing. The SRE agent runs a workflow, which finds an open ticket for this issue or creates one. This ensures one ticket per alert issue and minimizes noise.

  8. 08

    Post the conclusion. The director agent posts the verdict: alert and root cause, impact, single next action, escalate yes or no, Jira key. Every note lands on the Grafana OnCall alert group and mirrors into the alert’s Slack thread for full auditability.

What live alerts taught us

After a quick initial deployment, we made several improvements to the deployed SRE agent using live alert traffic.

This step of the project is what separates a “set-and-forget” agent that collects dust on a shelf from one that the team relies on every day. In just a few weeks, we noticed and corrected a few things.

  • Limiting concurrent triage workflows. On July 27, four concurrent triages killed the container at both 1Gi and 2Gi. Barndoor’s alert volume was the driver. The agent now runs one triage at a time.

  • Expanding alert deduplication. On July 31, an alert group got a full second triage exactly 15 minutes after the first. As a result, we upped the window to 30 minutes to check for duplicates.

The Impact

We noticed meaningful changes as Barndoor moved from no agent to the Bobi SRE agent.

Who takes the first pass

No agent

On-call engineer

Bobi SRE agent

Agent acks, investigates, tickets, concludes

Investigation on the incident record

No agent

None

Bobi SRE agent

Grafana, code, k8s, DB evidence chain plus verdict

Time to first ack, median

No agent

6 min

Bobi SRE agent

40 seconds

Human-hours on incident response, per month

No agent

50–60h per 200 alert groups

Bobi SRE agent

50–60h per 450 alert groups

Furthermore, the SRE agent enabled Barndoor to set up more alerts so that they have comprehensive coverage of failure modes across the platform. In the past, they had to carefully set alerts to minimize noise of false positives.

With an SRE agent handling triage and initial investigation, they can increase coverage without worrying about the noise.

“You want to err on the side of false positives with alerts, so you have visibility into your product. And with agents, you can have that without worrying about the noise.”
Tim Stacey, Barndoor CTO

ARCHITECTURE

Looking Under the Hood

Project Setup

Team
From Moda Labs, one embedded engineer and one reviewing engineer and light PM support, partnering with Barndoor’s platform engineer and agent owner
Framework
Bobi, Moda’s open-source framework for agent teams. The SRE team is a declarative package of about 620 lines of YAML and Markdown with no imperative agent code
Models
Claude for both roles, routed through Barndoor’s LLM gateway; Claude Code as the agent runtime
Tool access
Barndoor’s own MCP aggregator (Grafana, Kubernetes, CNPG, ArgoCD, Atlassian, skills) with a default-deny policy. The agent is read-only except for one sanctioned write, the Jira ticket
Runtime
GKE with a queue-bridge sidecar, a Cloudflare Queue and OpenTelemetry for metrics

The system has four layers:

  1. 01

    Alert fires and Bobi responds, within the AI gateway: Grafana OnCall fires and the event goes into Bobi’s event queue. All actions go through the AI gateway, ensuring that tool calls and agent actions are approved and monitored.

  2. 02

    Initial response, including deduplication: The sidecar pulls each alert on a 15-minute lease, drops duplicates inside a 30-minute window, posts it to Bobi’s event server, and acks the queue only after ingestion succeeds.

  3. 03

    Dispatch of the triage workflow: Bobi’s auto-dispatch launches the triage workflow for every firing alert. One triage runs at a time to avoid concurrency issues.

  4. 04

    Alert investigation and response: The SRE role investigates using MCP and a read-only snapshot of the codebase, and hands back structured fields (finding, confidence, needs database) that the Director turns into notes. The Director handles all communications with users and upstream systems like Grafana.

Why This Worked

Deploy-then-iterate strategy. The Bobi framework allowed Moda to get a functional agent up and running within the first week that consumed real alerts and performed investigations, allowing us ample time to tune the deployment with Barndoor’s engineers against live use cases, resulting in a robust solution along with the knowledge-share necessary for them to take long-term ownership.

A workflow, not a prompt. Barndoor wanted to dictate the investigation order, Grafana first and everything else only when needed, rather than ask a model nicely. The YAML DAG makes that order a fact, and the two-role split means the model that investigates can’t resolve an alert and the model that resolves alerts can’t be talked into it by a log line.

Moda maintains the framework. The bugs in the framework were quickly and easily resolved because we maintained it, and we didn’t have to wait for support from a SaaS product. Each was fixed upstream within days and shipped in a pinned release.

What’s Next

Barndoor will continue expanding the use of its SRE agent, fully replacing the engineer for first response. They also plan on building a downstream engineering agent to pick up Jira tickets from the SRE agent to code and test fixes for issues found from alerts.

Let’s build something meaningful.