Configuration Properties
Complete reference for all Contexa configuration properties. All properties are set in application.yml and bound through Spring Boot's @ConfigurationProperties mechanism. Properties are organized into 5 categories below.
Configuration Categories
Contexa provides 27 @ConfigurationProperties classes across all modules. Select a category to view the full property reference.
Infrastructure
ContexaProperties, Bridge, Cache, OpenTelemetry, Redis, Kafka, Event, Router, Pipeline, Plane, Cold Path
Core platform, bridge, cache, telemetry, and distributed runtime properties
Security
Zero Trust, HCAD, Session, Step-Up, Decision Plane, Distributed Enforcement
Zero Trust, HCAD, session, and enforcement properties
AI Engine
Tiered LLM, Mapping, Advisor, RAG, Streaming, PgVector
Tiered LLM, mapping, advisor, RAG, streaming, and vector-store properties
Identity
Authentication Context, MFA, State Machine
Auth context and state machine properties
IAM
Policy Combining, Step-Up, Admin Console
Policy combining, step-up, and admin console properties
Essential Properties
The most important properties to configure when starting with Contexa:
| Property | Default | Description |
|---|---|---|
contexa.enabled |
true |
Master switch for the entire Contexa platform |
contexa.infrastructure.mode |
STANDALONE |
STANDALONE (in-memory) or DISTRIBUTED (Redis + Kafka) |
contexa.llm.enabled |
true |
Enable LLM integration for AI-driven security decisions |
contexa.security.zerotrust.enabled |
true |
Enable zero-trust continuous verification |
spring.auth.state-type |
OAUTH2 |
State management: SESSION or OAUTH2. Can be omitted — defaults work for most setups. |
contexa.llm.selection.chat.priority |
"" |
Comma-separated chat provider priority (e.g., ollama,anthropic,openai). Resolver picks the first available provider. |
Minimal Configuration
A minimal application.yml to get started with Contexa in standalone mode:
contexa:
enabled: true
infrastructure:
mode: standalone
llm:
enabled: true
selection:
chat:
priority: ollama,anthropic,openai
chat:
ollama:
base-url: http://127.0.0.1:11434
model: qwen2.5:14b
rag:
enabled: true
contexa.security:
zerotrust:
enabled: true
spring:
auth:
state-type: SESSION
ai:
security:
layer1:
model: qwen2.5:14b
layer2:
model: exaone3.5:latest
Contexa Core Properties
Top-level properties under the contexa prefix, bound to ContexaProperties.
| Property | Type | Default | Description |
|---|---|---|---|
contexa | |||
.enabled |
boolean |
true |
Master switch to enable or disable the entire Contexa platform |
.infrastructure.mode |
enum |
STANDALONE |
Infrastructure mode: STANDALONE (in-memory) or DISTRIBUTED (Redis, Kafka) |
.infrastructure.redis.enabled |
boolean |
true |
Enable Redis integration for distributed caching |
.enterprise.enabled |
boolean |
false |
Enable enterprise-only integrations when the runtime provides them |
.infrastructure.kafka.enabled |
boolean |
true |
Enable Kafka integration for event streaming (distributed mode) |
.infrastructure.observability.enabled |
boolean |
true |
Enable observability infrastructure |
.infrastructure.observability.open-telemetry-enabled |
boolean |
true |
Enable OpenTelemetry integration for distributed tracing |
LLM Properties
| Property | Type | Default | Description |
|---|---|---|---|
contexa.llm | |||
.enabled | boolean | true | Enable LLM integration for AI-driven security decisions |
.advisor-enabled | boolean | true | Enable the AI advisor chain |
.selection.chat.mode | enum | DYNAMIC_PRIORITY | Chat provider selection strategy: DYNAMIC_PRIORITY walks the priority list, SPRING_PRIMARY uses the Spring @Primary bean |
.selection.chat.priority | String | "" | Comma-separated chat provider order (e.g., ollama,anthropic,openai) used when mode is DYNAMIC_PRIORITY |
.selection.embedding.mode | enum | DYNAMIC_PRIORITY | Embedding provider selection strategy |
.selection.embedding.priority | String | "" | Comma-separated embedding provider order (e.g., ollama,openai) |
.chat.ollama.base-url | String | "" | Dedicated Ollama chat runtime URL required when Ollama chat is enabled |
.chat.ollama.model | String | "" | Ollama chat model name used by the Contexa chat runtime |
.chat.ollama.keep-alive | String | "" | Optional keep-alive hint passed to the Ollama chat runtime |
.embedding.ollama.dedicated-runtime-enabled | boolean | false | Use a dedicated Ollama embedding runtime instead of the shared chat runtime |
.embedding.ollama.base-url | String | "" | Dedicated Ollama embedding runtime URL when dedicated-runtime-enabled is true |
.embedding.ollama.model | String | "" | Embedding model name for the Ollama embedding runtime |
Tiered LLM and External Provider Configuration
Contexa reads tier selection from contexa.security.tiered*. External Anthropic and OpenAI providers use standard spring.ai.* properties. Ollama runtime selection is configured under contexa.llm.*, not spring.ai.ollama.*.
| Property | Type | Description |
|---|---|---|
spring.ai | ||
.llm.layer1.model | String | Tier-1 model name used for the first analysis pass |
.llm.layer2.model | String | Tier-2 model name used for deep analysis and escalation |
.prompt-compression.enabled | boolean | Enable runtime prompt compression for tiered execution |
.layer1.timeout.total-ms | long | Total timeout budget for the tier-1 execution path |
.layer2.timeout-ms | long | Total timeout budget for the tier-2 execution path |
.anthropic.api-key | String | Anthropic API key for the standard Spring AI Anthropic client |
.openai.api-key | String | OpenAI API key for the standard Spring AI OpenAI client |
.openai.base-url | String | Override the OpenAI API base URL when a proxy or compatible endpoint is used |
Vector Store Properties
| Property | Type | Default | Description |
|---|---|---|---|
contexa.rag | |||
.enabled | boolean | true | Enable the RAG subsystem inside Contexa |
.defaults.top-k | int | 10 | Default number of retrieved documents for general retrieval |
.defaults.similarity-threshold | double | 0.7 | Default similarity threshold for general retrieval |
.behavior.lookback-days | int | 30 | Default behavior lookback window (days) used by RAG retrieval filters |
.risk.top-k | int | 50 | Number of retrieved documents for risk-oriented retrieval |
.risk.similarity-threshold | double | 0.8 | Similarity threshold for risk-oriented retrieval |
.lab.batch-size | int | 50 | RAG lab batch size |
.lab.validation-enabled | boolean | true | Enable lab-side validation pass |
.lab.enrichment-enabled | boolean | true | Enable lab-side enrichment pass |
.lab.top-k | int | 100 | Lab retrieval size |
.lab.similarity-threshold | double | 0.75 | Lab similarity threshold |
.etl.batch-size | int | 100 | Document batch size used during vector ETL |
.etl.vector-table-name | String | vector_store | Logical vector table name used by Contexa ETL jobs |
.etl.chunk-size | int | 500 | Document chunk size used during vector ETL |
.etl.chunk-overlap | int | 50 | Chunk overlap used during vector ETL |
.etl.behavior.retention-days | int | 90 | Retention window (days) for ETL behavior artifacts |
contexa.vectorstore.pgvector | |||
.dimensions | int | 1024 | Embedding dimension used by the pgvector store |
.batch-size | int | 100 | Batch size used when storing vectors |
.top-k | int | 100 | Default retrieval limit inside the pgvector store adapter |
.similarity-threshold | double | 0.5 | Minimum similarity threshold enforced by the pgvector adapter |
.search-timeout-ms | long | 10000 | Search timeout budget for pgvector queries |
.store-timeout-ms | long | 10000 | Store timeout budget for pgvector writes |
.document.chunk-size | int | 1000 | Chunk size used when preparing source documents for storage |
.document.chunk-overlap | int | 200 | Chunk overlap used when preparing source documents for storage |
Zero Trust Properties
Properties under contexa.security.zerotrust, bound to SecurityZeroTrustProperties.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.security.zerotrust | |||
.enabled |
boolean |
true |
Enable Zero Trust evaluation engine |
.threat.initial |
double |
0.3 |
Initial threat score assigned to new sessions |
.cache.ttl-hours |
int |
24 |
Trust evaluation cache TTL in hours |
.cache.session-ttl-minutes |
int |
30 |
Session cache TTL in minutes |
.cache.invalidated-ttl-minutes |
int |
60 |
Invalidated session cache TTL in minutes |
.redis.timeout |
int |
5 |
Redis operation timeout in seconds |
.redis.update-interval-seconds |
int |
30 |
Interval for syncing trust scores to Redis |
.session.tracking-enabled |
boolean |
true |
Enable AI-driven session tracking |
HCAD Properties
Hierarchical Context-Aware Detection properties under contexa.hcad, bound to HcadProperties.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.hcad | |||
.enabled | boolean | true | Enable the HCAD anomaly detection engine |
.filter-order | int | 100 | Order of the HCAD filter in the security filter chain |
.similarity.hot-path-threshold | double | 0.7 | Similarity threshold used by the hot path evaluation stage |
.baseline.learning.enabled | boolean | true | Enable continuous baseline learning |
.baseline.bootstrap.initial-samples | int | 10 | Minimum bootstrap sample count before the initial baseline is accepted |
.baseline.statistical.min-samples | int | 20 | Minimum sample count for statistical baseline updates |
Autonomous Security Properties
| Property | Type | Default | Description |
|---|---|---|---|
contexa.autonomous | |||
.enabled | boolean | true | Enable autonomous security response processing |
.event-timeout | long | 30000 | Timeout for autonomous event processing in milliseconds |
Session Security Properties
Properties under contexa.security.session, bound to SecuritySessionProperties.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.security.session | |||
.cookie.name |
String |
SESSION |
Session cookie name |
.header.name |
String |
X-Auth-Token |
Session header name for token-based sessions |
.bearer.enabled |
boolean |
true |
Enable bearer token session resolution |
Full Configuration Example
A complete application.yml showing all major configuration sections:
contexa:
enabled: true
infrastructure:
mode: standalone
redis:
enabled: true
kafka:
enabled: false
observability:
enabled: true
open-telemetry-enabled: true
hcad:
enabled: true
similarity:
hot-path-threshold: 0.7
baseline:
min-samples: 10
cache-ttl: 3600
llm:
enabled: true
advisor-enabled: true
selection:
chat:
mode: DYNAMIC_PRIORITY
priority: ollama,anthropic,openai
embedding:
mode: DYNAMIC_PRIORITY
priority: ollama,openai
chat:
ollama:
base-url: http://127.0.0.1:11434
model: qwen2.5:14b
keep-alive: 24h
embedding:
ollama:
dedicated-runtime-enabled: false
model: mxbai-embed-large
rag:
enabled: true
defaults:
top-k: 10
similarity-threshold: 0.7
etl:
vector-table-name: vector_store
chunk-size: 500
chunk-overlap: 50
autonomous:
enabled: true
event-timeout: 30000
contexa.hcad:
enabled: true
filter-order: 100
baseline:
learning:
enabled: true
contexa.security:
zerotrust:
enabled: true
mode: ENFORCE
threat:
initial: 0.3
cache:
ttl-hours: 24
session-ttl-minutes: 30
redis:
timeout: 5
update-interval-seconds: 30
session:
cookie:
name: SESSION
header:
name: X-Auth-Token
bearer:
enabled: true
spring:
auth:
state-type: SESSION
ai:
security:
layer1:
model: qwen2.5:14b
layer2:
model: exaone3.5:latest
tiered:
prompt-compression:
enabled: true
anthropic:
api-key: ${ANTHROPIC_API_KEY:}
openai:
api-key: ${OPENAI_API_KEY:}
vectorstore:
pgvector:
dimensions: 1024
batch-size: 100
top-k: 100
similarity-threshold: 0.5
document:
chunk-size: 1000
chunk-overlap: 200
ContexaProperties Quick Reference
Complete list of high-signal contexa.* properties from ContexaProperties. Each section links to the detailed sub-page.
Master Switches
| Property | Type | Default | Description |
|---|---|---|---|
contexa.enabled | boolean | true | Master switch for the entire Contexa platform. |
HCAD (Behavioral Analysis)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.hcad.enabled | boolean | true | Enable the Contexa-side HCAD toggle. |
contexa.hcad.similarity.hot-path-threshold | double | 0.7 | Hot path similarity threshold exposed through ContexaProperties. |
contexa.hcad.baseline.min-samples | int | 10 | Minimum baseline sample count in the Contexa wrapper properties. |
contexa.hcad.baseline.cache-ttl | int | 3600 | Baseline cache TTL in seconds in the Contexa wrapper properties. |
LLM (Language Model)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.llm.enabled | boolean | true | Enable LLM integration. |
contexa.llm.advisor-enabled | boolean | true | Enable the advisor chain. |
contexa.llm.selection.chat.mode | enum | DYNAMIC_PRIORITY | Chat provider selection strategy. |
contexa.llm.selection.chat.priority | String | "" | Comma-separated chat provider order (e.g., ollama,anthropic,openai). |
contexa.llm.selection.embedding.mode | enum | DYNAMIC_PRIORITY | Embedding provider selection strategy. |
contexa.llm.selection.embedding.priority | String | "" | Comma-separated embedding provider order (e.g., ollama,openai). |
contexa.llm.chat.ollama.base-url | String | "" | Ollama chat runtime URL. |
contexa.llm.embedding.ollama.dedicated-runtime-enabled | boolean | false | Enable a dedicated embedding runtime. |
RAG (Retrieval-Augmented Generation)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.rag.enabled | boolean | true | Enable the RAG pipeline wrapper. |
contexa.rag.defaults.top-k | int | 10 | Default retrieval size. |
contexa.rag.defaults.similarity-threshold | double | 0.7 | Default similarity threshold. |
contexa.rag.etl.vector-table-name | String | vector_store | Logical vector table name for ETL output. |
Autonomous Agent
| Property | Type | Default | Description |
|---|---|---|---|
contexa.autonomous.enabled | boolean | true | Enable autonomous security processing. |
contexa.autonomous.event-timeout | long | 30000 | Event processing timeout in milliseconds. |
Infrastructure
| Property | Type | Default | Description |
|---|---|---|---|
contexa.infrastructure.mode | enum | STANDALONE | STANDALONE (in-memory) or DISTRIBUTED (Redis + Kafka). |
contexa.infrastructure.redis.enabled | boolean | true | Enable Redis for distributed caching. |
contexa.infrastructure.kafka.enabled | boolean | true | Enable Kafka for event streaming. |
contexa.infrastructure.observability.enabled | boolean | true | Enable observability. |
contexa.infrastructure.observability.open-telemetry-enabled | boolean | true | Enable OpenTelemetry integration. |
contexa.enterprise.enabled | boolean | false | Enable enterprise-only integrations when the runtime provides them. |
SaaS Integration (Enterprise)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.saas.enabled | boolean | false | Enable SaaS integration with Contexa Cloud. |
contexa.saas.endpoint | String | https://saas.ctxa.ai | SaaS platform endpoint URL. |
contexa.saas.include-reasoning | boolean | false | Include reasoning payload in forwarded decisions. |
contexa.saas.include-raw-analysis-data | boolean | false | Include raw analysis data in forwarded decisions. |
contexa.saas.outbox-batch-size | int | 50 | Outbox batch size for event forwarding. |
contexa.saas.max-retry-attempts | int | 10 | Maximum retry attempts for failed event delivery. |
contexa.saas.retry-initial-backoff-ms | long | 1000 | Initial backoff delay for retry attempts. |
contexa.saas.retry-max-backoff-ms | long | 60000 | Maximum backoff delay for retry attempts. |
contexa.saas.dispatch-interval-ms | long | 30000 | Dispatch interval for SaaS forwarding jobs. |
contexa.saas.pseudonymization-secret | String | default-dev-secret-change-in-prod | Pseudonymization secret. Must be replaced in production. |
contexa.saas.global-correlation-secret | String | default-dev-correlation-secret | Cross-tenant correlation secret. Must be replaced in production. |
contexa.saas.oauth2 | |||
.enabled | boolean | true | Enable OAuth2 client credentials for SaaS forwarding. |
.registration-id | String | contexa-saas-client | Spring Security OAuth2 registration ID. |
.token-uri | String | https://saas.ctxa.ai/oauth2/token | SaaS token endpoint URL. |
.client-id | String | dev-client | OAuth2 client ID. |
.client-secret | String | dev-secret | OAuth2 client secret. |
.scope | String | (11 default scopes) | Comma-separated OAuth2 scope list. Must include scopes for every enabled forwarding feature. |
.expiry-skew-seconds | int | 30 | Token expiry skew in seconds. |
contexa.saas.decision-feedback | |||
.enabled | boolean | false | Enable decision feedback forwarding. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/feedback-ingestions | Decision feedback ingestion path. |
contexa.saas.baseline-signal | |||
.enabled | boolean | false | Enable baseline signal sharing. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/baseline-signals | Baseline signal publish path. |
.seed-endpoint-path | String | /api/saas/runtime/ai-tuning/baseline-seed | Baseline seed pull path. |
.publish-interval-ms | long | 604800000 | Baseline publish interval (default 7 days). |
.initial-delay-ms | long | 300000 | Initial publish delay (default 5 min). |
.seed-pull-interval-ms | long | 3600000 | Seed pull interval (default 1 hour). |
.seed-initial-delay-ms | long | 120000 | Seed pull initial delay (default 2 min). |
.seed-cache-ttl-minutes | int | 180 | Seed cache TTL (default 3 hours). |
.minimum-organization-baseline-count | int | 3 | Minimum organization samples required. |
.minimum-user-baseline-count | int | 25 | Minimum user samples required. |
.hour-bucket-limit | int | 8 | Hour bucket cap per publish batch. |
.day-bucket-limit | int | 7 | Day bucket cap per publish batch. |
.operating-system-limit | int | 6 | OS fingerprint bucket cap. |
.industry-category | String | GENERAL | Organization industry category tag. |
contexa.saas.threat-intelligence | |||
.enabled | boolean | false | Enable threat intelligence pull. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/threat-signals | Threat signal pull path. |
.pull-interval-ms | long | 3600000 | Pull interval (default 1 hour). |
.initial-delay-ms | long | 0 | Initial pull delay. |
.signal-limit | int | 5 | Signal count limit per pull. |
.prompt-limit | int | 3 | Prompt injection sample limit. |
.cache-ttl-minutes | int | 90 | Local cache TTL. |
contexa.saas.threat-outcome | |||
.enabled | boolean | false | Enable threat outcome forwarding. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/threat-outcomes | Threat outcome ingestion path. |
contexa.saas.threat-knowledge | |||
.enabled | boolean | false | Enable threat knowledge pull. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/threat-knowledge-pack | Threat knowledge pack pull path. |
.runtime-policy-endpoint-path | String | /api/saas/runtime/ai-tuning/threat-runtime-policy | Runtime policy pull path. |
.pull-interval-ms | long | 3600000 | Pull interval. |
.initial-delay-ms | long | 0 | Initial pull delay. |
.case-limit | int | 12 | Case count limit per pull. |
.prompt-limit | int | 3 | Prompt injection sample limit. |
.cache-ttl-minutes | int | 90 | Local cache TTL. |
contexa.saas.detection-strategy | |||
.enabled | boolean | false | Enable detection strategy pull. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/detection-strategy-pack | Detection strategy pack pull path. |
.pull-interval-ms | long | 3600000 | Pull interval. |
.initial-delay-ms | long | 0 | Initial pull delay. |
.strategy-limit | int | 12 | Strategy count limit per pull. |
.prompt-limit | int | 3 | Prompt injection sample limit. |
.cache-ttl-minutes | int | 90 | Local cache TTL. |
contexa.saas.calibration-profile | |||
.enabled | boolean | false | Enable calibration profile pull. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/calibration-profile-pack | Calibration profile pack pull path. |
.pull-interval-ms | long | 3600000 | Pull interval. |
.initial-delay-ms | long | 0 | Initial pull delay. |
.profile-limit | int | 12 | Profile count limit per pull. |
.cache-ttl-minutes | int | 90 | Local cache TTL. |
contexa.saas.performance-telemetry | |||
.enabled | boolean | false | Enable performance telemetry forwarding. |
.endpoint-path | String | /api/saas/runtime/ai-tuning/performance-telemetry | Performance telemetry ingestion path. |
.publish-interval-ms | long | 3600000 | Publish interval. |
.initial-delay-ms | long | 60000 | Initial publish delay. |
contexa.saas.prompt-context-audit | |||
.enabled | boolean | false | Enable prompt context audit forwarding. |
.endpoint-path | String | /api/saas/runtime/prompt-context-audits | Prompt context audit ingestion path. |
HCAD Engine (contexa.hcad prefix)
Advanced HCAD engine tuning surface bound by HcadProperties. Defaults suit most deployments; tune these only after reviewing operational baselines.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.hcad.enabled | boolean | true | Master toggle for the HCAD engine. |
contexa.hcad.filter-order | int | 100 | Servlet filter order for HCAD interception. |
contexa.hcad.threshold | |||
.base | double | 0.7 | Base anomaly threshold. |
.min | double | 0.3 | Lower clamp for adaptive adjustments. |
.max | double | 0.95 | Upper clamp for adaptive adjustments. |
.adjustment-rate | double | 0.01 | Per-step threshold adjustment rate. |
.sensitivity | double | 1.0 | Sensitivity multiplier. |
.warn | double | 0.7 | Warning-level threshold. |
contexa.hcad.cache | |||
.max-size | int | 100000 | Maximum in-memory analysis cache entries. |
.ttl-ms | long | 300000 | Cache entry TTL (default 5 min). |
.clear-on-startup | boolean | false | Clear cache on startup. |
.local.ttl-minutes | int | 10 | Local tier TTL for per-node cache. |
contexa.hcad.analysis | |||
.max-age-ms | long | 3600000 | Maximum allowed age for reusable analyses (default 1h). |
contexa.hcad.baseline | |||
.min-confidence | double | 0.3 | Minimum confidence for baseline acceptance. |
.update-alpha | double | 0.1 | Exponential smoothing alpha for baseline updates. |
.learning.alpha | double | 0.1 | Online learning alpha. |
.learning.enabled | boolean | true | Enable baseline online learning. |
.bootstrap.enabled | boolean | true | Enable baseline bootstrap from initial samples. |
.bootstrap.initial-samples | int | 10 | Initial sample count required for bootstrap. |
.bootstrap.max-anomaly-score | double | 0.85 | Upper anomaly score accepted during bootstrap. |
.statistical.enabled | boolean | true | Enable statistical baseline branch. |
.statistical.min-samples | int | 20 | Minimum samples for statistical baseline. |
.statistical.update-interval | int | 10 | Samples between statistical updates. |
.statistical.z-score-threshold | double | 3.0 | Z-score anomaly threshold. |
.redis.ttl-days | int | 30 | Redis-persisted baseline TTL. |
contexa.hcad.feedback | |||
.learning-rate | double | 0.1 | Feedback-driven learning rate. |
.retrain-threshold | double | 0.7 | Accuracy threshold below which retrain is triggered. |
.window-size | int | 1000 | Sliding feedback window size. |
.baseline.update-threshold | double | 0.95 | Baseline update confidence threshold. |
contexa.hcad.orchestrator | |||
.enabled | boolean | true | Enable the HCAD orchestrator. |
.feedback-interval | int | 300 | Feedback aggregation interval (seconds). |
.sync-batch-size | int | 50 | Synchronization batch size. |
.performance-tracking | boolean | true | Enable performance tracking. |
contexa.hcad.vector | |||
.embedding-dimension | int | 384 | Vector embedding dimension. |
.cache-ttl-hours | int | 24 | Vector cache TTL. |
.max-cached-embeddings | int | 1000 | Maximum cached embeddings. |
.similarity-threshold | double | 0.85 | Vector similarity threshold. |
.scenario-detection-enabled | boolean | true | Enable scenario detection via vector similarity. |
contexa.hcad.session | |||
.cookie-name | String | JSESSIONID | Session cookie name used for correlation. |
.header-name | String | X-Session-Id | Session header name used for correlation. |
contexa.hcad.signal | |||
.chi-square-threshold | double | 14.07 | Chi-square anomaly threshold. |
.history-size | int | 100 | Signal history buffer size. |
.covariance.min-samples | int | 30 | Minimum samples for covariance. |
.geoip.provider | String | api | GeoIP provider identifier. |
.geoip.api-url | String | https://ipapi.co/{ip}/json/ | GeoIP lookup URL template. |
.timing.bucket-count | int | 7 | Timing bucket count. |
.timing.interval.history-size | int | 100 | Timing interval history size. |
contexa.hcad.sampling | |||
.random.floor | double | 0.01 | Random sampling floor. |
.random.ceiling | double | 0.03 | Random sampling ceiling. |
.composite.identifier.enabled | boolean | true | Enable composite identifier sampling. |
contexa.hcad.adaptive | |||
.adjustment-rate | double | 0.1 | Adaptive adjustment rate. |
.cusum.threshold | double | 5.0 | CUSUM drift detection threshold. |
.cusum.slack | double | 0.5 | CUSUM slack value. |
.baseline.window | int | 100 | Adaptive baseline window size. |
.min.trust.score | double | 0.7 | Minimum trust score floor. |
contexa.hcad.resource | |||
.sensitive-patterns | List<String> | [] | URL patterns classified as sensitive resources; populated by the application. |
contexa.hcad.similarity | |||
.hot-path-threshold | double | 0.7 | Hot-path similarity threshold for HCAD fast-path decisions. |
contexa.hcad.redis | |||
.key-prefix | String | hcad:baseline:v2: | Redis key prefix for HCAD baseline data. |
contexa.hcad.geoip | |||
.enabled | boolean | false | Enable local GeoIP lookups. |
.db-path | String | data/GeoLite2-City.mmdb | Path to the MaxMind GeoLite2 database. |
contexa.hcad.pre-trigger | |||
.enabled | boolean | true | Enable the pre-trigger fast-path. |
.cooldown-seconds | int | 15 | Pre-trigger cooldown window (seconds). |
.in-flight-ttl-seconds | int | 15 | In-flight request TTL. |
.negative-cache-seconds | int | 3 | Negative-cache retention. |
.redline-score | int | 70 | Redline (block) risk score. |
.high-risk-score | int | 50 | High-risk score threshold. |
.medium-risk-score | int | 30 | Medium-risk score threshold. |
.low-baseline-confidence-threshold | double | 0.35 | Low baseline confidence trigger threshold. |
.failed-login-burst-threshold | int | 3 | Failed-login burst count. |
.request-burst-threshold | int | 12 | Rapid request burst count. |
.rapid-request-interval-ms | long | 1000 | Rapid request interval window (ms). |
.sensitive-path-indicators | List<String> | [/admin/, /export, /download, /sensitive/, /critical/] | URL path fragments that raise sensitivity. |
LLM Bindings (contexa.llm.bindings)
Named chat and embedding provider bindings. Used together with contexa.llm.selection.* to resolve which provider is active for a given request.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.llm.bindings.chat.<name> | |||
.bean-name | String | "" | Target Spring bean name for this chat binding. |
.provider | String | "" | Provider identifier (e.g., ollama, anthropic, openai). |
.model-id | String | "" | Logical model identifier exposed to Contexa. |
.aliases | List<String> | [] | Additional names that resolve to the same binding. |
.enabled | boolean | true | Enable this binding. |
.primary | boolean | false | Mark this binding as the Spring @Primary chat model. |
contexa.llm.bindings.embedding.<name> | |||
.bean-name | String | "" | Target Spring bean name for this embedding binding. |
.provider | String | "" | Embedding provider identifier. |
.model-id | String | "" | Logical embedding model identifier. |
.aliases | List<String> | [] | Additional names. |
.enabled | boolean | true | Enable this binding. |
.primary | boolean | false | Mark as @Primary embedding model. |
Advisor Chain (contexa.advisor)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.advisor.chain-profile | String | STANDARD | Advisor chain profile name. |
contexa.advisor.security.enabled | boolean | true | Enable security advisor registration. |
contexa.advisor.security.order | int | 50 | Security advisor order in the chain. |
contexa.advisor.security.require-authentication | boolean | false | Require authenticated principal for security advisor. |
contexa.advisor.soar.approval.enabled | boolean | true | Enable SOAR approval advisor. |
contexa.advisor.soar.approval.order | int | 100 | SOAR approval advisor order. |
contexa.advisor.soar.approval.timeout | int | 300 | SOAR approval timeout (seconds). |
Streaming (contexa.streaming)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.streaming.final-response-marker | String | (protocol constant) | Marker indicating the final streaming response chunk. |
contexa.streaming.streaming-marker | String | (protocol constant) | Marker indicating streaming mode. |
contexa.streaming.json-start-marker | String | (protocol constant) | Marker for JSON block start. |
contexa.streaming.json-end-marker | String | (protocol constant) | Marker for JSON block end. |
contexa.streaming.timeout | Duration | 5m | Total streaming timeout. |
contexa.streaming.max-retries | int | 3 | Maximum retries for streaming failures. |
contexa.streaming.retry-delay | Duration | 1s | Initial retry delay. |
contexa.streaming.retry-multiplier | double | 1.5 | Exponential backoff multiplier. |
contexa.streaming.marker-buffer-size | int | 100 | Buffer size for marker detection. |
contexa.streaming.sentence-buffering-enabled | boolean | true | Buffer partial sentences before emitting. |
OpenTelemetry (contexa.opentelemetry)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.opentelemetry.enabled | boolean | true | Enable OpenTelemetry exporter. |
contexa.opentelemetry.service-name | String | contexa-core | OTel service name. |
contexa.opentelemetry.exporter-endpoint | String | http://localhost:4317 | OTLP gRPC endpoint. |
contexa.opentelemetry.sampling-probability | double | 1.0 | Trace sampling probability (0.0–1.0). |
Cache (contexa.cache)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.cache.type | enum | REDIS | Cache backend type: LOCAL, REDIS, HYBRID. |
contexa.cache.local.max-size | int | 1000 | Local cache max entries. |
contexa.cache.local.default-ttl-seconds | int | 60 | Local cache default TTL. |
contexa.cache.redis.default-ttl-seconds | int | 300 | Redis cache default TTL. |
contexa.cache.redis.key-prefix | String | contexa:cache: | Redis key prefix. |
contexa.cache.pubsub.enabled | boolean | true | Enable pub/sub cache invalidation. |
contexa.cache.pubsub.channel | String | contexa:cache:invalidation | Pub/sub channel for invalidation events. |
contexa.cache.domains.<domain> — domains: users, roles, permissions, groups, policies, soar, hcad | |||
.local-ttl-seconds | int | varies | Per-domain local TTL (users/roles/groups 3600–14400, permissions 28800, policies 30, soar 900, hcad 86400). |
.redis-ttl-seconds | int | varies | Per-domain Redis TTL (matching local defaults except policies=300). |
Bridge (contexa.bridge)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.bridge.enabled | boolean | true | Enable the SecurityContext bridge. |
contexa.bridge.populate-security-context | boolean | true | Populate Contexa SecurityContext from Spring Security. |
contexa.bridge.authentication.prefer-security-context | boolean | true | Prefer SecurityContext over token claims during authentication mapping. |
contexa.bridge.authentication.security-context.enabled | boolean | true | Enable authentication bridge toward SecurityContext. |
contexa.bridge.authentication.security-context.display-name-keys | List<String> | [displayName, name, fullName, userName, username, preferred_username] | Claim keys resolved into display name. |
contexa.bridge.authentication.security-context.principal-type-keys | List<String> | [principalType, userType, actorType, token_use] | Claim keys resolved into principal type. |
contexa.bridge.authentication.security-context.authentication-type-keys | List<String> | [authenticationType, authMethod, loginMethod, method, factorType] | Claim keys for authentication type. |
contexa.bridge.authentication.security-context.authentication-assurance-keys | List<String> | [authenticationAssurance, authLevel, loa, acr] | Claim keys for assurance level. |
contexa.bridge.authentication.security-context.mfa-keys | List<String> | [mfa, mfaVerified, mfaCompleted, secondFactorVerified, amr] | Claim keys for MFA flags. |
contexa.bridge.authentication.security-context.auth-time-keys | List<String> | [authenticationTime, authenticatedAt, loginTime, issuedAt, auth_time, iat] | Claim keys for authentication time. |
contexa.bridge.authorization.security-context.enabled | boolean | true | Enable authorization bridge. |
contexa.bridge.authorization.security-context.authorization-effect-keys | List<String> | [authorizationEffect, effect, decision, decisionEffect] | Claim keys for authorization effect. |
contexa.bridge.authorization.security-context.privileged-keys | List<String> | [privileged, isPrivileged, privilegedFlow] | Claim keys for privileged flag. |
contexa.bridge.authorization.security-context.policy-id-keys | List<String> | [policyId, policy, decisionPolicy] | Claim keys for policy ID. |
contexa.bridge.authorization.security-context.policy-version-keys | List<String> | [policyVersion, version] | Claim keys for policy version. |
contexa.bridge.authorization.security-context.scope-tag-keys | List<String> | [scopeTags, scopes, scope, permissionScopes, scp] | Claim keys for scope tags. |
contexa.bridge.authorization.security-context.role-keys | List<String> | [effectiveRoles, roles, roleSet, groups] | Claim keys for roles. |
contexa.bridge.authorization.security-context.authority-keys | List<String> | [effectiveAuthorities, authorities, permissions, grantedAuthorities, scope, scp] | Claim keys for authorities. |
contexa.bridge.authorization.session.enabled | boolean | true | Persist authorization context in session. |
contexa.bridge.delegation.session.enabled | boolean | true | Persist delegation context in session. |
contexa.bridge.session.enabled | boolean | true | Enable session-backed bridge storage. |
contexa.bridge.sync.enabled | boolean | true | Enable user synchronization. |
contexa.bridge.sync.min-refresh-interval-seconds | long | 60 | Minimum interval between user refreshes. |
contexa.bridge.sync.synthetic-email-domain | String | shadow.contexa.local | Synthetic email domain for shadow users. |
Tiered LLM Strategy (contexa.security.tiered)
Detailed layer 1 (fast) and layer 2 (expert) runtime tuning exposed through TieredStrategyProperties.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.security.tiered.layer1 | |||
.vector-search-limit | int | 3 | Layer 1 vector search result count. |
.default-budget-profile | String | CORTEX_L1_INTERACTIVE_STRICT | Default prompt budget profile for layer 1. |
.rag.similarity-threshold | double | 0.5 | Layer 1 RAG similarity threshold. |
.session.max-recent-actions | int | 100 | Recent action window for layer 1. |
.cache.max-size | int | 1000 | Layer 1 cache size. |
.cache.ttl-minutes | int | 30 | Layer 1 cache TTL. |
.timeout.total-ms | long | 5000 | Layer 1 total timeout. |
.timeout.llm-ms | long | 3200 | Layer 1 LLM call timeout. |
.timeout.rag-ms | long | 900 | Layer 1 RAG call timeout. |
.prompt.max-similar-events | int | 2 | Max similar events embedded in layer 1 prompt. |
.prompt.max-rag-documents | int | 3 | Max RAG documents embedded in layer 1 prompt. |
.prompt.include-event-id | boolean | false | Include raw event IDs. |
.prompt.include-raw-timestamp | boolean | false | Include raw timestamps. |
.prompt.include-raw-session-id | boolean | false | Include raw session IDs. |
.prompt.include-full-user-agent | boolean | false | Include full user-agent strings. |
contexa.security.tiered.layer2 | |||
.timeout-ms | long | 7000 | Layer 2 total timeout. |
.enable-soar | boolean | false | Enable SOAR escalation from layer 2. |
.rag-top-k | int | 5 | Layer 2 RAG top-k. |
.default-budget-profile | String | CORTEX_L2_EXPERT_STRICT | Default prompt budget profile for layer 2. |
.rag.similarity-threshold | double | 0.5 | Layer 2 RAG similarity threshold. |
.cache.max-size | int | 1000 | Layer 2 cache size. |
.cache.ttl-minutes | int | 30 | Layer 2 cache TTL. |
contexa.security.tiered.truncation | |||
.layer1.user-agent | int | 150 | Layer 1 user-agent truncation length. |
.layer1.payload | int | 200 | Layer 1 payload truncation length. |
.layer1.rag-document | int | 180 | Layer 1 RAG document truncation length. |
.layer2.user-agent | int | 150 | Layer 2 user-agent truncation length. |
.layer2.payload | int | 1000 | Layer 2 payload truncation length. |
.layer2.rag-document | int | 500 | Layer 2 RAG document truncation length. |
contexa.security.tiered.vector-cache | |||
.max-size | int | 10000 | Vector cache size. |
.expire-minutes | int | 5 | Vector cache expiration. |
.enabled | boolean | true | Enable vector cache. |
.record-stats | boolean | true | Record cache statistics. |
contexa.security.tiered.security | |||
.trusted-proxies | List<String> | [] | Trusted reverse proxy CIDRs. |
.trusted-proxy-validation-enabled | boolean | true | Enable trusted proxy validation. |
contexa.security.tiered.prompt-compression / .prompt-runtime | |||
.prompt-compression.enabled | boolean | true | Enable prompt compression. |
.prompt-runtime.native-structured-output-enabled | boolean | true | Enable native structured output. |
.prompt-runtime.native-structured-output-disabled-profiles | List<String> | [] | Profiles that disable native structured output. |
.prompt-runtime.telemetry-enabled | boolean | true | Enable prompt runtime telemetry. |
Spring AI Task Mapping (contexa.security.mapping)
| Property | Type | Default | Description |
|---|---|---|---|
contexa.security.mapping.task-to-tier | Map<String, Integer> | {} | Override tier assignment per task type. |
contexa.security.mapping.task-to-analysis-level | Map<String, String> | {} | Override analysis level per task type. |
contexa.security.mapping.task-configs | Map<String, Object> | {} | Per-task configuration overrides. |
contexa.security.mapping.defaults.tier1-tasks | String[] | [THREAT_FILTERING, QUICK_DETECTION] | Default tier 1 task list. |
contexa.security.mapping.defaults.tier2-tasks | String[] | [CONTEXTUAL_ANALYSIS, BEHAVIOR_ANALYSIS, CORRELATION] | Default tier 2 task list. |
contexa.security.mapping.defaults.tier3-tasks | String[] | [EXPERT_INVESTIGATION, INCIDENT_RESPONSE, FORENSIC_ANALYSIS, SOAR_AUTOMATION, APPROVAL_WORKFLOW] | Default tier 3 task list. |
contexa.security.mapping.defaults.default-tier | Integer | 2 | Fallback tier. |
contexa.security.mapping.defaults.default-analysis-level | String | NORMAL | Fallback analysis level. |
Security Event / Router / Redis / Kafka / Session / Pipeline / Plane / ColdPath / StepUp
Additional runtime-level tuning surfaces. Defaults are production-ready; override only when instructed.
| Property | Type | Default | Description |
|---|---|---|---|
contexa.security.coldpath (SecurityColdPathProperties) | |||
.confidence.layer1-base | double | 0.5 | Base confidence used by layer 1 cold path. |
.confidence.layer2-base | double | 0.7 | Base confidence used by layer 2 cold path. |
contexa.security.event (SecurityEventProperties) | |||
.publishing.enabled | boolean | true | Publish security events. |
.publishing.exclude-uris | String | /actuator,/health,/metrics | URIs excluded from publishing. |
.publishing.anonymous.enabled | boolean | true | Publish anonymous events. |
.executor.core-pool-size | int | cores×2 | Publisher executor core size. |
.executor.max-pool-size | int | cores×4 | Publisher executor max size. |
.executor.queue-capacity | int | 10000 | Publisher queue capacity. |
.tier.critical.max-latency-ms | int | 100 | Critical tier latency budget. |
.tier.contextual.max-latency-ms | int | 1000 | Contextual tier latency budget. |
.tier.general.max-latency-ms | int | 10000 | General tier latency budget. |
.tier.general.sampling-rate | double | 0.1 | General tier sampling rate. |
.deduplication.enabled | boolean | true | Enable event deduplication. |
.deduplication.window-minutes | int | 5 | Deduplication window. |
.deduplication.cache-size | int | 10000 | Deduplication cache size. |
contexa.security.router (SecurityRouterProperties) | |||
.threshold.soar | double | 0.9 | SOAR escalation threshold. |
.threshold.block | double | 0.8 | Block action threshold. |
.threshold.analysis-confidence | double | 0.6 | Analysis confidence threshold. |
.threshold.pass-through | double | 0.6 | Pass-through threshold. |
contexa.security.session (SecuritySessionProperties) | |||
.create.allowed | boolean | true | Allow session creation. |
.header.name | String | X-Auth-Token | Session token header. |
.bearer.enabled | boolean | true | Accept bearer tokens. |
.hijack.channel | String | security:session:hijack:event | Session hijack event channel. |
.hijack.detection.enabled | boolean | true | Enable session hijack detection. |
.cookie.name | String | SESSION | Session cookie name. |
.threat.ip-change-risk | double | 0.4 | Risk score for IP change. |
.threat.ua-change-risk | double | 0.3 | Risk score for UA change. |
.threat.rapid-access-threshold-ms | int | 100 | Rapid access threshold. |
.threat.rapid-access-risk | double | 0.2 | Rapid access risk score. |
.threat.thresholds.monitoring | double | 0.5 | Monitoring threshold. |
.threat.thresholds.grace-period | double | 0.7 | Grace period threshold. |
.threat.thresholds.invalidation | double | 0.9 | Invalidation threshold. |
security.redis (SecurityRedisProperties) | |||
.channel.authorization | String | security:authorization:events | Authorization event channel. |
.channel.authentication | String | security:events | Authentication event channel. |
.channel.incident | String | security:incidents | Incident event channel. |
.channel.threat | String | security:threats | Threat event channel. |
.channel.audit | String | security:audit:events | Audit event channel. |
.channel.general | String | security:events | General event channel. |
.stream.authorization / .incident / .threat / .audit / .general / .authentication | String | security:stream:* | Redis Streams names by domain. |
.stream.maxlen | int | 10000 | Redis Stream max length. |
.ttl.minutes | int | 60 | Security Redis key TTL. |
.memory.max-mb | int | 1024 | Security Redis memory budget. |
.memory.warning-threshold | double | 0.8 | Memory warning threshold. |
.memory.critical-threshold | double | 0.9 | Memory critical threshold. |
security.kafka (SecurityKafkaProperties) | |||
.topic.authorization | String | security-authorization-events | Authorization topic. |
.topic.authentication | String | auth-events | Authentication topic. |
.topic.incident | String | security-incident-events | Incident topic. |
.topic.threat | String | threat-indicators | Threat topic. |
.topic.audit | String | security-audit-events | Audit topic. |
.topic.general | String | security-events | General topic. |
.topic.dlq | String | security-events-dlq | DLQ topic. |
.topic.soar-action | String | soar-action-events | SOAR action topic. |
.dlq.max-retries | int | 3 | DLQ max retries. |
.dlq.retry-delay-ms | int | 5000 | DLQ retry delay. |
.dlq.alert-threshold | int | 10 | DLQ alert threshold. |
contexa.security.pipeline (SecurityPipelineProperties) | |||
.kafka.topic | String | security-events | Default pipeline Kafka topic. |
contexa.security.plane (SecurityPlaneProperties) | |||
.agent.name | String | SecurityPlaneAgent-1 | Plane agent identifier. |
.agent.auto-start | boolean | true | Auto-start the plane agent. |
.agent.organization-id | String | default-org | Agent organization ID. |
.agent.execution-mode | String | ASYNC | Agent execution mode. |
.agent.auto-approve-low-risk | boolean | false | Auto-approve low-risk actions. |
.agent.event-timeout-ms | long | 30000 | Agent event processing timeout. |
.agent.max-deferred-retries | int | 3 | Max deferred retries. |
.kafka.bootstrap-servers | String | localhost:9092 | Kafka bootstrap servers. |
.kafka.group-id | String | security-plane-consumer | Kafka consumer group. |
.kafka.topics.security-events / .threat-indicators / .network-events / .auth-events | String | (various) | Plane Kafka topic names. |
.monitor.queue-size | int | 10000 | Monitor queue size. |
.monitor.batch-size | int | 8 | Monitor batch size. |
.monitor.flush-interval-ms | long | 500 | Monitor flush interval. |
.monitor.correlation-window-minutes | int | 10 | Monitor correlation window. |
.monitor.dedup-window-minutes | int | 5 | Monitor dedup window. |
.notifier.batch-size | int | 10 | Notifier batch size. |
.notifier.async-enabled | boolean | true | Notifier async mode. |
.notifier.critical-threshold | double | 0.8 | Notifier critical threshold. |
.redis.batch-size | int | 50 | Plane Redis batch size. |
.redis.cache.ttl-minutes | int | 60 | Plane Redis cache TTL. |
.redis.channel.security-events | String | security:events | Plane Redis security event channel. |
.redis.channel.threat-alerts | String | security:threats | Plane Redis threat alert channel. |
.llm-executor.core-pool-size | int | 2 | LLM executor core size. |
.llm-executor.max-pool-size | int | 2 | LLM executor max size. |
.llm-executor.queue-capacity | int | 50 | LLM executor queue capacity. |
.deduplication.enabled | boolean | true | Enable plane deduplication. |
.deduplication.window-minutes | int | 5 | Deduplication window. |
.deduplication.cache-size | int | 10000 | Deduplication cache size. |
contexa.security.stepup (SecurityStepUpProperties) | |||
.max-attempts | int | 3 | Max step-up attempts. |
.lockout-duration | int | 300 | Lockout duration (seconds). |
contexa.iam.admin / contexa.policy | |||
contexa.iam.admin.rest-docs-path | String | /docs/index.html | IAM admin REST docs path. |
contexa.policy.combining-algorithm | enum | FIRST_APPLICABLE | XACML policy combining algorithm. |