← All projects PROBE
Forge the Future 2026 — Finalist · Elastic × AWS

PROBE

A shared “HIVE” that learns incident → fix patterns across a vendor’s whole deployment fleet from sanitized fingerprints, never raw logs — so the 500th site never rediscovers a bug the 1st already fixed.

CUSTOMER DEPLOYMENTHIVE (SHARED)REASONINGJIRA = UI + STATE MACHINERaw logs & traces — PII lives here. Never leaves the boundary.Raw logs & tracesPII lives here. Neverleaves the boundary.Detector — 7 anomaly-detection methods, validated on an OpenTelemetry demo fleetDetector7 anomaly-detectionmethods, validated on anOpenTelemetry demo fleetElastic ML CATEGORIZE — variable tokens → symptom skeletonElastic ML CATEGORIZEvariable tokens → symptomskeletonAmazon Comprehend — redacts residual PII (Aadhaar, health IDs)Amazon Comprehendredacts residual PII(Aadhaar, health IDs)Fingerprint index — Elasticsearch · ELSER + hybrid RRF retrievalFingerprint indexElasticsearch · ELSER +hybrid RRF retrievalElastic connectors — Jira (built) and GitHub PRs/commits sync into ESElastic connectorsJira (built) and GitHubPRs/commits sync into ESMCP tool surface — match_incident · get_resolution · blast_radius · fleet_signal · check_version_risk · submit_outcome · upsert_runbookMCP tool surfacematch_incident ·get_resolution ·blast_radius · fleet_signal· check_version_risk ·submit_outcome ·upsert_runbookBedrock · Claude — vendor’s own agent (Mode 1) or managed diagnose() (Mode 2)Bedrock · Claudevendor’s own agent (Mode 1)or managed diagnose() (Mode2)Remediator — FastAPI + React: files the ticket, duplicate check, licence-aware routingRemediatorFastAPI + React: files theticket, duplicate check,licence-aware routingJira ticket — fingerprint in → ranked fix + runbook comment out → human validatesJira ticketfingerprint in → ranked fix+ runbook comment out →human validatestelemetryanomalyfingerprintsearchranked fixcreates tickettickets synced
Built in repoBuilt (service)Designed — not in repo yetBoundary / PIIExternal service
Hover a box to trace its connections. Animated packets show the live Detector → Jira path; dashed edges are the designed fingerprint path.
The problem

One product. Hundreds of isolated deployments.

A vendor ships one product (an HMS, ERP, GitLab-style platform) into hundreds of on-prem or regulated environments. Each deployment breaks alone; logs can’t cross the customer boundary, so Site A, B and C re-diagnose the same incident, and support cost and MTTR grow with fleet size.

⛓

Fleet, not tenant

Healthcare (Bahmni, Aarogya), financial and government vendors run identical software in walled-off environments.

🔒

Logs can’t travel

Raw logs carry Aadhaar numbers, health IDs, patient records. Compliance keeps them in the deployment.

🧠

Knowledge doesn’t travel

Without raw logs to compare, nothing carries the fix from one site’s incident to the next site’s identical one.

System architecture

Four layers, one privacy boundary

The hero diagram above is the full design. The key idea: the sanitization boundary and the matching boundary are the same line. Every deployment runs the same software, so the fields that enable cross-fleet matching — service, error class, version, fault taxonomy — are exactly the fields that carry no PII.

1

Detector (built)

Seven independent methods — z-score, change-point, Elastic ML jobs, a supervised classifier and combinations — validated against the Elastic OpenTelemetry “Astronomy Shop” with injected faults.

2

Sanitizer (designed)

Elastic ML CATEGORIZE strips variable tokens; Comprehend redacts what remains. Only the derived, client-agnostic fingerprint crosses.

3

HIVE + MCP (designed)

Shared Elasticsearch index with ELSER + RRF hybrid retrieval, exposed as seven MCP tools. Same tools serve two SKUs.

4

Remediator (built)

FastAPI + React app that files the Jira ticket, provisions both Elastic↔Jira connectors and detects duplicates.

Privacy boundary

From raw log line to fingerprint

Watch one incident get reduced to the only thing allowed to leave the deployment. (Illustrative example.)

raw (inside)ERROR checkout-svc patient 4821-5530-1177 connect to 10.0.3.7:5432 refused at 2026-03-02T09:14:07Z (v2.4.1)
categorizeERROR checkout-svc <ID> connect to <IP>:<PORT> refused at <TS> (v2.4.1)
redact PIIERROR checkout-svc <ID> connect to <IP>:<PORT> refused (v2.4.1) PII scan: clean
crosses → HIVE{ service: checkout-svc, error_class: ConnRefused, version: 2.4.1, skeleton: “connect … refused” }

Stays in the deployment

  • Raw log lines and stack traces
  • Patient / customer identifiers
  • Hostnames, IPs, tenant config
  • Anything identifying who hit the bug

Crosses into the HIVE

  • Service name, error class, fault taxonomy
  • Product version + date window
  • Symptom skeleton (categorized, redacted)
  • Exactly the fields that make matching work
Operating loop

Detect → match → suggest → validate → learn

Jira is the UI and the state machine. Click a step (or let it auto-play). Payloads shown are illustrative.

Anomaly detected → Jira ticket created

A Detector flags a deployment. The Remediator files a Jira ticket that carries the sanitized fingerprint, and warns about likely duplicates found in the synced Jira index.

POST /api/tickets { project: "OPS", summary: "checkout-svc: connection refused", fingerprint: "checkout-svc|ConnRefused|v2.4" } → route: direct_jira (licence: basic)

Agent searches the HIVE

Fingerprints are matched against prior incidents across the whole fleet using hybrid retrieval (ELSER + keyword, fused with RRF) — same software everywhere, so service, error class and version line up.

match_incident(fingerprint) #1 site-A 2026-03 sim 0.91 #2 site-F 2026-05 sim 0.88 #3 site-K 2026-06 sim 0.74 fleet_signal → 3 other sites seeing it now

Ranked remediation posted as a Jira comment

Ranked fixes + runbooks + a confidence score and why it matched, posted back as a comment. Suggestion-only — nothing is applied automatically.

PROBE commented: Likely cause: pool exhaustion after v2.4 Fix: raise db.pool.max to 40, restart Runbook: RB-112 Confidence: 0.86 Why: same skeleton at 2 sites, same version window

Human confirms or corrects

The engineer pings back with new info, corrects the agent, or confirms. Only a human moves the ticket to COMPLETE. Jira is the state machine — there is no custom workflow engine.

status: In Progress → COMPLETE submit_outcome(ticket, worked=true)

Runbook created or updated

On validation the agent upserts a runbook and links it to the anomaly, incident, remediation, ticket and author. Each validated fix makes the next search better; later matches need less reasoning, not more.

upsert_runbook(RB-112) links: anomaly · incident · remediation ticket · author hive size +1
Remediator internals

One interface, two execution paths

Elastic has two unrelated “connectors”. Only the Kibana .jira action connector can create a Jira issue — and it is licence-gated to Gold, discontinued for new customers. So PROBE runs both paths behind one interface and picks at runtime.

REQUESTCAPABILITIES.RESOLVE_ROUTEEXECUTION PATHRESULTPOST /api/tickets — X-Probe-Key guard · project + issue typePOST /api/ticketsX-Probe-Key guard · project+ issue typeLicence probe — GET /api/actions/connector_types → enabled_in_license on “.jira”Licence probeGET /api/actions/connector_types → enabled_in_licenseon “.jira”elastic_connector — Kibana .jira action connector · Gold+ · pushToService (API v2)elastic_connectorKibana .jira actionconnector · Gold+ ·pushToService (API v2)direct_jira — POST /rest/api/3/issue · ADF description · always worksdirect_jiraPOST /rest/api/3/issue ·ADF description · alwaysworksJira issue — UI states which path created itJira issueUI states which pathcreated itlicensedfree / Basicconnector fails → retry
DecisionKibana pathDirect path
Licensing is read at request time — never assumed. A licensed-but-failing connector falls back to the direct path so the ticket still gets created.
Content connectorAction connector
DirectionJira → ElasticsearchElasticsearch → Jira
Purposeindex tickets for search / dedupecreate tickets
Lives onElasticsearchKibana
LicenceBasic (free)Gold

Hardening

  • Credentials Fernet-encrypted at rest; API only returns masked values
  • Pre-flight check of BROWSE_PROJECTS + CREATE_ISSUES
  • JQL escaping, ADF conversion, retries with Retry-After
  • 58 backend tests with respx standing in for ES, Kibana and Jira
Detector evidence

How the seven detectors actually performed

Honest numbers from DETECTORS.md: flags detected out of 11 injected faults on the demo fleet. The supervised classifier is not shown — it reports 55% test accuracy (a different metric). The two-tier v2/v3 reruns improved recall but were only partially re-measured.

Elastic ML jobs5-min bucket vs 25–40 s faults
0 / 11
Two-tier v1z-score gated by CHANGE_POINT
2 / 11
Change-pointCHANGE_POINT + call-graph rank
5 / 11
PROBE Detectorz-score over bucketed aggregations
5 / 11
Why Elastic ML scored 0/11: its default 5-minute bucket span is a poor match for 25–40 s fault windows — confirmed at both record and bucket level, not just a threshold issue. Two-tier traded recall for precision by design (CHANGE_POINT confirmations with p-values as low as 1e-86).
Deployment modes

Two SKUs, one contract

The HIVE is a store plus these seven MCP tools.

Mode 1 · Bring your own agent

Vendor imports the HIVE as an MCP tool into their own Agent Builder + LLM. Best reasoning and privacy posture; PROBE is infrastructure, not a product they adopt wholesale.

Mode 2 · Managed agent

We run the agent; the vendor calls one turnkey diagnose(). More generic, faster to adopt, no agent stack needed.

MCP toolWhat it does
match_incidentFind prior HIVE incidents with a matching symptom skeleton
get_resolutionFetch the validated fix / runbook for a matched incident
blast_radiusPRs/commits in the version’s date window that likely caused it
fleet_signalAre other deployments seeing the same symptom right now?
check_version_riskScore a version by known incident history before rollout
submit_outcomeRecord whether a suggested fix actually worked
upsert_runbookCreate / update the runbook a validated fix links to
Stack & honest status

Elastic is the brain, AWS is edge, privacy and reasoning

Elastic

ML anomaly detectionCATEGORIZEES|QLELSER + RRFAgent BuilderWorkflowsMCP serverKibanaConnectors

AWS

Bedrock (Claude)ComprehendIoT CoreGreengrassAgentCore
Status: this repository implements the Detector and Remediator stages end to end. The Correlator (LLM-via-Bedrock ranking) and the shared HIVE index are designed but not yet in the repo; causal-changepoint-detection/’s heuristic ranking is the stand-in. Target cost ≈ $0.10 per incident and falling as the hive learns; suggestion-only, human-in-the-loop.
← PreviousPocketForge Next →MUDRA+