Skip to main content
Installation

Configuration reference

Settings in .env in the installation directory: required values, sign-in and accounts, QRadar connection and AQL, model and reasoning, output language, offense sync, scheduled reports, platform check-up thresholds, audit and retention, resources.

Configuration lives in .env in the installation directory. After a change, run docker compose -f docker-compose.prod.yml up -d; the change applies once the gateway container is recreated. Settings not listed here can stay at their defaults. .env.example in the archive describes every setting.

Values you can change in Settings and AI settings (QRadar connection, log-source whitelist, masking mode, audit, offense sync, providers) are stored on the gateway's state volume and take precedence over .env. In .env they only seed the first start.

Starting with 1.0.2, every setting in .env is passed to the gateway container. In 1.0.1 and earlier, a standard install passes only the settings listed in docker-compose.prod.yml, so settings marked "1.0.2 or later" on this page have no effect when written to .env.

Required

SettingDescription
QRADAR_URLQRadar Console URL, such as https://qradar.corp.local, without a path
QRADAR_SEC_TOKENAuthorized-service SEC token. See QRadar token permissions
LLM_API_KEY, LLM_MODELAPI key and model name of the first LLM provider
CADDY_SITE_ADDRESSHostname analysts use
RST_GATEWAY_SHARED_SECRETShared secret between Caddy and the gateway, generated by deploy.sh
RST_ADMIN_TOKENOperations API token, sent in the X-RST-Admin-Token header, generated by deploy.sh
RST_USER_DB_PASSWORDPassword of the PostgreSQL account database, generated by deploy.sh
GATEWAY_IMAGE_TAGGateway image version to run, written by deploy.sh and rst-update.sh

Sign-in and accounts

SettingDefaultDescription
RST_ADMIN_USERNAMEadminAccount name of the first administrator
RST_ADMIN_PASSWORD_HASHEmptyPassword hash of the first administrator, with every $ written as $$. When empty, the factory password works only from the gateway host itself
RST_SESSION_TTL_HOURS12Sign-in session lifetime in hours
RST_USER_DB_URLWritten by deploy.shAccount database connection string. When empty, there is a single admin account and users cannot be added
RST_ALLOW_DEFAULT_PASSWORDEmpty1 allows sign-in with the factory password over the network. For isolated test environments only

QRadar connection and AQL

SettingDefaultDescription
QRADAR_API_VERSION20.0REST API version. Use 20.0 for 7.5 and later
RST_QRADAR_VERIFY_CERTSfalseVerify the Console certificate
RST_QRADAR_CA_CERTEmptyPath of a private CA inside the container, such as /certs/qradar-ca.pem; put the file in ./certs/ in the installation directory. Setting it turns verification on
RST_AQL_TIMEOUT_SECONDS120Time budget for one Ariel search. On timeout the search is cancelled and qradar_timeout is returned
RST_AQL_MAX_ROWS1000Row cap. A missing or larger LIMIT in the AQL is set to this value
RST_AQL_DEFAULT_WINDOW_MINUTES60Time window in minutes when the question names no time
RST_LOG_SOURCE_WHITELISTEmptyLog-source whitelist: comma-separated log-source names or ids, * allowed, such as WinCollect @ *,PaloAlto-*,63. See QRadar token permissions
RST_LOG_SOURCE_CACHE_S300Log-source catalog cache in seconds. 1.0.2 or later
RST_ARIEL_SCHEMA_CACHE_S900Ariel field definition cache in seconds. 1.0.2 or later
RST_DSL_CACHE_TTL_S600Cache in seconds for AQL generated from an identical question; 0 turns it off
RST_CONVERSATION_TTL_DAYS7Days without activity before a thread expires

Model and reasoning

SettingDefaultDescription
LLM_BASE_URLhttps://ark.cn-beijing.volces.com/api/v3Endpoint of the first provider
LLM_TIMEOUT_S180Timeout for one model call, in seconds
RST_LLM_THINKING_TIMEOUT_S600Timeout for high-reasoning calls (the end of an investigation); the larger of this and LLM_TIMEOUT_S applies. 1.0.2 or later
LLM_REASONINGautoReasoning effort of the first provider: auto, off, low, high
RST_NL2AQL_REASONINGlowReasoning effort for the AQL-generation step of Ask AI: none, low, high, native. 1.0.2 or later
RST_LLM_FIRST_TOKEN_TIMEOUT_S45Maximum wait for the model's first token while generating a query, in seconds; 0 for no limit
RST_AGENTIC_INVESTIGATE1Offense investigation runs AQL over several rounds chosen by the model. 0 runs a single-step investigation. Models without function calling fall back to single-step automatically. 1.0.2 or later
RST_AGENTIC_MAX_STEPS8Maximum search rounds in an investigation, 1 to 20. 1.0.2 or later
RST_AGENTIC_DEADLINE_S180Total time budget for one investigation, in seconds; 0 for no limit. 1.0.2 or later
RST_TRIAGE_LLM_CHUNK, RST_TRIAGE_LLM_CONCURRENCY4, 3Clusters per model call and concurrent calls in batch triage. 1.0.2 or later
RST_MASKING_MODEcloudMasking mode: cloud, private, airgapped
RST_TIMEZONEUTC; deploy.sh writes +08:00Site timezone, as +08:00 or Asia/Shanghai. It sets what "today" means to the model and where report periods begin
RST_OUTPUT_LANGzhOutput language of background work with no user behind it (offense summaries, scheduled reports, notifications): zh or en. Output an analyst triggers follows that analyst's interface language. 1.0.2 or later
RST_RATELIMIT_GENERATE, RST_RATELIMIT_EXECUTE30, 30Query generations and executions per IP per minute. Raise them when many analysts share one egress IP

Offense sync

SettingDefaultDescription
RST_OFFENSE_INGEST_ENABLED1Sync offenses from QRadar on a schedule. 0 turns it off, and the Offenses page syncs only on demand
RST_OFFENSE_INGEST_INTERVAL_SECONDS30Sync interval in seconds
RST_OFFENSE_INGEST_LOOKBACK7dHow far back the first sync looks, in s, m, h, d or w, such as 6h or 30d
RST_OFFENSE_MIN_MAGNITUDE0Offenses below this magnitude (0 to 10) are neither stored nor pushed
RST_OFFENSE_INGEST_CONCURRENCY4Concurrent AI summaries; each offense takes one model call
RST_ALERT_SUMMARY10 stores offenses without an AI summary. 1.0.2 or later
RST_ALERT_SUMMARY_MIN_SEVERITYinfoSummarize only offenses at or above this severity. 1.0.2 or later

Each sync cycle fetches at most 10 pages. When the backlog is larger, the gateway log shows offense_ingest_page_cap_reached and the rest is fetched in the next cycle.

Scheduled reports

SettingDefaultDescription
RST_REPORT_SCHEDULEEmptyComma-separated combination of daily, weekly and monthly. Empty means no scheduled reports
RST_REPORT_TZSame as RST_TIMEZONETimezone of report period boundaries
RST_REPORT_WEBHOOK_URL, RST_REPORT_WEBHOOK_HEADERSEmptyEach report is POSTed to this URL
RST_REPORT_PERSIST1Archive reports in copilot.db
RST_REPORT_CHECK_INTERVAL_SECONDS1800Scheduler check interval in seconds
RST_REPORT_CATCHUP_MAX7Maximum missed periods generated after downtime; 0 for none
RST_REPORT_TRIAGE01 appends an automatic triage section to each report. It takes one model call and needs a paid license. 1.0.2 or later

Platform check-up thresholds

These settings take effect starting with 1.0.2.

SettingDefaultDescription
RST_PLATFORM_EPS_WARN_PCT, RST_PLATFORM_EPS_FAIL_PCT85, 100EPS usage as a percentage of the licensed rate
RST_PLATFORM_STALE_WARN_H, RST_PLATFORM_STALE_FAIL_H6, 24Hours without events before a log source counts as stale
RST_PLATFORM_OFFENSE_WARN, RST_PLATFORM_OFFENSE_FAIL200, 800Backlog of OPEN offenses
RST_PLATFORM_OFFENSE_OLD_DAYS7Days an offense can stay open before it counts as old

Audit and retention

SettingDefaultDescription
RST_AUDIT_ENABLEDtrueWrite the audit trail to copilot.db
RST_AUDIT_RETENTION_DAYS180Audit retention in days
RST_AUDIT_SYSLOG_URLEmptyForward audit to syslog as udp://, tcp:// or tls://host:port; it can point at QRadar itself. Enterprise. 1.0.2 or later
RST_AUDIT_WEBHOOK_URL, RST_AUDIT_WEBHOOK_HEADERSEmptyForward audit to a webhook. Enterprise. 1.0.2 or later
RST_AUDIT_WEBHOOK_ALLOWLISTEmptyAllowed webhook hosts. When empty, only loopback and link-local addresses are refused
RST_ANALYSIS_TTL_DAYS30Investigation record retention in days. 1.0.2 or later
RST_METRICS_TOKENEmptyScrape token for /metrics

Resources

SettingDefaultDescription
RST_GATEWAY_CPUS, RST_GATEWAY_MEM2, 2gCPU and memory limits of the gateway container
RST_STATE_DB/app/state/copilot.dbPath of the SQLite state database inside the container

SSO settings are described in SSO.

On this page