Skip to content

System Config Keys Reference

The Platform exposes 71 runtime configuration keys through the admin API. These keys control gateway behavior — DLP thresholds, rate limits, audit settings, agent execution, quality scoring, and more — without requiring a service restart or redeployment.

Every configuration key resolves through a three-tier priority chain:

  1. Database override — value set via the admin API (PUT /api/v1/admin/config/{key})
  2. Environment variable — value from the process environment
  3. Compiled default — hardcoded default in the application

Database overrides take highest precedence. When an admin updates a key via the API, the new value is persisted in the system_configs table and takes effect immediately for subsequent requests.


All system config endpoints require admin-role JWT authentication.

List all configuration entries grouped by category.

Response 200 OK

[
{
"key": "rate_limit_requests_per_minute",
"value": 60,
"source": "default",
"editable": true,
"category": "Rate Limiting",
"description": "Maximum requests per user per minute.",
"value_type": "int",
"enum_options": null,
"min_value": 1,
"max_value": 10000
}
]
Field Type Description
key string Configuration key name
value string | int | bool Current resolved value
source string Resolution source: db, env, or default
editable bool Whether the key accepts API updates
category string UI grouping category
description string Human-readable description
value_type string Expected type: string, int, bool, or enum
enum_options string[] | null Allowed values for enum-type keys
min_value int | null Minimum allowed value (int keys only)
max_value int | null Maximum allowed value (int keys only)

Sensitive values (database URLs, passwords) are masked as ***.


Update a single configuration value. Only editable: true keys accept updates.

Path parameters

Parameter Type Description
key string Configuration key to update (lowercase, e.g. rate_limit_requests_per_minute)

Request body

{ "value": 120 }
Field Type Required Description
value string | int | bool yes New value — must match the key’s value_type and pass constraint validation

Response 200 OK — the updated ConfigEntry object.

Error codes

Status Condition
400 Bad Request Key is read-only, value fails type validation, or value is outside min/max bounds
404 Not Found Unknown configuration key

Every config update emits an audit log entry recording the old value, new value, and the acting admin’s identity.


The following keys exist in the settings but are never returned by the config API. They are set exclusively through environment variables or secrets backends:

jwt_secret_key, database_url_sync, audit_webhook_url, audit_webhook_token, cors_origins, security_csp_policy


Read-only keys reflecting the deployment identity.

Key Env Var Type Default Editable Description
app_name APP_NAME string Arbitex no Application display name
app_version APP_VERSION string 0.1.0 no Application semantic version
debug DEBUG bool false no Whether debug mode is enabled
database_url DATABASE_URL string (masked) no Database connection URL (masked for security)
jwt_algorithm JWT_ALGORITHM string HS256 no JWT signing algorithm

Authentication and access control settings.

Key Env Var Type Default Editable Constraints Description
jwt_access_token_expire_minutes JWT_ACCESS_TOKEN_EXPIRE_MINUTES int 60 yes 5–1440 JWT access token expiration in minutes
security_hsts_enabled SECURITY_HSTS_ENABLED bool true yes Send Strict-Transport-Security header
prompt_guard_enabled PROMPT_GUARD_ENABLED bool true yes Toggle prompt injection defenses
prompt_guard_log_level PROMPT_GUARD_LOG_LEVEL enum warning yes debug, info, warning, error Log level for prompt guard warnings
admin_recovery_enabled ADMIN_RECOVERY_ENABLED bool true yes Allow admins to trigger account recovery for users
self_service_recovery_enabled SELF_SERVICE_RECOVERY_ENABLED bool false yes Allow users to request self-service account recovery via email
allow_open_registration ALLOW_OPEN_REGISTRATION bool false yes Allow open user registration without an invite token
max_concurrent_sessions MAX_CONCURRENT_SESSIONS int 5 yes 1–100 Maximum concurrent sessions per user

Key Env Var Type Default Editable Constraints Description
rate_limit_requests_per_minute RATE_LIMIT_REQUESTS_PER_MINUTE int 60 yes 1–10000 Maximum requests per user per minute
rate_limit_admin_exempt RATE_LIMIT_ADMIN_EXEMPT bool false yes Whether admin users bypass rate limits
usage_throttle_rpm_factor USAGE_THROTTLE_RPM_FACTOR string 0.5 yes RPM reduction factor when org is in 95–100% usage band (0.0–1.0)

Key Env Var Type Default Editable Constraints Description
default_summarizer_model DEFAULT_SUMMARIZER_MODEL string claude-sonnet-4-20250514 yes Default model ID used for summarize mode
audit_sinks AUDIT_SINKS string db yes Allowed: db, jsonl, webhook Active audit sinks (comma-separated)
audit_compression_level AUDIT_COMPRESSION_LEVEL int 1 yes 1–19 Zstd compression level for audit prompt/response text (1=fastest, 19=max ratio)
audit_shard_threshold AUDIT_SHARD_THRESHOLD int 10000000 yes 100000–100000000 Row count threshold per audit shard before creating the next shard
audit_retention_days AUDIT_RETENTION_DAYS int 90 yes 7–3650 Days to retain audit shards before dropping

Key Env Var Type Default Editable Description
auto_title_enabled AUTO_TITLE_ENABLED bool true yes Enable automatic title generation for new conversations
auto_title_model AUTO_TITLE_MODEL string claude-haiku-3-20240307 yes Model for auto-title generation (format: provider/model_id or model_id)

Key Env Var Type Default Editable Constraints Description
dlp_entity_thresholds DLP_ENTITY_THRESHOLDS string {} yes Valid JSON Per-entity-type confidence thresholds (JSON). Overrides defaults in the DLP pipeline
dlp_ner_force DLP_NER_FORCE enum auto yes auto, always, never NER detection override: auto (pack-based gating), always (force NER on), never (force NER off). Per-org override via dlp_ner_force:{org_id}
dlp_context_window_chars DLP_CONTEXT_WINDOW_CHARS int 50 yes 10–200 Character window (±N) around regex matches for context keyword scanning
image_ocr_enabled IMAGE_OCR_ENABLED bool false yes Enable image text extraction via OCR for DLP scanning. Per-org override via org.<org_id>.image_ocr_enabled
image_ocr_provider IMAGE_OCR_PROVIDER enum tesseract yes tesseract, azure, disabled OCR provider. Per-org override via org.<org_id>.image_ocr_provider
image_ocr_max_file_size_mb IMAGE_OCR_MAX_FILE_SIZE_MB int 20 yes 1–100 Maximum file size in MB for OCR processing
image_ocr_timeout_seconds IMAGE_OCR_TIMEOUT_SECONDS int 30 yes 5–120 Per-file OCR timeout in seconds
image_visual_detection_enabled IMAGE_VISUAL_DETECTION_ENABLED bool false yes Enable visual pattern detection (credit cards, ID cards, QR codes). Per-org override via org.<org_id>.image_visual_detection_enabled
image_visual_sensitivity IMAGE_VISUAL_SENSITIVITY enum medium yes low, medium, high Sensitivity for visual pattern detection. Per-org override via org.<org_id>.image_visual_sensitivity
tier0_prompt_injection_enabled TIER0_PROMPT_INJECTION_ENABLED bool true yes Enable Tier 0 TF-IDF prompt injection pre-filter
tier0_confidence_threshold TIER0_CONFIDENCE_THRESHOLD string 0.95 yes Confidence threshold for Tier 0 pre-filter. Above this threshold, text is blocked without running the full DLP pipeline

Key Env Var Type Default Editable Constraints Description
drift_baseline_window_days DRIFT_BASELINE_WINDOW_DAYS int 7 yes 1–90 Rolling baseline window in days for drift detection
drift_comparison_window_minutes DRIFT_COMPARISON_WINDOW_MINUTES int 60 yes 1–1440 Comparison window in minutes for drift detection
drift_latency_threshold DRIFT_LATENCY_THRESHOLD string 2.0 yes Z-score threshold for latency drift anomaly flagging
drift_topic_threshold DRIFT_TOPIC_THRESHOLD string 0.3 yes Jensen-Shannon divergence threshold for topic drift anomaly flagging
drift_behavior_sensitivity DRIFT_BEHAVIOR_SENSITIVITY enum medium yes low, medium, high Behavior anomaly detection sensitivity (low=3σ, medium=2σ, high=1.5σ)

Key Env Var Type Default Editable Constraints Description
fairness_audit_enabled FAIRNESS_AUDIT_ENABLED bool true yes Enable fairness violation audit event emission
fairness_baseline_days FAIRNESS_BASELINE_DAYS int 7 yes 1–90 Rolling baseline window in days for fairness analysis
fairness_group_attributes FAIRNESS_GROUP_ATTRIBUTES string department,role yes Comma-separated user metadata attributes to compare for bias detection
fairness_sentiment_threshold FAIRNESS_SENTIMENT_THRESHOLD string 0.15 yes Sentiment deviation threshold for flagging bias (0.01–1.0)

Model intelligence and evaluation settings.

Key Env Var Type Default Editable Constraints Description
eval_comparison_enabled EVAL_COMPARISON_ENABLED bool true yes Enable model comparison evaluation feature
eval_max_prompts_per_comparison EVAL_MAX_PROMPTS_PER_COMPARISON int 50 yes 1–200 Maximum prompts per model comparison run
eval_analytics_trend_days EVAL_ANALYTICS_TREND_DAYS int 30 yes 1–365 Default number of days for analytics trend data
eval_health_weights EVAL_HEALTH_WEIGHTS string {"latency":0.2,"quality":0.2,"safety":0.2,"fairness":0.2,"evaluation":0.2} yes Valid JSON, must sum to 1.0 Weights for health score computation per signal

Key Env Var Type Default Editable Constraints Description
agent_enabled AGENT_ENABLED bool false yes Enable the autonomous agent execution framework
agent_max_concurrent_sessions AGENT_MAX_CONCURRENT_SESSIONS int 3 yes 1–20 Maximum concurrent agent sessions per tenant
agent_max_steps AGENT_MAX_STEPS int 20 yes 1–100 Maximum steps per agent session
agent_step_timeout_seconds AGENT_STEP_TIMEOUT_SECONDS int 30 yes 5–300 Timeout in seconds for each agent step

Default per-user quota limits applied when no explicit user or group quota is configured.

Key Env Var Type Default Editable Constraints Description
default_daily_token_limit DEFAULT_DAILY_TOKEN_LIMIT int 1000000 yes 0–100000000 Default daily token limit per user (0 = unlimited)
default_monthly_token_limit DEFAULT_MONTHLY_TOKEN_LIMIT int 30000000 yes 0–1000000000 Default monthly token limit per user (0 = unlimited)
default_daily_request_limit DEFAULT_DAILY_REQUEST_LIMIT int 1000 yes 0–1000000 Default daily request limit per user (0 = unlimited)
default_monthly_request_limit DEFAULT_MONTHLY_REQUEST_LIMIT int 30000 yes 0–10000000 Default monthly request limit per user (0 = unlimited)
default_daily_cost_limit_usd DEFAULT_DAILY_COST_LIMIT_USD int 50 yes 0–100000 Default daily cost limit per user in USD (0 = unlimited)
default_monthly_cost_limit_usd DEFAULT_MONTHLY_COST_LIMIT_USD int 1500 yes 0–1000000 Default monthly cost limit per user in USD (0 = unlimited)

Key Env Var Type Default Editable Constraints Description
output_scoring_enabled OUTPUT_SCORING_ENABLED bool false yes Enable output quality scoring (hallucination, relevance, toxicity, groundedness)
output_scoring_timeout_ms OUTPUT_SCORING_TIMEOUT_MS int 5000 yes 1000–30000 Skip output scoring if provider response latency exceeds this threshold (ms)
quality_alert_threshold_hallucination QUALITY_ALERT_THRESHOLD_HALLUCINATION string 0.3 yes Alert when avg hallucination score drops below this (0.0–1.0)
quality_alert_threshold_relevance QUALITY_ALERT_THRESHOLD_RELEVANCE string 0.3 yes Alert when avg relevance score drops below this (0.0–1.0)
quality_alert_threshold_toxicity QUALITY_ALERT_THRESHOLD_TOXICITY string 0.3 yes Alert when avg toxicity score drops below this (0.0–1.0)
quality_alert_threshold_groundedness QUALITY_ALERT_THRESHOLD_GROUNDEDNESS string 0.3 yes Alert when avg groundedness score drops below this (0.0–1.0)

Key Env Var Type Default Editable Description
appguard_ml_enabled APPGUARD_ML_ENABLED bool false yes Enable ML classifier as primary threat scorer (falls back to heuristic if unavailable)
appguard_ensemble_mode APPGUARD_ENSEMBLE_MODE bool false yes Run both heuristic and ML classifier, log A/B comparison in response

SMTP delivery settings for transactional emails (account recovery, security notifications, invitations).

Key Env Var Type Default Editable Constraints Description
smtp_host SMTP_HOST string "" yes SMTP server hostname. Empty = dev mode (emails logged, not sent)
smtp_port SMTP_PORT int 587 yes 1–65535 SMTP server port (587 for STARTTLS, 465 for SSL)
smtp_username SMTP_USERNAME string "" yes SMTP authentication username
smtp_password SMTP_PASSWORD string (masked) yes SMTP authentication password
smtp_from_address SMTP_FROM_ADDRESS string [email protected] yes Sender address for transactional emails
smtp_use_tls SMTP_USE_TLS bool true yes Use TLS/STARTTLS for SMTP connection

Several DLP and image scanning keys support per-org overrides using the naming convention org.<org_id>.<key_name>. These are stored as additional entries in the system_configs table and take precedence over the global key for the specified org.

Supported per-org keys:

  • org.<org_id>.image_ocr_enabled
  • org.<org_id>.image_ocr_provider
  • org.<org_id>.image_visual_detection_enabled
  • org.<org_id>.image_visual_sensitivity
  • dlp_ner_force:<org_id>

Example — enable OCR for a specific org:

Terminal window
curl -X PUT https://gateway.arbitex.ai/api/v1/admin/config/org.550e8400-e29b-41d4-a716-446655440000.image_ocr_enabled \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"value": true}'