Skip to content

Every surface, one graph

Most security platforms are one surface with a marketing department. This is thirteen, and the reason they are in one product is that the failure you care about happens between them.

security intelligence platformself-hosted cloud security platformCSPM alternative

Every figure, with the command that counts it

0security domains
0+detection engines
0behavioural detections
0correlation rules across two tiers
0typed signals on the bus
0MITRE ATT&CK techniques mapped
0AWS service checks registered
0Azure service checks registered
0GCP service checks registered
0CI/CD providers with live feedback
0compliance frameworks with evidence engines
0queue workers
0bytes of your telemetry leave your account
0LLMs anywhere in the detection or scoring path
how these are countedEvery figure above is reproducible from the source
  • 32 security domainsfind src/domains -maxdepth 1 -type d ! -path src/domains | wc -lThe old site said 30+; 32 is the real count.
  • 600+ detection enginesfind src -name '*.engine.ts' | wc -l → 622Rounded down from 622 engine files, which include a few stubs.
  • 609 behavioural detectionsgrep -rhoE 'id: *"RULE-[A-Za-z0-9-]+"' src/correlation/rules/behavioral | sort -u | wc -lThe old site said 610. Corrected to 609.
  • 75 correlation rules across two tierstier1Rules (34) + tier2Rules (41) registration arrays, counted at runtime because both spread rule packs
  • 166 typed signals on the busSignalType union in src/shared/signals/types.ts
  • 96 MITRE ATT&CK techniques mappedgrep -rhoE '"T[0-9]{4}(\.[0-9]{3})?"' src/correlation/rules/behavioral | sort -u | wc -lThe old site said 48 — that was an undercount. 122 across all correlation rules, behavioural and both tiers.
  • 368 AWS service checks registeredAWS_ENGINES in register-aws-engines.ts — 368 unique capability keysWas 366 until the October-2026 defence work wired llmjacking and acm-transparency-audit.
  • 77 Azure service checks registeredAZURE_ENGINES in register-azure-engines.ts — explicitly wired enginesCapabilities without an explicit engine fall back to createAzureCapabilityEngine, so 77 is the hand-written set, not the reachable set.
  • 77 GCP service checks registeredGCP_ENGINES in register-gcp-engines.ts — explicitly wired enginesSame fallback as Azure: createGcpCapabilityEngine covers the rest.
  • 4 CI/CD providers with live feedbacksrc/domains/supply-chain/ci-provider-feedback.ts — GitHub, GitLab, CircleCI, Jenkins
  • 7 compliance frameworks with evidence enginescompliance/{soc2,iso27001,hipaa,pci-dss,gdpr,nist800}.engine.ts + EU AI Act controlsThe old site claimed 8 by counting CIS and FedRAMP; neither has an engine. CIS lives in behavioural rule packs instead.
  • 68 queue workersfind src/queue/workers -name '*.ts' | wc -l
  • 0 bytes of your telemetry leave your accountdocker-compose.selfhost.yml — every datastore runs in your stack
  • 0 LLMs anywhere in the detection or scoring pathOnly two LLM call sites exist: src/domains/governance/ai-advisor.ts:127,149 — no engine imports it

Nothing on this page is a rounded-up number. Where a count is in flux the figure is the conservative one, and the caveat is shown above next to its command.

How the surface is organised

There are five stages and they are strictly ordered. A collector that produces something the normaliser cannot type does not ship; an engine that wants to alert directly rather than emit a signal does not exist.

StageWhat happensWhat it produces
CollectRead-only APIs, webhooks and CI callbacks pull inventory, configuration and events.Raw provider payloads
NormaliseEverything is coerced into one of 166 typed signals with resource, principal, account and confidence attached.AtomicSignal
DetectTier-1 rules evaluate one signal against history and context. 609 behavioural detections.Annotated findings
CorrelateTier-2 rules join signals from different providers inside a declared window. 75 rules in total.CompoundRisk with a score
RespondRemediation routes to a tracker, a pager or a forge check run; evidence stays attached.Jira, ServiceNow, XSOAR, PagerDuty, Slack, GitHub

The 68 queue workers behind that pipeline are ordinary jobs in your own Redis. Nothing about the pipeline is hosted, which is why the same architecture runs in a namespace with no egress.

Cloud and infrastructure

SurfaceWhat is collectedRegistered checks
AWSIAM, S3, EC2, VPC, Lambda, RDS, EKS, KMS, CloudTrail, GuardDuty findings, ECR368
AzureEntra ID objects, subscriptions, NSGs, storage, AKS, Key Vault, activity logs77
GCPIAM, projects, VPC firewall, GKE, Cloud Storage, KMS, audit logs77
KubernetesWorkloads, service accounts, RBAC bindings, admission posture, image provenance—
Containers and imagesBase-image age, known CVEs, registry provenance, drift from the declared image—

Oracle Cloud is deliberately absent. It exists in the codebase as stubs and is not supported, which is a sentence we would rather write here than have you discover during an evaluation.

Identity, human and non-human

Identity is 66 engines and the largest domain after infrastructure for a reason: this is where privilege actually accumulates, and where the difference between "granted" and "used" lives.

SurfaceWhat is collected
Cloud identitiesUsers, roles, service accounts, trust policies, permission boundaries, unused grants
Workforce identityOkta, Microsoft Entra ID, Microsoft 365, Google Workspace, LDAP — group membership and privilege paths
Non-human identityAPI keys, CI credentials, OIDC trust, key age and rotation, first-use history
Access graphWhich principal resolves to which resource, and how many assumption hops separate it from a crown jewel
Authorisation inside Hanu6 RBAC roles: OWNER, ADMIN, SECURITY_ENGINEER, ANALYST, DEVELOPER, VIEWER

Code, application and supply chain

SurfaceWhat is collected
RepositoriesGitHub, GitLab — history, branches, protection rules, contributors, exposure of secrets in history
CI/CDGitHub Actions, GitLab CI, CircleCI, Jenkins — workflow changes, action pinning, actor identity, runner configuration
DependenciesSBOM, resolver output, release freshness, publisher identity, provenance attestations
Static analysisSemgrep findings; Snyk and Trivy results ingested rather than re-scanned
Containers and IaCImage composition, IaC scan results, drift between declared and deployed infrastructure
Application surfaceAPI inventory, endpoint exposure, web application posture, ASPM correlation of code to runtime

The reason these sit in one product rather than four is the same in every case: a repository holding a deploy credential, a workflow that was edited, and a credential that then became readable are three facts from one system, and the judgement lives in the conjunction.

Runtime, network and edge

SurfaceWhat is collected
Runtime and endpointCrowdStrike and SentinelOne detections, process and agent telemetry, workload drift
NetworkVPC flow, security groups, exposure of services, egress destinations, network policy drift
Edge securityCDN and WAF configuration, TLS termination, header posture
EmailAuthentication posture and domain hygiene
Network and malware signalsIngested detections joined against cloud and identity context rather than queued separately

AI workloads, agents and the model supply chain

This is the newest surface and the one with the least mature tooling across the industry, so it is worth being precise about what is actually collected: metadata about access and reach, never inference content.

SurfaceWhat is collected
Model accessWhich identity can invoke which models — Bedrock, SageMaker and the Azure and GCP equivalents — from where
LLMjackingFirst-use credential validation, model enumeration and invocation as ordered stages inside a window
Model postureEndpoint configuration, network exposure, logging posture, data reach of the identity that owns the endpoint
AgentsAgent identities, the tools and data they resolve to, first-use reach against sensitive resources
MCP serversRegistered servers, ownership, served tool definitions over time and what a change broadened
Shadow AIModel endpoints and AI services present in the estate that appear in no inventory

Data and cryptographic posture

SurfaceWhat is collected
Data storesObject storage exposure, database posture, encryption at rest and in transit, backup configuration
Data classificationWhich findings touch personal, financial or otherwise regulated data, so sensitivity can weight a score
CertificatesCertificate transparency, expiry, key strength, issuer reputation and whether the issuer is still trusted
Keys and secretsKMS key policies, rotation state, key material provenance, secrets exposed outside the vault
Cryptographic inventoryWhere weak primitives are still in use, and which workloads depend on a key that should not exist

Certificate and issuer tracking is what made the eMudhra emSign hierarchy in October 2026 answerable rather than merely alarming: eight intermediate certificates were withdrawn after a ceremony flaw left their keys recoverable, the root above them was dropped from the public trust bundles, and a platform that models issuers as supply-chain dependencies can tell you which of your own certificates came through either. The two cases are scored differently — a compromised intermediate means someone else can prove they are you, a removed root means your chain stops validating — and both entries record identifierQuality: "name-pattern", so nobody mistakes a name match for a fingerprint match.

Compliance and governance

FrameworkWhat the evidence engine produces
SOC 2Control-to-finding mapping across the trust services criteria, from live findings
ISO 27001Annex A control evidence with the finding ids that satisfy each
HIPAASafeguard evidence mapped to technical controls
PCI DSSRequirement evidence for the controls the platform can observe
GDPRData-handling and access control evidence
NIST 800Control family evidence from the same findings the team works from
EU AI ActControls for AI systems and the data they touch

Governance engines sit alongside: policy documents as first-class objects, AI system registration, and reporting that a CISO can hand upward without re-keying numbers into a slide.

Response, operations and the operator console

CapabilityDetail
OutletsJira, ServiceNow, Cortex XSOAR, PagerDuty, Slack, or a Splunk or Datadog pipeline
Developer feedbackCheck runs and job steps in the forge — GitHub, GitLab, CircleCI, Jenkins
RemediationProposed pull requests where a mechanical fix exists, with the finding attached
Case managementFindings, risks, remediations, activity and a per-tenant audit log
Operator consoleSeparate surface for running multi-tenant deployments — tenant lifecycle, configuration, operators
ReportingCISO reports and coverage views generated from the same findings, not from a parallel data entry process

24 provider integration modules exist under src/integrations/providers. That is a module count rather than a certification count, so the list above names the ones worth naming instead of leaning on a number.

What is not here

This section exists because a capabilities page without one is a page you should not trust.

  • Oracle Cloud. Stub engines only. Not supported, and not presented as supported.
  • No SIEM. There is no event store to query arbitrary time ranges against, no custom query language and no log retention product. Response routing hands work to the systems you already run.
  • No cloud-native runtime agent. Endpoint and runtime detections are ingested from CrowdStrike and SentinelOne rather than collected by an agent we ship.
  • No Wiz, Jamf, Rapid7, Sumo Logic or Intune integration. No provider module exists for any of them.
  • No SCIM provisioning. Zero hits for SCIM in the source tree. Identity inside Hanu is managed in Hanu, or through SSO/SAML on the editions that include it.
  • No CIS or FedRAMP compliance engine. CIS is delivered as behavioural rule packs; FedRAMP appears as remediation text only.
  • No automatic remediation. Proposed pull requests and routed tickets, yes. Something that changes production on its own, no.
  • No prompt or inference content. The AI surfaces collect access and reach metadata. Prompt text and completions are not read, stored or analysed.

Questions

How much of this is in the free Community edition?
The detection and correlation engine, all 32 domains, all three clouds, the attack-path graph and the compliance evidence engines. The paid editions add the continuously-updated detection feed between releases, multi-cloud depth, runtime and agentic suites, SSO/SAML, custom roles and cross-tenant analysis.
Do I have to connect everything for it to be useful?
No. Correlation improves with each additional source because more joins become possible, but the honest answer is that two sources already produce chains a single tool cannot: a code host and a cloud account is enough for RULE-T2-014.
Is the capability list the same across editions?
The domains are. What differs is the detection content refresh cadence, the depth of coverage in some domains, and the operational features — SSO, custom roles, cross-tenant analysis. Pricing states it per edition rather than in aggregate.
How do you avoid the false positives that come with this many checks?
By not treating checks as findings. A configuration observation becomes a finding only when a rule judges it against your history and context, and it becomes an alert only when a tier-2 rule joins it with something else. The full mechanism is on the correlation page.
Can we see the code?
The core is source-available under the Elastic License 2.0 and the repository is the reference for every number on this page. The licence permits internal use, modification and redistribution; it does not permit offering the software to third parties as a managed service.
What happens when a domain has a collector but no rule worth running?
It stays as inventory. Reachability, key age and certificate issuer are useful in a chain even when no rule fires on them alone, which is exactly why the graph is kept alongside the rule set rather than replaced by it.

Run it in your own account

One Docker Compose stack, your datastores, read-only credentials into your clouds. The Community edition is free to run in production.