◐ PILOTAI operations assistant · inside the platform

An AI assistant that answers with evidence, not vibes.

Ask ALDHI is the AI chat built into the Azure Local operations platform. It doesn't summarize a dashboard — it investigates. Its 38 typed tools reach 15 catalogued data sources, so it can chase a symptom across alerts, faults, events, and logs, then answer with every claim cited. It can't write SQL, never sees a secret, and won't send an email until you've seen the draft and said "send."

TypeScriptReact 19SQL Server
TanStack AIOpenRouterEffectModel registryCode Mode · QuickJS isolateEvidence-cited answersTelemetry middlewareSchema-typed tools
◆ Built into the Azure Local operations platform — next to The Forge, which does the fixing.
38
typed tools — 12 always loaded, 26 on demand
0
raw SQL the model can write
24
read-only tools its code sandbox can call
30/30
live eval prompts passed in June, up from 10 that day
ask-aldhi
// The problem

The data was unified. The reasoning still lived in someone's head.

The platform already pulled the evidence into one place: report-backed health snapshots, live WMI faults, a 36-day window of forwarded Windows events, Azure alerts, OS Config drift, pipeline logs. But when something breaks at 6am, root cause still means a person walking across those sources, holding the timeline in their head, and knowing which to trust for what. That's expertise. It's slow, and it doesn't scale past the person who built the system.

The obvious answer — point a chatbot at the database — is how you get confident nonsense and a security incident. A model with SQL access will happily join a live signal to a stale report, read whatever it can reach, and fill the gaps with fiction. The design problem wasn't adding AI. It was giving the model real reach without giving it trust.

// How it works

Real reach, zero trust.

Every capability is a typed tool with a strict schema, a row cap, and an audit row — never an open connection.

01 ASK
An operator asks in plain language — triage an alert, explain a fault, find the events behind a symptom — or taps a page-aware quick action. Page context rides along as data, never as instructions.
02 ROUTE
The server owns model choice across a five-model OpenRouter catalog. The browser sends three fields — page context, a catalog key, a conversation ID — never a model ID, key, or prompt override. A failing model is benched for 5 to 60 minutes.
03 INVESTIGATE
The model works a capped loop over 38 typed tools, each a curated data-access function behind a strict schema. For joins across tools, the model writes TypeScript that runs in a QuickJS sandbox: 24 read-only tools, no network, no files, 30 seconds, 128 MB.
04 GUARD
Row caps, 168-hour windows, and timeouts bound every read, and results say when they're truncated. Raw event XML, raw WMI payloads, and credentials never reach the model, and files stay inside a containment-checked workspace.
05 ANSWER
Three tool turns at most, then a forced final turn with no tools. Every claim is labeled report-backed or reportless and every correlation by strength; structured answers cite up to 20 evidence items by index.
// The tool surface

38 tools, grouped by what an operator actually does.

Twelve are always visible; 26 wait behind a discovery tool, so the model isn't handed 38 schemas at once.

TRIAGE

Alerts & live faults

Active alerts, live WMI faults, raw alert evidence, and the correlated-context engine behind the alert drawers — the "what's wrong right now" tools.

EVENTS

Windows event forensics

Search, collection status, and QueryList coverage over a trimmed view of each event. Raw XML, which can carry attacker-controlled text, stays in the human detail view.

EVIDENCE

Reports & OS Config

Report search, the raw collector evidence behind any snapshot, and OS Config drift — so every answer traces back to a report.

HEALTH

SQL, pipelines & itself

SQL Server health from curated summaries, pipeline logs, and application errors — plus the assistant's own provider health and 95th-percentile tool latency.

AZURE

Azure Resource Health

Resource Health activity-log events, plus checks on stored Azure alerts — active, missing, or stale — beside the on-prem signals.

ACT

Artifacts & workflows

Diagnostic artifacts, support intake, and assignee email drafts. Five tools here can write; all are audited, and none is reachable from the sandbox.

// The interesting part

Treat the model like a brilliant operator you don't trust yet.

Same evidence-first discipline as the platform — applied to the AI.

What it can do

  • Call 38 typed tools over 15 catalogued sources
  • Read capped rows that admit when they're truncated
  • Correlate alerts, faults, events & reports — and rate each link
  • Write its own analysis code, in a sandbox that denies everything not allowlisted
  • Produce exports, read-only scripts, support items & previewed emails

What it can never do

  • Write SQL — every query is a curated, typed function
  • Pick its own model — the browser can only send a catalog key
  • See a secret — keys never enter results; diagnostics redact credentials
  • Write outside five audited tools — support intake is the only general record
  • Run the scripts it writes — those are for a human
// What was hard

Five problems a demo never hits.

Most of the fixes moved a rule out of the prompt and into code.

Ten out of thirty is a diagnosis, not a score. The June live sweep started at 10 of 30 prompts, failing for a mix of reasons. So each failure got a cause before it got a fix: tool routing, a model breaking the answer schema, prompt wording, a too-literal test, or the provider being down. Fixing the layer that was actually wrong took the suite to 30/30 the same day. Behind it now: 502 automated tests, plus the 31-prompt live suite, which is run by hand.

The model talked its way around a guardrail. Asked to email an outside address, it refused in words, then reread the request as "send it to me" and called the email-preview tool anyway. A sterner prompt wasn't the fix. Now a literal address in the conversation removes both email tools from the model's list. Rules are enforced by which tools exist, not by what the model promises.

Good at tools, bad at forms. DeepSeek V4 Pro chose tools well but kept breaking the structured-answer schema. Rather than drop it, the catalog grew capability flags and DeepSeek moved to plain-markdown answers; seven failing prompts passed on rerun. A schema-breaking answer now marks its model degraded.

Models don't know when they're done. In forced final turns, some printed their own tool-call markup or narrated a plan instead of answering; others quit after the setup tools. One diagnostic run signed off with "The answer is 42." Now wait rules hold the loop open until the evidence exists — a root cause needs a correlation or diagnostics tool, an email a preview — and a stream filter drops anything before "## Answer."

A timeout must never cut an email in half. Read tools stop at 120 seconds; the five write tools are exempt, because a half-sent email is worse than a slow one. Sends are claimed atomically, recipients are rechecked on the server, and each outcome is recorded as Sent, Failed, or Uncertain — the last because sometimes that's the honest answer.

// Operator surfaces

The investigation and artifact views.

No screenshots — the views, in words.

investigation

A vague question that walks the evidence

Ask "something's off on this cluster." It pins down the cluster, then pulls its active alerts, event bursts, OS Config drift, and pipeline logs. Each finding comes back labeled report-backed or reportless, with a strength rating for each correlation and links to the exact rows and raw reports used.

artifacts

A diagnostic you can hand someone

When the evidence is too big for chat, or the fix has to run elsewhere, it writes a CSV/JSON export or a read-only diagnostic script — size-capped, hashed, returned as a download link, and ready to attach to an internal email draft for the assigned owners. It never runs the script itself.