Project Info

OpsPilot — conversational AI copilot for on-call and SRE

Devpost

Inspiration

As an SRE and DevOps Architect, I have seen on-call engineers lose valuable time during production incidents by switching between five or more tools to understand what went wrong. The evidence is usually available, but it is scattered across logs, metrics, deployment history, alerts, and previous incident reports. Bringing that information together manually slows down triage, increases alert fatigue, and often depends on knowledge held by a few experienced engineers. This experience inspired me to build a tool that brings the relevant signals together and helps teams investigate incidents more quickly and consistently.

What it does

OpsPilot is a conversational incident-response copilot demonstrated in a controlled Kubernetes test environment. The environment runs sample services and reproduces two realistic incidents: a bad configuration rollout that causes a spike in checkout errors, and a memory leak that results in an OOMKill and crash loop. Although the incidents are intentionally triggered for the demonstration, the Kubernetes events, pod logs, deployment history, and Prometheus metrics are generated by the running environment and investigated in real time. When an alert is raised, OpsPilot begins an automated investigation. It gathers evidence from the cluster, compares the timing of errors with recent deployment activity, and presents a root-cause conclusion with cited evidence and a confidence level. It then recommends an action from an approved list, such as restoring a known-good configuration, restarting a workload, or scaling a workload. OpsPilot never changes the environment without the engineer's approval. Every proposed action must come from an allowlisted set, pass a Kubernetes server-side dry-run preview that shows the exact change, receive explicit human confirmation, and be recorded in an append-only audit trail. After the action is applied, an independent verifier — not the model — confirms that error rates and workload health have returned to their defined baseline. The same investigation tools are available through a conversational interface. An on-call engineer can ask questions such as, "What evidence supports the current root-cause hypothesis?" or "What changed before the incident?" OpsPilot answers using current evidence from the test environment, without requiring the engineer to write PromQL or switch between kubectl commands. When evidence is missing, it says so and states what it needs — it does not invent logs, traces, or impact. Once the incident is resolved, OpsPilot drafts a structured postmortem from the persisted audit trail: summary, timeline, root cause with its evidence, actions taken, verification result, and prevention recommendations — with explicit unknowns rather than invented details.

How we built it

Codex was my implementation partner throughout the week: it built the FastAPI backend and React/TypeScript console with me, wrote the Kubernetes and Prometheus adapters, implemented the remediation safety contracts, and wrote most of the test suite (59 passing tests). The Kubernetes simulation — a kind cluster with a sample checkout service, Prometheus, and a load generator — was also scaffolded and debugged with Codex. GPT-5.6 is the investigation runtime, called through the OpenAI Responses API with bounded, read-only function tools. It receives typed evidence — workload status, events, log excerpts, metric queries, deployment history — decides what is relevant, and returns a structured, evidence-cited conclusion. A recorded live GPT-5.6 investigation of the checkout incident identified the injected failure mode and cited its supporting evidence. Cluster changes are always executed by application code behind the human approval gate, never by the model. Stack: Python, FastAPI, React, TypeScript, Kubernetes (kind), Prometheus, SQLite, OpenAI Responses API.

Challenges we ran into

The most interesting challenge was making automation trustworthy. Early on I assumed restarting or scaling would clear the memory-leak scenario — testing proved it would not, so I added a dedicated allowlisted restoration action instead of letting a plausible-but-wrong fix ship. Recovery verification had a similar lesson: a rollout that is still becoming ready is not a failed fix, so the lifecycle had to distinguish "still monitoring" from "verification failed." And keeping every public claim tied to tested evidence required real discipline — the project maintains a claim-verification ledger, and anything not demonstrated is stated as not demonstrated.

Accomplishments we're proud of

The complete loop works end to end in a local Kubernetes test cluster: alert → automated investigation → evidence-cited root cause → dry-run preview → human-approved fix → independently verified recovery → audit-derived postmortem. Every conclusion links to its evidence, and no change ever happens without explicit approval.

What we learned

Agents work best with small, deterministic tools instead of unrestricted commands. GPT-5.6 is most effective for reasoning and explanation, while application code handles execution and safety. Sharing the same tools between the automated investigation and the chat interface made the system simpler, more consistent, and easier to trust.

What's next

for OpsPilot Prometheus Alertmanager integration (the ingress already accepts its webhook format), a hosted demo, integrations with PagerDuty and Datadog, searchable learnings from past postmortems, and multi-cluster support.

Analysis

Compare with all teams

View

Metric

Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.

Technology

Found in codeClaimed only
  • CSSIn code
  • FastAPIIn code
  • HTMLIn code
  • OpenAIIn code
  • PythonIn code
  • ReactIn code
  • TypeScriptIn code
  • DockerClaimed

7 of 8 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.

AI coding agents

No AI coding agent signals were found in this repository.

Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.

Codebase size

Source size

396 KB

Source files

52

Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.

0 stars