What OmniIntel is.
A multi-tenant threat-intelligence engine. Other security tools send it indicators, CVEs, actors or plain questions, and get back structured answers with the evidence attached.
The one-paragraph answer
OmniIntel ingests threat data from upstream open-source and commercial feeds, plus whatever you submit yourself, and reconciles it into one canonical record per entity. It keeps the provenance of every claim — which source said it, when it was fetched, how confident that source is — and it keeps that provenance attached all the way through to the answer. A SIEM, SOAR, EDR or scanner talks to it over a typed REST API or pulls STIX 2.1 objects from TAXII 2.1 collections. Everything is scoped to a tenant, and isolation is enforced by the database rather than by application code.
The distinction that matters: a feed hands you a list and leaves the judgement to you. OmniIntel is built so that you can always ask why — and get an answer that points at a specific retained document.
The shape of it
Six stages. Each page below covers one part of this in depth; the end-to-end pipeline page walks the whole path with the tables and services named at each step.
What is actually running
- 10 upstream connectors on per-connector cadences — abuse.ch (URLhaus, ThreatFox, MalwareBazaar), AlienVault OTX, CISA KEV, EPSS, GitHub GHSA, NVD, MITRE ATT&CK, ransomware.live.
- 67 tables in one Postgres with pgvector.
14of them carryFORCE ROW LEVEL SECURITY— those are the tenant-scoped ones. - Five canonical entity types — indicators, vulnerabilities, actors, malware and MITRE attack patterns — plus a knowledge base and a CTI graph over them.
- 22 mounted route groups on the public API gateway, and official TypeScript and Python SDKs.
- Six organisation roles mapped to a 16-entry capability catalogue, checked server-side at the point of use.
Everything here describes what is in the codebase today, and says so when something is scaffolded, partial or not built. Where the repo's own README is aspirational — it mentions Neo4j and OpenSearch — these pages describe what actually runs: Postgres with pgvector is the canonical store, and the Node-side knowledge base and graph are canonical.
Gaps are called out in amber boxes like this one rather than left for you to discover.
These pages explain the system. For the hands-on integration walkthrough — key anatomy, auth header, scopes, region routing, error codes, webhook signatures, plus links to your own keys and the sandbox — open Docs & SDKs in the portal. It requires a session.
Every section
- Data modelCanonical entities, the knowledge base tables, and the CTI graph.
- IngestionThe upstream connectors, their cadences, and how a run is recorded.
- Knowledge baseDocuments, chunks, sources, Admiralty reliability codes, and quarantine.
- CTI graphNodes, edges and communities — how a pivot actually resolves.
- API overviewThe route surface, authentication, errors, rate limits and pagination.
- STIX 2.1 & TAXII 2.1Which objects we emit, the collections, and how to do an incremental pull.
- WebhooksOutbound events, delivery semantics and retry behaviour.
- AdvisoriesThe draft → queued → sent → archived lifecycle and what each channel does.
- Multi-tenancyOrganisations, sub-tenants, and how row-level security enforces isolation.
- Roles & capabilitiesThe six org roles, the capability catalogue, and how grants combine.
- Regions & residencyRegion pinning, and what the KSA residency guarantee covers.
- Plans & quotasRequest quotas, burst ceilings and which features each tier unlocks.