Header-only packet analysis at the mirror port. Signature detection + ML anomaly engine + self-learning feedback loop.
Zero payload access. Zero blind spots.
Designed specifically for operational technology networks where availability beats everything else.
Zero network impact. Rust-based sniffer with AF_PACKET/TPACKET_V3 captures traffic at line rate — headers only, no payload, no decryption.
Isolation Forest with a self-learning feedback loop. Mark alerts as true/false positives and the model retrains automatically. Adaptive suppression downgrades repeat hits on the same rule and bidirectional connection — operators only see real attack patterns, not noise.
Pre-configured rule sets for Modbus TCP, DNP3, EtherNet/IP, BACnet, and S7. OT tags get orange highlighting and auto-escalated severity.
Live alert feed with threat-level gauge, connection graph, PCAP download per alert, enrichment (GeoIP, ASN, DNS), and CSV export.
Optional parallel detection engine. ~40,000 Emerging Threats rules plus OT/ICS rule sets from Digital Bond and Positive Technologies — live reloadable.
Integrates external IRMA IDS alerts into the unified feed. REST polling with automatic token renewal — external alarms appear as first-class citizens.
Every alert stores a Wireshark-compatible PCAP (headers only) in MinIO — download directly from the alert detail view for forensic investigation.
Known network and host inventory with CSV bulk import, GeoIP/ASN enrichment, and automatic unknown host alerts — with Redis caching for speed.
Plug in, boot, done. First-boot wizard configures interface, IPs, and passwords. Automatic system updates with ids-update. No OS admin skills needed.
Bidirectional iTop / TeemIP integration — imports subnets, hosts, and CI records into the trust system, and pushes newly-discovered unknown hosts back to the CMDB. Manual entries and DNS overrides are preserved by priority; CMDB assets get the ✓ iTop badge.
Every alert is post-processed with reverse DNS, ICMP reachability, MaxMind GeoIP/ASN, known-network containment, and host-trust lookup. Redis-cached for sub-second response and streamed live over WebSocket as alert_enriched updates.
Complete REST surface with interactive Swagger at /api/docs, ReDoc, and an OpenAPI JSON spec. JWT plus SAML 2.0 auth, long-lived API tokens, CSV bulk endpoints, and live WebSocket events — built for SIEM, automation, and third-party integration.
Real alerts, real networks — screenshots captured from a live CYJAN IDS deployment.
Real-time WebSocket stream of every alert — severity, source, destination, tags, and one-click PCAP download.
Live aggregated threat index — critical / high / medium / low breakdown for an instant read on network health.
Every host auto-enriched via DNS and GeoIP — unknown devices trigger an alert the moment they appear.
Apache Kafka at the core — every component is independently scalable and replaceable.
Two paths to production — choose yours.
Boot from USB → First-Boot-Wizard guides you through interface, IP, and password setup. Fully automated thereafter.
Download latest release →Synthetic traffic via built-in generator. No physical mirror port needed for testing.
CYJAN IDS is released under the MIT License — inspect every line, contribute freely, and deploy without restrictions. Security through transparency.
Every component, every rule, every ML model — fully transparent. No black boxes in your security stack.
Add custom Suricata rules, integrate your own alert sources via the IRMA bridge pattern, tune the ML threshold.
Issues, pull requests, and feature discussions happen in the open on GitHub. Your OT environment knowledge is welcome.
The offensive sister project — a Kali-based playground that attacks CYJAN to prove the detection actually works. The name is a wink: Cyan + Jan + Kali ≈ Cyankali (potassium cyanide), the threat the IDS is built to neutralize.