AI Platforms

AI apps need boring observability

2 min read

AI apps need boring observability.

That sounds less exciting than prompts or model releases, but it is the difference between a demo and a system people can actually run. If a normal app fails, you want logs, traces, request IDs, and enough context to reproduce the bug. An AI app needs that plus prompt versions, model versions, retrieval records, tool calls, output state, and the examples that turn into evals later.

The hard part is that the user report is usually too thin to debug on its own.

It gave a bad answer.

It missed the document.

It hallucinated.

That is real feedback, just not enough feedback. The useful run record needs the model, the prompt version, the retrieval query, the documents that came back, the tools that ran, the parsed output, and the result the product accepted.

{
  "runId": "run_01J9",
  "feature": "support_summary",
  "model": "provider/model-version",
  "promptVersion": "support-summary-system@8",
  "retrievalQueryId": "qry_8831",
  "toolCount": 2
}

Retrieval deserves its own trace because retrieval failures look like model failures from the outside. Maybe the wrong chunk came back. Maybe the right chunk never made it into context. Maybe permissions trimmed the useful document. Maybe the reranker buried the important source below a similar one. Without the retrieval trail, all of that gets blamed on the model.

Tool calls deserve the same treatment. Name the tool. Record the arguments. Log the permission check. Measure the duration. Capture the result or the failure. Otherwise agent bugs turn into ghost stories and nobody can tell whether the tool was wrong, the model was wrong, or the application hid the evidence.

The useful metrics are sliced, not averaged away. I want to know what changed for long inputs, specific routes, specific model versions, specific user tiers, and the slices that carry policy risk. When production examples get reviewed, they should become fixtures. That is how the system improves without pretending production traffic is training data.

The whole thing is boring on purpose. If the AI system cannot answer “what actually happened?” it is not observable enough to trust.

Jeremy London

About Jeremy London

Engineering leader and builder in Denver. I write about AI platforms, agents, security, reliability, homelab infrastructure, and the parts of engineering work that have to survive production.