Initial contest release of IRIS Incident Memory.
Incident investigation for InterSystems IRIS.
IRIS Incident Memory is a focused management portal that helps an operator answer three questions quickly:
What broke, what changed around it, and have we seen something similar before?
Instead of presenting another broad administration dashboard, it builds an evidence-backed incident timeline from native IRIS management data and keeps a searchable memory of previous incidents.
Built for the 2026 InterSystems Programming Contest: Build Your Own Management Portal.

IRIS Incident Memory:
%SYS_Task.History%SYS.ProcessQueryVECTOR(DOUBLE,128) columnThe interface is deliberately evidence-first. Similarity results remain tied to the IRIS events that produced them rather than being presented as unsupported conclusions.
Clone the repository:
git clone https://github.com/martynas816/iris-incident-memory.git
cd iris-incident-memory
Start the application:
docker compose up --build
Then open:
http://localhost:52773/incident-memory/
The first clean startup can take around a minute. The bootstrap waits for IRIS Task Manager history to become available before the initial incident scan.
No manual class import, Management Portal configuration, SQL grant, or initialization command is required.
Stop the application with:
docker compose down
The container automatically:
IncidentMemory classes/incident-memory IRIS web applicationA clean-container validation produced:
IMPORT STATUS: 1
TASK HISTORY READY: 1
new_incidents: 7
new_changes: 26
indexed: 7
ROLE STATUS: 1
WEB APP STATUS: 1
SQL GRANT STATUS: 1
The resulting API returned 7 incidents, 33 timeline events, 5 similarity matches, and the portal returned HTTP 200. Counts depend on the management history of the IRIS instance and are not hard-coded application data.
IRIS management data
|
+-- %SYS_Task.History
+-- %SYS.ProcessQuery
+-- System Monitor
|
v
IncidentDetector
|
+--> Incident persistent objects
+--> TimelineEvent persistent objects
|
v
Embedded Python TextVectorizer
|
v
VECTOR(DOUBLE,128)
|
v
IRIS HNSW index + VECTOR_COSINE
|
v
SimilarityIndex
|
v
REST API
|
v
Incident investigation portal
Task Manager history contains more than failures. IRIS Incident Memory distinguishes:
Only anomaly records become incidents. Configuration records remain timeline context.
This avoids treating every non-empty Task Manager history field as an error.
The contest build intentionally uses a lightweight deterministic representation rather than an external machine-learning service.
IncidentMemory.TextVectorizer runs as Embedded Python and:
The representation is persisted and searched with native InterSystems IRIS Vector Search.
This means the application has no external model API, model download, or network dependency for similarity retrieval.
IncidentMemory.Incident stores detected incidents.
IncidentMemory.TimelineEvent stores anomaly and change events used by the operational timeline.
Embedded Python is used for management-data processing, normalization, incident representation, and JSON/API assembly.
Incident vectors are stored as:
VECTOR(DOUBLE,128)
The application creates an HNSW index using cosine distance and ranks similar incidents using VECTOR_COSINE.
IncidentMemory.REST extends %CSP.REST and serves both the API and the web application.
Main endpoints:
GET /incident-memory/
GET /incident-memory/health
GET /incident-memory/api/overview
GET /incident-memory/api/overview/:incidentId
Dockerfile compose.yaml entrypoint.sh iris.scriptsrc/IncidentMemory/ API.cls Incident.cls IncidentDetector.cls ManagementSnapshot.cls REST.cls SimilarityIndex.cls StartupGate.cls TextVectorizer.cls TimelineEvent.cls
web/ index.html
The contest container exposes the incident portal without a login for straightforward local evaluation.
The web application receives only:
%DB_USERIncidentMemoryReader roleIncidentMemoryReader is granted read access only to the application tables required by the portal.
The supplied configuration is intended for a local contest/demo environment. Do not expose the unauthenticated development container directly to an untrusted network.
The application was validated from a completely fresh container using InterSystems IRIS Community Edition 2026.1.0.234.1com.
The clean test required no interactive IRIS configuration after the container was started.
compose.yaml restricts the container to 20 CPUs because of the IRIS Community Edition core limit.
Related InterSystems Ideas Community Opportunity:
AI analysis of error logs
https://ideas.intersystems.com/ideas/DPI-I-574
IRIS Incident Memory applies that operational-investigation goal to IRIS management/task-history evidence by turning abnormal events into persistent, comparable incidents with historical retrieval.
The current implementation does not send operational data to an external LLM. Its incident representation is generated locally with Embedded Python and searched natively inside IRIS.
Many management portals answer:
What is the system doing right now?
IRIS Incident Memory focuses on a different operational workflow:
Something went wrong. What evidence surrounds it, what changed nearby, and what previous incident looks most like this one?
The aim is not to replace the full InterSystems Management Portal. It is to make one investigation workflow much faster and easier to reason about.
InterSystems Programming Contest: Build Your Own Management Portal
https://openexchange.intersystems.com/contest/48
MIT