- Status: accepted
- Date: 2026-06-28
- Decision-makers: Beenu Arora (founder), AiSOC core team
- Plan reference: cyble-aisoc-plan.md §3a / §3d / §5, AiSOC missing pieces plan §5.1
The original cyble-aisoc-plan.md anchored AiSOC's entire competitive thesis on three first-class agent tools sourced from Cyble's proprietary data: dark-web monitoring (§3a), attack-surface management (§3d), and brand intelligence (§5). When the project was open-sourced as AiSOC under MIT, that thesis broke in two ways:
- Licensing. Cyble's CTI feeds are commercial. Shipping them as default agent tools in an MIT-licensed repo would either require every contributor to have a Cyble licence (unworkable) or amount to redistributing licensed data (not legal).
- Positioning. The MIT release explicitly positions AiSOC as the AI-native SOC platform, vendor-agnostic about the CTI it ingests. Reintroducing a Cyble-only narrative would undo that.
At the same time, the agents themselves still need a CTI surface — IocEnrichment, ActorProfiler, ASMSignals, BrandIntel — and the architecture already has empty hooks for them (platform/backend/app/tools/cti.py, platform/backend/app/agents/actor_profiler/).
We retire the Cyble-only CTI moat as historical context and replace it with a pluggable, MIT-compatible CTI fusion layer that any CTI vendor (including Cyble) can plug into.
Concretely:
- The Cyble plan stays in
plans/cyble-aisoc/as a sealed historical document. We add a one-paragraph banner at the top of that file marking it superseded by this ADR. We do not delete it — it remains useful as the original product vision and as honest provenance for AiSOC's design. - The CTI fusion layer is defined as a plugin contract, not a vendor wrapper. It lives at
platform/backend/app/tools/cti.pyand exposes four capability surfaces —iocs.enrich,actors.profile,asm.signals,brand.intel— each backed by aCTIProviderprotocol. Providers register at startup viaAISOC_CTI_PROVIDERS=<comma-separated>. - We ship two reference providers in the OSS repo:
mock— deterministic fixtures for tests and the air-gapped demo.pulsedive— the largest free-tier CTI API that's MIT-compatible to call from MIT code (their public REST API has no licensing restrictions on the client).
- We document the adapter pattern for commercial providers (Cyble, Recorded Future, Mandiant, Intel 471, …) under
apps/docs/docs/integrations/cti-providers.md. The adapter ships as a separate package outside the MIT repo (e.g.aisoc-cti-cyblein a private registry) so commercial licensing stays out of the OSS surface. - The agent tools (
ActorProfilerAgent,IocEnrichmentTool, …) call the registry rather than any specific provider. Swappingmock→pulsedive→ a commercial adapter is a config change.
platform/backend/app/tools/cti.py— already scaffolded against this contract during the v8.x build-out; the work was effectively pre-emptive of this ADR. We will add theCTIProviderprotocol + registry in the next PR.platform/backend/app/agents/actor_profiler/agent.py— already routes through the tool surface, no rework needed.- New:
platform/backend/app/tools/cti/providers/{mock,pulsedive}.py. - New:
apps/docs/docs/integrations/cti-providers.mddocumenting the adapter pattern.
- The landing-page CTI section narrates the fusion contract, not any specific vendor. "Bring your CTI" replaces "powered by Cyble".
- The
/sovereignpage already lists CTI as a configurable surface; no copy change needed. - The README's CTI bullet is updated to reference the provider list.
- Cyble commercial adapter — out of scope for the OSS repo. Tracked as a separate effort under Cyble's product organisation.
- Pulsedive provider — owned by AiSOC core, tracked under the next release's connectors milestone.
- Keep the Cyble-only narrative and ship the integration via a runtime-licensed package.
- Rejected: the agent tools must work out-of-the-box in the MIT repo. Forcing a runtime licence for the headline product surface fragments the experience and contradicts the "AI-native SOC" positioning.
- Remove CTI from the AiSOC story entirely.
- Rejected: CTI is half of what an AI-native SOC actually does. Dropping it would gut the agent value proposition.
- Build proprietary CTI inside AiSOC.
- Rejected: not our circle of competence and not our value proposition. We are the orchestration + reasoning layer, not the data layer.
- The Pulsedive free-tier rate limit is currently 30 req/min. We need to confirm that's enough for a typical small-tenant burst (≈10 IOC enrichments per alert × p95 8 alerts/hour ≈ 80 req/hour — well under the limit).
- For tenants without any CTI provider configured, the agent tools should degrade gracefully —
iocs.enrichreturns the IOC unchanged,actors.profilereturnsnull. This is the existing behaviour; we just need a clearer log line at agent startup.
- Supersedes:
plans/cyble-aisoc/cyble-aisoc-plan.md§3a / §3d / §5 (the proprietary-CTI moat). - Superseded by: none.