Configuration

Every environment variable with defaults: OpenCTI settings, connector scope, auto-enrichment, the TLP gate, and retry behavior.

Updated July 2026OpenCTI

Configuration Documentation

The connector reads its configuration from environment variables. The same keys are also accepted in a mounted config.yml; environment variables win when both are set.

Get an API key

The connector uses the same Whisper API key as the Cypher API and the MCP server. Get yours from your Whisper account; if you don't have one, create a free account at console.whisper.security and generate a key from the console dashboard. The key is sent in the X-API-Key header on every query and is never written to logs.

OpenCTI settings

VariableRequiredDefaultDescription
OPENCTI_URLYesURL of your OpenCTI platform as reachable from the connector container, for example http://opencti:8080.
OPENCTI_TOKENYesToken of the OpenCTI user the connector acts as. Use a dedicated user in the Connectors group, not the admin token.

Connector settings

VariableRequiredDefaultDescription
CONNECTOR_IDYesA UUIDv4 unique to this instance. Generate once with uuidgen and keep it stable across restarts.
CONNECTOR_NAMENoWhisperDisplay name in the OpenCTI UI.
CONNECTOR_TYPENoINTERNAL_ENRICHMENTLeave as is. The connector only works as an internal enrichment connector.
CONNECTOR_SCOPENoIPv4-Addr,IPv6-Addr,Domain-Name,Autonomous-SystemEntity types the connector responds to. Adding unsupported types (for example Url) doesn't break anything; those enrichments just return a "not supported" status.
CONNECTOR_AUTONofalseIf true, OpenCTI enriches every new in-scope observable automatically. See the caution below before enabling.
CONNECTOR_LOG_LEVELNoerrorOne of debug, info, warning, error. info is a good operational default; it includes rate-limit events.

CONNECTOR_AUTO=true means every observable your feeds create triggers Whisper queries. On a busy platform that adds up fast. Leave it false until you've watched your query volume under manual enrichment and know it fits your Whisper plan.

Whisper settings

VariableRequiredDefaultDescription
WHISPER_API_URLYesBase URL of the WhisperGraph API: https://graph.whisper.security. The connector POSTs Cypher to <url>/api/query.
WHISPER_API_KEYYesYour Whisper API key.
WHISPER_MAX_TLPNoTLP:AMBER+STRICTThe highest TLP marking the connector will enrich. See below.

The TLP gate

Enriching an observable sends its value to the Whisper API. If an observable carries a TLP marking above WHISPER_MAX_TLP, the connector skips it before any query is made and reports the skip as the work status in OpenCTI.

Accepted values: TLP:WHITE, TLP:CLEAR, TLP:GREEN, TLP:AMBER, TLP:AMBER+STRICT, TLP:RED (TLP:CLEAR is the TLP 2.0 name for TLP:WHITE). Setting the ceiling to TLP:RED disables the gate.

The default, TLP:AMBER+STRICT, lets everything through except TLP:RED. Tighten it if your sharing agreements require that marked indicators never leave the platform.

Timeouts and retries

These are fixed in the connector rather than configurable, and worth knowing for capacity planning:

BehaviorValue
Request timeout30 seconds per Whisper query
Retries3, on HTTP 429, 5xx, and connection errors, with exponential backoff
Rate limitingRetry-After on 429 responses is honored; each 429 is logged at info level with the wait time
Not retriedAuthentication failures (401/403) and query errors fail immediately

Verify it works

  1. In OpenCTI, create an observable of a supported type, for example an IPv4-Addr with value 8.8.8.8.
  2. Open it and trigger Whisper from the Enrichment panel.
  3. Within a few seconds the Knowledge → Relationships tab fills with the related infrastructure, and Analyses → Notes shows any Whisper notes for the seed.

If nothing appears, the work item's status message in Data → Ingestion → Connectors → Whisper says why; Troubleshooting covers the common ones.

Next steps