Initial Release
See what changed between two IRIS captures, and which scheduled tasks deserve attention.
IRIS Driftline is a focused, read-only operations workspace built for the InterSystems Programming Contest: Build Your Own Management Portal. It calls the official SysAdmin API to show the next 48 hours of scheduled tasks, group non-success run history by task, and compare two captures of tasks, upcoming runs, web applications, and roles. It is not a replacement for the entire Management Portal; it helps an operator answer one question quickly: what changed, and what may need a closer look?
/api/admin/v2/tasks, /v2/task/history, /v2/task/upcoming, and /v2/task/manager for a schedule and reliability view.403 on one does not suppress the others.Requires Node.js 20+ and a running InterSystems IRIS 2026.2 Community Edition instance with the SysAdmin API available. The official Community Edition guide explains how to start a container and secure its default accounts. Bind its web port to localhost for local development.
git clone https://github.com/RowletCC/iris-driftline.git
cd iris-driftline
IRIS_URL=http://127.0.0.1:52773 \
IRIS_USER=_SYSTEM \
IRIS_PASSWORD='your-local-iris-password' \
npm start
Open http://127.0.0.1:8781. Select Capture live state. To compare two moments, select Set current as baseline, make a change in your own IRIS instance, then capture again. You can export the current capture as JSON or import a previous baseline. Exports can include system metadata; store them accordingly.
Schedule timestamps come from the IRIS instance clock. Driftline does not infer or convert its time zone, so compare timestamps with the instance’s own time setting.
For a quick interface preview without an IRIS instance, run DEMO=1 npm start. Demo records are synthetic and labeled as such.
The server binds to 127.0.0.1 by default. If you make it reachable from another host, put authentication and TLS in front of it and use a least-privilege IRIS account. The browser never sees IRIS_PASSWORD; do not check credentials into Git.
The local Node server is a same-origin gateway because IRIS intentionally does not return CORS headers for these admin endpoints. A fixed endpoint allowlist prevents it from becoming an arbitrary HTTP proxy. Every IRIS request has a 12-second timeout. The UI uses text nodes instead of HTML injection for API-derived values, and the server sends a restrictive Content Security Policy.
The comparison is deliberately narrow. It does not treat a missing endpoint as a deletion. It can compare only the fields returned to the configured account and the first 500 rows from each list endpoint. The operational pulse is a point-in-time summary, not a time-series monitor; journal-file count is not a log-event count. A human should verify any change before using the Management Portal to act on it.
npm test
The tests cover field allowlisting, task-history grouping, stable-key diffs, authentication/path handling with a mock IRIS server, and UI delivery.
Live smoke test: against a disposable IRIS 2026.2 Community Edition container, all 12 selected SysAdmin endpoints responded and a full capture returned no endpoint errors. The capture included 16 tasks, 22 upcoming entries, 35 processes, 75 audit-event records, and 3 journal-file records. These counts describe only that local test instance, not a typical production system.
This application and its documentation were developed with AI assistance. The author reviewed the API choices, ran the tests, and verified the application against a local IRIS Community Edition instance. No proprietary or customer IRIS data is included in this repository.