Incidents · for engineers who run production systems, Kubernetes clusters and GPU and AI platforms among them

Incident LibraryPublic post-incident reports, searchable by symptom

Incident Library is a searchable collection of public post-incident reports for engineers who run production systems. Each report is written up as one case: what people saw, what triggered it, how it was found, how it was fixed and what the team learned, with a link to the original write-up. You type the symptom you are looking at, in English or Korean, and get the cases whose symptoms match, grouped by root cause or listed one by one. The cases so far lean toward Kubernetes platforms and the GPU and AI infrastructure built on them, and the library grows with every domain that publishes reports. The same cases are open to AI tools through a public API and an MCP server.

  • Free
  • No account
  • 209 cases from 110 organizations
  • Every case links to its original report
  • Public API
  • MCP server for AI tools
Open in yourBrowser

Three moments

01

Describe the symptom in a sentence

Type what you see, such as pods stuck Pending with no available IP address, in English or Korean. The search matches words and meaning at once and returns the cases whose symptoms fit, each with its root cause, the components involved and the organization that wrote it up. Filters for root cause, component, symptom, contributing factor and organization narrow the list; a case count on every filter shows what is left.

02

Follow the graph from cause to case

The graph draws the root causes, the components and symptoms with the most cases, and the cases themselves as one picture. Hover a node to light up what connects to it; click a cause or a component to turn it into a filter, click a case to see the ones most like it. A larger view opens on its own page.

03

Read one case end to end

A case page has the summary, the trigger, how the incident was detected, the timeline, the impact, the remediation steps, the follow-up actions and the lessons the team recorded, in English and Korean side by side, with the link to the original report and the cases related to it.

What is in the library

Every case comes from a report an organization published itself: a postmortem page, an engineering blog post, a status page incident, a conference talk or a runbook entry. The library does not copy the report. It records the facts in a fixed set of fields and links to the source, so you read the summary here and the full story where it was written.

Cases are tagged with one root cause out of thirteen, the components involved, the symptoms people saw and the contributing factors, using one shared vocabulary, so a symptom you type can be matched against what other teams recorded. The reports come from every kind of production system that publishes them; the largest groups today are Kubernetes platforms in the broad sense, from DNS and networking plugins to node pools, schedulers, controllers and the cloud services clusters run on, and the GPU and AI infrastructure built on them, with training jobs, inference services and the drivers and schedulers underneath.

How the search works

You can search with a whole sentence, not just keywords. Behind the box, the text of every case is split into passages and indexed two ways: by the words it contains and by a multilingual embedding of its meaning. A query runs against both indexes and the results are fused, so a sentence about DNS lookups timing out after a deploy finds a case that talks about CoreDNS pods being OOM-killed under a burst of queries, even though the words differ.

The search also reads your sentence for the vocabulary the library uses. If it recognises a component, a symptom or a root cause, cases tagged with that value move up. Filters you choose by hand do the same, and a search can be filters only, with no sentence at all.

Results come in two views: grouped by root cause, which shows at a glance what kinds of failure match your symptom, and listed case by case. Short queries open the grouped view first.

Two languages, one case

Every case is written in English and Korean, and both texts are searched. You can type in either language and read the result in either; the address carries the language, so a shared link opens in the language you were reading.

The Korean text is a parallel write-up of the same facts, reviewed together with the English one, not a machine translation of it.

For AI tools and scripts

The same search and the same cases are open over a public HTTP API at https://incidentlib-api.benchlet.com, with no key and no account. Three calls cover most needs: GET /search?q=pods stuck Pending with no available IP address returns the matching cases, best match first, with the total and a link to the next page; GET /cases/IL-0001 returns one case with every field, and GET /cases/IL-0001/similar the cases most like it; GET /vocab?q=coredns finds the identifiers of root causes, components, symptoms, factors and organizations to use as filters. Answers are JSON, errors follow RFC 9457 problem details, and the whole surface is described in the OpenAPI document at https://incidentlib-api.benchlet.com/openapi.json. One address may make 30 searches and 120 other requests a minute.

The MCP server is at https://incidentlib-mcp.benchlet.com/mcp. MCP, the Model Context Protocol, is the open standard by which AI assistants such as Claude, Cursor and VS Code call outside tools. The server speaks Streamable HTTP and needs no authentication. In Claude Code the command is claude mcp add --transport http incidentlib https://incidentlib-mcp.benchlet.com/mcp; in Cursor the entry in .cursor/mcp.json is {"mcpServers": {"incidentlib": {"url": "https://incidentlib-mcp.benchlet.com/mcp"}}}; in Claude Desktop it is a custom connector with that address.

The server offers five tools. search_incidents takes a symptom sentence and optional filters and returns the similar cases with their categories counted; get_incident returns one case in full with the cases that share its root cause and a component; list_incidents lists every case of a root cause or component, one page at a time; get_topic opens one category value with its cases and the categories they carry; vocab turns words into identifiers. Ask the assistant something like "our CoreDNS pods keep getting OOMKilled after a deploy, has anyone written this up?" and it answers with case numbers and the source addresses it can cite.

The site also serves https://benchlet.com/incidentlib/app/llms.txt, a short map of the service for AI tools, and llms-full.txt with every case as text.

Where the cases come from

Cases are added by hand from public reports, each one read and written up in both languages before it is published. Facts that a report does not state are left empty rather than guessed. Nothing in the library is generated from the report text automatically; the write-up is a summary made by a person, the structured fields are filled in from it, and the link to the original stays on every page.

Frequently asked questions

Do I need an account to search?

No. The search, the case pages, the graph, the API and the MCP server are all open without an account. Nothing is stored about you beyond the language you last read in, which is kept in a cookie.

Can I search in Korean?

Yes. Every case has an English and a Korean write-up and both are indexed, so a Korean sentence finds the same cases as its English equivalent. The site itself is in both languages; the address starts with /ko for Korean.

Are these your incidents or someone else's?

They are public reports that other organizations published about their own incidents. The library summarises them into one structure and links to each original. The organization's name is on every case and is one of the filters.

How do I use it from an AI assistant?

Connect the assistant to the MCP server address shown on the site's documentation page. The server offers five tools: search by symptom, read a case, list cases, read a topic page and look up a vocabulary value. The documentation page also lists the HTTP API for scripts.

How do I call it from a script?

Send GET https://incidentlib-api.benchlet.com/search?q= followed by the symptom in a sentence; the JSON answer lists the cases best match first with a total and a next link. Follow with GET /cases/{id} for one case and /cases/{id}/similar for its neighbours. No key is needed; the OpenAPI document at /openapi.json describes every field, and the allowance is 30 searches and 120 other requests a minute per address.

Where does the MCP address go?

In Claude Code: claude mcp add --transport http incidentlib https://incidentlib-mcp.benchlet.com/mcp. In Cursor: a .cursor/mcp.json entry with "url": "https://incidentlib-mcp.benchlet.com/mcp". In Claude Desktop: Settings, Connectors, add a custom connector with that address. Any client that takes a Streamable HTTP MCP server by address works the same way, and no key is needed.

Can I add a case?

Not from the site. Cases are added by hand by the maintainer from public reports, in both languages, before they are published. To propose a report or point out a mistake, open an issue in the public repository github.com/Team-DogFoot/incidentlib-reports; it has a form for each.

What does a search cost?

Nothing. The service is free to use, and there are no ads.

Get Incident Library

Pick the channel you use.

Open in yourBrowser