SentrAI
Cybersecurity + AI
An accountability-based security system that follows CIANA and gives CXOs proof, not just alerts.
“A sentry doesn’t chase you. It just guards the gate.”
All factual claims were verified on 27 Sep 2026; sources are in mvp/research/SOURCES.md. Items marked [FILL] still need input.
How this document is organized
- Sections 1 to 3: the problem, our principles and the team.
- Part A, Final product (sections 4 to 14): the full design we are building toward.
- Part B, MVP product (sections 15 and 16): what we built for the 29 Sep pitch and what the demo shows.
1. Problem & Target Organization
Target: Singapore SMEs and private education institutions that hold large amounts of personal data but have only one or two IT staff and no 24/7 security team.
Problem statement
Small organizations already get security alerts. The breach happens because nobody acts on them in time, and afterwards nobody can prove who knew what and when.
Why this target
- They are bound by the PDPA. Since 1 Oct 2022, s48J lets the PDPC impose a financial penalty of up to S$1 million or 10% of annual Singapore turnover (where that turnover exceeds S$10M), whichever is higher. Source: PDPC Guide on Active Enforcement (Oct 2022), https://www.pdpc.gov.sg/-/media/files/pdpc/pdf-files/other-guides/active-enforcement/guide-on-active-enforcement_oct2022.pdf
- They cannot afford a SOC, so alerts pile up (alert fatigue).
- Many PDPC enforcement decisions involve basic weaknesses left unfixed:
- ChampionTutor (Oct 2021, S$10,000), the video’s opening hook. A Dec 2020 pentest found an SQL-injection hole that was never fixed. By Feb 2021, 4,625 students’ data was being sold on the dark web, and the company only learned of it from the PDPC. https://www.pdpc.gov.sg/-/media/files/pdpc/pdf-files/commissions-decisions/decision–championtutor-inc-private-limited–10082021.pdf
- PPLingo / LingoAce ([2023] SGPDPC 12, published May 2024, S$74,000). Its admin password was “lingoace123”, unchanged for 2+ years, with no MFA, and was brute-forced. 557,144 users were affected, 303,238 of them students. https://www.pdpc.gov.sg/-/media/files/pdpc/pdf-files/commissions-decisions/gd_pplingo-pte-ltd-(revised)_241023.pdf
- North London Collegiate School (Singapore) (Feb 2022, S$10,000). Applicants’ passports, NRICs and birth certificates sat in a website folder that search engines indexed, protected only by robots.txt. https://www.pdpc.gov.sg/-/media/Files/PDPC/PDF-Files/Commissions-Decisions/Decision—NLCS—01122021.pdf
- Alert fatigue: SOC teams receive ~4,484 alerts a day and ignore 67% of them (Vectra AI, 2023 State of Threat Detection, vendor survey of 2,000 SOC analysts). https://www.vectra.ai/resources/2023-state-of-threat-detection
Customer hypothesis (not yet validated)
We have not tested this positioning with a real customer. Treat it as a working assumption for the pitch, not a validated finding.
- Initial wedge: small Singapore tuition and private education businesses with limited IT support. Other Singapore SMEs remain future customers once the wedge is proven.
- Everyday user: the IT administrator or outsourced IT provider who watches the alerts.
- Buyer: the business owner or operations head who signs off on spend.
- Central promise: help small teams act on security warnings before they become prolonged incidents, with a clear record of the response.
What if humans were not enough
Human errors are bound to happen. Humans stay in charge, but when the risk crosses the tolerance the organization itself set, SentrAI applies a temporary, reversible fix and records exactly who was warned and when.
Accountability Based System
To minimize the risk of human error, our team has formulated a plan that can be turned into a system: every alert, acknowledgement and action is recorded in a tamper-evident log, so responsibility is always provable.
2. Two Principles: CIA + NA
| CIA | NA |
|---|---|
| Confidentiality | Non-repudiation |
| Integrity | Authentication |
| Availability |
3. Team Members & Roles
| Member | Role | Owns | Deliverable for the 29th |
|---|---|---|---|
| Erick Sientaro | Developer | Demo lab, collectors, risk engine, Jev integration, hotpatch playbooks, dashboard, Telegram bot | Working demo |
| Ishmail | CEO | Problem story, business case, pitch narration, final call on scope | Pitch script and video narration |
| Hozen | Notetaker | Meeting notes, this document, keeping sources in mvp/research/SOURCES.md current, slide content, recording checklist |
Slides and verified sources |
Erick carries the whole build, so the MVP (section 15) is scoped to what one developer can finish in two days.
Part A: Final Product
The full design SentrAI is built toward. Part B (section 15) says which pieces the MVP already runs.
4. How SentrAI Gets the Data from Each System Layer
Lightweight collector agents on each host read logs the system already produces. Nothing is installed inside the application code.
| Layer | Data source | What we look for | How we collect it |
|---|---|---|---|
| Web application | Nginx/Apache access log, app auth log, ModSecurity WAF log | Failed logins, SQLi/XSS payloads, 4xx/5xx spikes | Python agent tails log files |
| Database | PostgreSQL pgaudit / MySQL audit log |
Bulk SELECT/COPY off-hours, new DB users, privilege grants |
Tail audit log, poll pg_stat_activity |
| OS (Linux) | /var/log/auth.log, auditd, journald, process list (psutil), open ports (ss -tulpn) |
Web server spawning a shell, new SUID files, new listening ports | Python agent + psutil |
| OS (Windows) | Windows Event Log (4625 failed logon, 4688 process creation, 4720 user created), Sysmon | Same as above | pywin32 / wevtutil |
| Network | Suricata or Zeek alerts, firewall drop logs | Port scans, brute force, beaconing | Read eve.json |
| Cloud config | AWS API (S3 bucket ACLs, security groups, IAM) | Public buckets, port 22 open to 0.0.0.0/0 | boto3 scheduled scan |
Flow: Collector → normalize to one JSON event format (section 14) → Redis stream → Rules + Jev classifier → Risk Engine → Dashboard / Notifier / Responder.
The MVP covers only the web, database and OS layers, read from the demo portal’s log files (section 15).
5. Risk Level: How It Is Calculated
Base severity
| Severity | Base Score | Example Anomalies |
|---|---|---|
| Low | +5 to +10 | 5 failed logins on admin, SSL certificate expiring soon |
| Medium | +15 to +25 | Port scan detected, unusual admin login time |
| High | +30 to +45 | SQL injection payload detected, brute force on admin portal |
| Critical | +50 to +70 | Web server spawned a shell, bulk database dump during off-hours |
Formula (0 to 100 index)
A 0 to 100 index is appropriate: executives read it instantly and it maps cleanly to traffic-light bands. Plain addition can pass 100 (Critical +70 plus penalties), so the raw points are passed through a curve that can never exceed 100.
event_points = base_severity × ai_confidence × asset_criticality
raw_score = Σ open event_points + inaction_penalty − resolved_decay
risk_index = round(100 × (1 − e^(−raw_score / 60)))
ai_confidence: 0.5 to 1.0, from Jev (section 6).asset_criticality: 1.0 normal, 1.5 holds PII, 2.0 crown jewels.inaction_penalty: +5 per hour per unacknowledged incident, capped at +30 per incident.resolved_decay: points of an incident are removed once it is fixed and verified.
Examples: raw 35 → 44, raw 70 → 69, raw 97 → 80, raw 140 → 90.
Risk tolerance bands (threshold configurable per organization)
| Index | Band | What happens |
|---|---|---|
| 0 to 29 | Green | Logged only |
| 30 to 59 | Amber | Operator notified, guided fix offered |
| 60 to 79 | Red | Hourly reminders, supervisor copied |
| 80 to 100 | Critical | Autonomous temporary containment + evidence report |
Risk Escalation Over Time
The inaction penalty is what makes the index climb while nobody acts. Slide graphic: plot the index against time for the demo incident, marking when each alert was sent and when the 80 threshold was crossed.
6. AI Risk Categorization with Jev (TypeSafe System One)
Jev is TypeSafe’s System One model. It answers narrow, structured questions about text and returns typed answers with probabilities, in about 100 ms per query. Code keeps control of the workflow; Jev only makes the judgment calls. Python SDK: typesafe_sdk.
Three-stage pipeline
- Rules (microseconds, local): signatures for obvious cases (
UNION SELECT, 5 failed logins in 60 s). Confidence fixed at 1.0. Also groups raw log lines into events so Jev is not called on every line. - Jev (≈100 ms): classifies every event the rules cannot settle. Its probability becomes the AI Confidence Factor.
- Claude (seconds, off the hot path): writes the plain-English explanation, recommended fix text and the evidence report. It never sets the score or runs commands.
Questions asked to Jev in parallel over one event
# pip install typesafe-sdk ; set TYPESAFE_API_KEY in the environment
from typesafe_sdk import Choice, Noul, TypeSafeClient
state = {"event": {"layer": "web", "raw": "POST /login 401 user=admin src=203.0.113.45"}}
questions = {
"category": Choice(
instructions="What kind of activity does `event.raw` show?",
criteria={
"benign": "Normal user or system activity",
"brute_force": "Repeated login/password guessing",
"sql_injection": "SQL syntax injected into input",
"xss": "Script/HTML injected into input",
"port_scan": "Probing many ports or services",
"privilege_escalation": "Gaining higher rights than granted",
"data_exfiltration": "Unusual bulk data leaving the system",
"misconfiguration": "Insecure setting or exposed resource",
},
),
"malicious": Noul(
instructions="Is `event.raw` likely part of an attack rather than normal use?"
),
}
with TypeSafeClient() as client: # model defaults to jev-latest
answer = client.system_one(state=state, questions=questions)
category = answer.choices["category"].choice
ai_confidence = min(1.0, max(0.5, answer.choices["category"].probabilities[category]))
p_malicious = answer.nouls["malicious"].noul # P(yes), 0 to 1
categorypicks the base severity from the table in section 5.- The probability of the chosen category, clipped to 0.5 to 1.0, is the
ai_confidence. - Confidence-gated routing: if Jev is uncertain (0.4 to 0.6), no automatic action is taken; the event goes to the operator as “needs review”.
SDK fields verified against https://docs.typesafe.ai/sdk/python.md and https://docs.typesafe.ai/api.md (27 Sep 2026). Install typesafe-sdk; auth via TYPESAFE_API_KEY (from https://console.typesafe.ai/). Choice answers expose .choice, .probabilities and .confidence; Noul answers expose .noul (P(yes)). Docs claim “about 100 ms” per query. [FILL] get a TypeSafe API key before building.
7. Main Features
Risk Tolerance Monitoring
Monitors the current risk index against the organization’s threshold. If the index crosses it, corrective action is taken (section 8).
Preventive Actions
- Proactive Scanning & Asset Monitoring: daily scans of every monitored endpoint.
- Early-Warning Risk Scoring: risk rises before an incident, not after.
- Guided Operator Mitigations: AI-recommended one-click fixes offered before the threshold is reached.
- Baseline State Preservation: signed backup/snapshot taken before any corrective action is needed.
Example incident card (vulnerability feed)
VULN-ID #2 · Critical · Exposure Unencrypted production database dump
db_prod_members_backup.sqlfound on public buckets3://aegis-temp-dev-share(ACLpublic-read). Cause: an employee uploaded a manual dump to troubleshoot, bypassing standard IAM and encryption policy. Records at risk: 1,240,000 PII · AI confidence: 99.8% Recommended: remove the public ACL, enable default encryption, rotate DB credentials.
Dashboard tile (mockup data): Endpoints Monitored 1,482 · +10% daily coverage
“Our Preventive Actions maintain continuous hygiene through daily scanning, enforce accountability by penalizing unaddressed risks with +5 points per hour, offer guided one-click operator fixes to cool down the risk gauge, and maintain cryptographically signed baseline backups before any threat can materialize.”
Corrective Actions
- Emergency State Freeze: captures a read-only snapshot of critical system components.
- Autonomous Containment & Temporary Fixes: deploys defensive firewall rules, isolates compromised components and terminates malicious connections (section 8).
- Non-repudiation Report: end-to-end audit report covering root cause, affected components, system modifications and incident timeline.
- Human Handoff & Rollback: technical and incident reports go to the operator for review and recovery.
8. Temporary Hotpatch Workflow
Detect → Snapshot → Pick playbook → Apply with TTL → Verify → Notify → Human decides
- Detect: risk index crosses the threshold, or the operator presses Approve & Patch.
- Snapshot: save current firewall rules, affected config files, account states and DB role grants. Hash and sign the snapshot.
- Pick playbook: only from a pre-approved allowlist, matched to the category:
brute_force→ block IP (iptables), lock account, enable rate limitsql_injection→ add WAF rule, block IPprivilege_escalation/ shell spawned → kill process, isolate container/host from the networkdata_exfiltration→ revoke the DB session, block outbound traffic to the destinationmisconfiguration(public S3 / open port 22) → remove the public ACL, restrict the security group to an allowlist
- Apply with TTL: every hotpatch expires (default 2 h) unless a human makes it permanent, so temporary fixes never silently become permanent config drift.
- Verify: re-run the check (retry the attack signature, re-scan the port). If the fix failed or broke a health check, roll back automatically from the snapshot.
- Notify: send what changed, with a one-click Rollback.
- Human decides: Make Permanent / Extend / Rollback, with a justification written to the audit log.
9. Notification to Operator
Channels: dashboard (always) → Telegram bot (MVP) → email (backup). SMS/phone call on the roadmap.
Escalation ladder
| Trigger | Who is notified |
|---|---|
| Incident opened (Amber) | On-duty operator |
| No acknowledgement after SLA (default 2 h) | Operator reminder + team lead |
| Red band | Team lead + IT manager |
| Critical / autonomous action | IT manager + CXO, evidence report attached |
Non-repudiation, stated honestly: we can prove an alert was delivered (Telegram message ID and timestamp) and acknowledged (button press tied to the operator’s account). If no button is pressed we cannot prove it was read, so the report says “Delivered 14:00, Ack: none” rather than “the admin saw it”. Every notification and acknowledgement is appended to the hash chain.
10. Executive Escalation & Accountability Workflow
Metadata
Every action taken is stored in a hash-chained audit log: each record carries the hash of the previous one, so any edit or deletion breaks the chain and is detectable.
“Higher-Ups” Evidence Report
| Report Field | Prototype Data Example | Why Higher-Ups Need This |
|---|---|---|
| Responsible Entity | Admin: John Doe (ID: SEC-409) / Shift Bravo | Identifies who was on duty during the inaction window |
| SLA Violation | Overdue by 7 hrs 15 mins (Policy SLA: 2 hrs) | Clear metric proving operational neglect against company policy |
| Timeline of Inaction | 14:00 anomaly detected (+25) · 16:00 reminder 1 (+10) · 21:00 critical limit breached (+45) | Proves progressive neglect, not a sudden incident |
| Forced Action Taken | Autonomous override engaged: port 22 isolated | Shows the AI had to step in because no human responded |
| Proof of Non-Repudiation | Delivered to operator @ 14:00 (Ack: none) | Hash-chained delivery receipt removes the “I was never notified” excuse |
Active Risk Registry Data Schema
| Field | Example Value | Description |
|---|---|---|
| Risk ID | RSK-2026-081 | Unique incident tracker |
| Detected Anomaly | Unrestricted SSH port 22 open | Identified by breach scanner |
| Base Risk Points | +20 pts | Initial severity weight |
| Time Unaddressed | 3 hours | Time since alert without response |
| Inaction Penalty | +15 pts | 3 hrs × 5 pts/hr |
| Current Risk Contribution | 35 pts | Base + inaction penalty |
| Recommended Preventive Action | Apply IP whitelist rule to port 22 | AI-suggested preventive fix |
| Action Buttons | [Approve & Patch] or [Reject with Justification] | The only two ways to clear this risk |
“Most security platforms stop at alerting the administrator. Our system introduces true administrative accountability: if an operator neglects warnings and allows the risk score to breach the tolerance threshold, the system not only takes autonomous corrective action to protect the company, but it also compiles an immutable Executive Evidence Report for leadership, proving the timeline of inaction with non-repudiable audit receipts.”
11. Ethics of the Sentry Response
Left alone, a sentry does no harm. Try to get past it, and it stops you.
Position: SentrAI never attacks back. It holds the line and never crosses it.
Why “hack back” is ruled out:
- Illegal: accessing or disrupting the attacker’s machine without authorization is an offence under Singapore’s Computer Misuse Act 1993, whatever the motive. Unauthorised access is s3 (up to S$5,000 and/or 2 years, first offence). Unauthorised modification is s5, and unauthorised obstruction/interference (“interferes with, or interrupts or obstructs”) is s7 (each up to S$10,000 and/or 3 years). https://sso.agc.gov.sg/Act/CMA1993
- Wrong target: attacks usually come through spoofed IPs, VPNs or hijacked innocent computers. Striking back hurts a victim.
- Escalation: retaliation invites a bigger attack and exposes the company to liability.
What the “prick” actually is (all inside our own perimeter):
- Block and isolate: firewall rule, account lock, rate limit.
- Tarpit: slow the attacker’s connections so the attack becomes expensive.
- Deception: honeypot login pages, honeytoken DB rows and credentials. Any touch is a near-certain alert.
- Evidence: preserve logs and hand them to SingCERT or the police. The attacker is pricked by attribution and prosecution, not retaliation.
In the MVP: the demo portal has a honeypot login page, a planted credential, bait member rows and a tarpit, all off by default (run_demo -Tripwires). Any touch becomes a confidence 1.0 incident (see mvp/lab/README.md).
12. Agentic Multi-Agent Design
Each agent specializes in one layer or OS, which gives a different approach for each computer system.
| Agent | Equivalent in the reference team | Does | Can execute? |
|---|---|---|---|
| Warden (Lead / Orchestrator) | Dumbledore (CEO) | Receives incidents, delegates, merges findings, owns the risk index | No |
| Gatehouse (Web layer) | Ron (CTO) | Reads web/WAF logs, proposes WAF rules | Propose only |
| Watchtower (Network / Scanner) | Fred + Scanner | Scans own assets, reads Suricata alerts | Propose only |
| Vault (Database / Storage) | George (Storage) | DB audit log, backups, S3 checks | Propose only |
| Garrison-Linux / Garrison-Win (OS agents) | Arthur Weasley (Security Engineer) | Linux: auditd/iptables. Windows: Event Log/netsh advfirewall |
Runs allowlisted playbooks |
| Countersign (Reviewer) | Mad-Eye Moody | Must approve every autonomous action (two-key rule) | Approve/deny only |
| Watchdog | Watchdog | Heartbeats; alerts if any agent or collector goes silent | No |
| Scribe (Auditor) | (new) | Writes the hash-chained log and evidence report | Write-only log |
| Help Desk | Help Desk | Answers operator questions in Telegram (“why was my IP blocked?”) | No |
Safety rules
- No agent gets a free shell. Execution happens only through allowlisted playbooks with a TTL.
- Every autonomous action needs Countersign’s approval.
- Jev and Claude judge and explain; deterministic code scores and executes.
In the MVP: the agents are Python classes inside the core, with Warden calling them in turn (section 15). Separate agent services are on the roadmap.
13. Programming Language & Stack
Target stack. The MVP (section 15) uses Python throughout, stores state in memory plus the audit chain, and needs no Redis or Docker.
| Part | Tool |
|---|---|
| Collectors | Python (psutil, file tailing, boto3) |
| AI categorization | Jev via typesafe_sdk; Claude for reports |
| Core API | FastAPI |
| Dashboard | Streamlit |
| Notifications | python-telegram-bot |
| Storage | SQLite + Redis streams |
| Lab | Docker Compose |
Roadmap: production collectors rewritten in Go or Rust for a small single-binary footprint.
14. Specific Inputs & Outputs
Input: normalized event (from any collector)
{
"event_id": "evt-20260929-000142",
"timestamp": "2026-09-29T14:00:03+08:00",
"host": "web-01",
"layer": "web",
"source": "nginx_access",
"src_ip": "203.0.113.45",
"user": "admin",
"raw": "POST /login 401 ...",
"asset_criticality": 1.5
}
Output 1: classification (Jev)
{ "event_id": "evt-20260929-000142", "category": "brute_force",
"severity": "high", "base_points": 30, "ai_confidence": 0.94, "points": 42.3 }
Output 2: risk update (to dashboard)
{ "timestamp": "2026-09-29T14:00:04+08:00", "risk_index": 44, "band": "amber",
"open_incidents": ["RSK-2026-081"] }
Output 3: operator alert (Telegram)
⚠️ RSK-2026-081 · Brute force on admin login (web-01) · Risk 44/100 Recommended: block 203.0.113.45 for 2 h and enforce a login rate limit. [Approve & Patch] [Reject with Justification]
Output 4: containment action record
{ "action_id": "act-0007", "incident": "RSK-2026-081", "type": "block_ip",
"target": "203.0.113.45", "ttl_hours": 2, "mode": "autonomous",
"approved_by": "Countersign", "prev_hash": "9f2c…", "hash": "b71a…" }
Output 5: evidence / non-repudiation report (PDF + JSON): incident timeline, alerts sent, acknowledgements, SLA breach, action taken, rollback status, hash-chain proof.
Part B: MVP Product
What we built for the 29 Sep pitch and what the demo video shows. The code is in mvp/ of the repo; mvp/README.md has the full run instructions.
15. System Workflow & Minimum Viable Prototype
Everything runs natively on one Windows laptop (Python, no Docker, no Redis). One command, run_demo.ps1, starts every component in its own window.
Components
- Target app (
lab/target_app/, port 5000): the fictional “Aegis Academy Student Portal”. It writes web, login, database and OS logs, and it enforces SentrAI’s blocklist by answering blocked IPs and accounts with HTTP 403 “Blocked by SentrAI”. - Core (
core/, port 8000): FastAPI with the risk engine, the agents (Warden, Gatehouse, Watchtower, Vault, Garrison, Countersign, Watchdog, Scribe, Help Desk) as Python classes in one process, TTL hotpatches, the hash-chained audit log and the evidence reports. The generated report is titled “Security Evidence Report” and downloads as Markdown, JSON or PDF. - Dashboard (
dashboard/, port 8501): Streamlit console (see below). - Notifier (
notifier/): Telegram bot with Approve / Reject buttons, or console output when no bot token is set. - Attack and replay scripts (
lab/attacks/,lab/replay/): benign traffic, brute force, SQL injection, bulk export and a simulated shell. They refuse any target other than localhost:5000.
The three pluggable parts
SentrAI is a pipeline of three parts. Each is one small base class with one job, so a new log source, detector or fix can be added without touching the rest.
| Part | What it does | Base class | Built-in versions |
|---|---|---|---|
| 1. Collector | Reads logs and turns them into events for the core (POST /events) |
Source |
JsonLogSource (tails the portal’s logs), HeartbeatSource |
| 2. Classifier | Decides what each event is; the first classifier that answers wins | Classifier |
RulesClassifier → JevClassifier → FallbackClassifier |
| 3. Action taker (responder) | Applies a temporary fix and undoes it on expiry or rollback | Responder |
BlocklistResponder (block IP, lock account), SimulatedResponder (the rest) |
Between parts 2 and 3 sit the risk engine and Countersign: an action only reaches a responder after an operator approves it, or after Countersign approves it once risk crosses the threshold. This also prepares us for the surprise features at the 2 to 3 Nov hackathon, which can slot in as a new source, classifier or responder.
First-run setup wizard
On a new machine, run_demo.ps1 first asks a few questions, one section per part:
- Collector: logs directory and log file names.
- Classifier: brute-force and bulk-export thresholds, TypeSafe (Jev) API key.
- Responder: risk threshold, block expiry, SLA, and IPs and accounts that must never be touched.
- Notifications: Telegram bot token and chat ID.
Pressing Enter keeps the demo defaults. Answers are saved to %USERPROFILE%\.sentrai\config.json and read by every component on start. Change them later with python sentrai_config.py setup or on the dashboard’s Configuration page.
Dashboard
A sidebar menu, opening on Configuration:
- Decide: Approvals (requests waiting on a person, with Approve, Reject, Rollback and Make Permanent).
- Pipeline: Collector, Classifier and Action taker, one page per part. A red bubble on each button counts the new malicious activity that reached that part since it was last opened.
- Oversight: Review (0 to 100 gauge, threshold and risk accumulated), Reports (one evidence report per incident) and Audit trail (every step, hash-chained, with a “chain valid” check).
Demo script (about 1 minute of video at -DemoSpeed 600, run by lab/scenario.py)
- Benign staff traffic: no incidents, gauge green.
- Brute force from
203.0.113.45: incidentRSK-2026-081, risk about 39 (amber), operator alert on Telegram or in the notifier window, Collector and Classifier bubbles light up. - Nobody acknowledges: demo time runs fast (1 real minute = 10 demo hours) and the inaction penalty adds +5 per demo hour. The script’s default 6-second pause is only about 1 demo hour, under the 2-hour SLA, so no SLA reminder fires; run
scenario.py --pause 15(about 2.5 demo hours) to show one on camera. - SQL injection from
198.51.100.23: risk crosses 80, Countersign approves, both attacker IPs are blocked andadminis locked for 2 demo hours. The portal returns “Blocked by SentrAI” (403). The demo machine itself (127.0.0.1) is never blocked. - The evidence report shows the timeline of inaction, “Ack: none” and the audit chain hash.
- The operator presses Rollback or Make Permanent on the Approvals page, and it appears in the audit trail.
Real vs simulated in the MVP
- Real: log collection, rules classification, risk index and inaction penalty, IP blocks and account locks (enforced by the portal), TTL expiry, audit chain, evidence reports, dashboard.
- Simulated: rate limit, WAF rule, kill process and revoke ACL are recorded but have no effect. No firewall, OS or network setting is ever changed.
- Not yet tested live: Jev (no TypeSafe API key yet; the fallback heuristic classifies what the rules cannot) and a real Telegram bot.
Fallbacks: if Jev is unavailable during recording, the chain still runs the rules first and then a keyword fallback classifier (its confidence depends on what matched, and unmatched events count as benign), and we say so. If the live attack is flaky, lab/replay/simulate.py posts a scripted incident (benign, brute force, SQL injection, simulated shell) straight to the core, and we say in the video that it is a replay.
Tests: core 27, lab 36, dashboard 25, notifier 8 and one end-to-end story test, all passing.
16. Plan Until the 29th
Erick: lab + collector + risk engine + auto-block (the demo spine).Done 27 Sep.Erick: three pluggable parts, setup wizard, sidebar dashboard.Done 28 Sep.- Erick: live Jev test once the TypeSafe API key arrives; real Telegram alerts once a bot token is set. Neither is needed for the video.
- Ishmail: pitch script and narration, built around section 1 and the demo.
- Hozen: finalize slides from
mvp/pitch/SLIDES.md(sources inmvp/research/SOURCES.md): problem, sentry ethics, 0 to 100 index, architecture and the three parts, demo, roadmap. - All: record the demo, with the replay script as backup.