Skip to main content

Configuration Reference

The configuration schema is defined by dataclasses in smolotchi/core/config.py.

Code: smolotchi/core/config.py:ConfigStore

Environment variables

NameDefaultDescriptionCode Reference
SMOLOTCHI_DB/var/lib/smolotchi/events.dbOverride the SQLite DB path.smolotchi/core/paths.py:resolve_db_path
SMOLOTCHI_ARTIFACT_ROOT/var/lib/smolotchi/artifactsOverride artifact root.smolotchi/core/paths.py:resolve_artifact_root
SMOLOTCHI_LOCK_ROOT/run/smolotchi/locksOverride lock root.smolotchi/core/paths.py:resolve_lock_root
SMOLOTCHI_CONFIGconfig.tomlOverride config path.smolotchi/core/paths.py:resolve_config_path
SMOLOTCHI_DEFAULT_TAGlab-approvedDefault tag for actions.smolotchi/core/paths.py:resolve_default_tag
SMOLOTCHI_DEVICEpi_zeroDevice identifier.smolotchi/core/paths.py:resolve_device
SMOLOTCHI_DISPLAY_DRYRUN``Display dry-run toggle.smolotchi/core/paths.py:resolve_display_dryrun

The SQLite database at SMOLOTCHI_DB is automatically migrated on startup and tracks applied schema versions in the schema_version table. Connections are configured with WAL mode and a busy timeout so operator reads can proceed while services run. This keeps writer locks short and improves concurrent access to the events database.

config.toml fields

NameTypeDefaultDescriptionCode Reference
ai.autonomous_include_vuln_assessboolTrueDefaults from dataclass fields.smolotchi/core/config.py
ai.cache.discovery_ttl_secondsint600Defaults from dataclass fields.smolotchi/core/config.py
ai.cache.portscan_ttl_secondsint900Defaults from dataclass fields.smolotchi/core/config.py
ai.cache.use_cached_discoveryboolTrueDefaults from dataclass fields.smolotchi/core/config.py
ai.cache.use_cached_portscanboolTrueDefaults from dataclass fields.smolotchi/core/config.py
ai.cache.use_cached_vulnboolTrueDefaults from dataclass fields.smolotchi/core/config.py
ai.cache.vuln_ttl_http_secondsint600Defaults from dataclass fields.smolotchi/core/config.py
ai.cache.vuln_ttl_secondsint1800Defaults from dataclass fields.smolotchi/core/config.py
ai.cache.vuln_ttl_smb_secondsint1800Defaults from dataclass fields.smolotchi/core/config.py
ai.cache.vuln_ttl_ssh_secondsint3600Defaults from dataclass fields.smolotchi/core/config.py
ai.exec.batch_strategystrper_hostDefaults from dataclass fields.smolotchi/core/config.py
ai.exec.concurrencyint1Defaults from dataclass fields.smolotchi/core/config.py
ai.exec.cooldown_between_actions_msint250Defaults from dataclass fields.smolotchi/core/config.py
ai.exec.cooldown_between_hosts_msint800Defaults from dataclass fields.smolotchi/core/config.py
ai.exec.max_retriesint1Defaults from dataclass fields.smolotchi/core/config.py
ai.exec.retry_backoff_msint800Defaults from dataclass fields.smolotchi/core/config.py
ai.max_hosts_per_planint16Defaults from dataclass fields.smolotchi/core/config.py
ai.max_stepsint80Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.cooldown_multiplier_hardfloat3.0Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.cooldown_multiplier_softfloat1.5Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
ai.throttle.loadavg_hardfloat1.5Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.loadavg_softfloat0.9Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.max_cooldown_msint5000Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.min_cooldown_msint150Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.temp_hard_cint80Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.temp_multiplier_hardfloat3.0Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.temp_multiplier_softfloat1.5Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.temp_soft_cint70Defaults from dataclass fields.smolotchi/core/config.py
ai.throttle.use_cpu_tempboolTrueDefaults from dataclass fields.smolotchi/core/config.py
baseline.enabledboolFalseDefaults from dataclass fields.smolotchi/core/config.py
baseline.profilesDict[str, List[str]]{}Defaults from dataclass fields.smolotchi/core/config.py
baseline.scopesDict[str, List[str]]{}Defaults from dataclass fields.smolotchi/core/config.py
core.default_statestrWIFI_OBSERVEDefaults from dataclass fields.smolotchi/core/config.py
core.tick_intervalfloat1.0Defaults from dataclass fields.smolotchi/core/config.py
invalidation.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
invalidation.invalidate_on_port_changeboolTrueDefaults from dataclass fields.smolotchi/core/config.py
lan.allowlist_scriptsList[str][]Defaults from dataclass fields.smolotchi/core/config.py
lan.default_scopestr10.0.10.0/24Defaults from dataclass fields.smolotchi/core/config.py
lan.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
lan.max_jobs_per_tickint1Defaults from dataclass fields.smolotchi/core/config.py
lan.noisy_scriptsList[str][]Defaults from dataclass fields.smolotchi/core/config.py
lan.safe_modeboolTrueDefaults from dataclass fields.smolotchi/core/config.py
policy.allowed_scopesList[str]['10.0.0.0/8', '192.168.0.0/16']Defaults from dataclass fields.smolotchi/core/config.py
policy.allowed_tagsList[str]['lab-approved']Defaults from dataclass fields.smolotchi/core/config.py
policy.allowed_toolsList[str]['nmap', 'ip', 'arp', 'ping']Defaults from dataclass fields.smolotchi/core/config.py
policy.autonomous_categoriesList[str]['network_scan', 'vuln_assess']Defaults from dataclass fields.smolotchi/core/config.py
policy.block_categoriesList[str]['system_attack', 'file_steal']Defaults from dataclass fields.smolotchi/core/config.py
policy.enable_masscanboolFalseDefaults from dataclass fields.smolotchi/core/config.py
report_diff.baseline_host_summary_idstr""Defaults from dataclass fields.smolotchi/core/config.py
report_diff.compare_window_secondsint86400Defaults from dataclass fields.smolotchi/core/config.py
report_diff.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
report_diff.max_hostsint50Defaults from dataclass fields.smolotchi/core/config.py
report_findings.allowlistList[str][]Defaults from dataclass fields.smolotchi/core/config.py
report_findings.deny_containsList[str][]Defaults from dataclass fields.smolotchi/core/config.py
report_findings.denylistList[str][]Defaults from dataclass fields.smolotchi/core/config.py
report_findings.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
report_findings.max_findings_per_hostint12Defaults from dataclass fields.smolotchi/core/config.py
report_findings.max_output_charsint600Defaults from dataclass fields.smolotchi/core/config.py
report_findings.max_output_linesint6Defaults from dataclass fields.smolotchi/core/config.py
report_normalize.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
report_normalize.force_severityDict[str, str]{}Defaults from dataclass fields.smolotchi/core/config.py
report_normalize.force_tagDict[str, str]{}Defaults from dataclass fields.smolotchi/core/config.py
reports.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
reports.templates_dirstrsmolotchi/api/templates/reportsDefaults from dataclass fields.smolotchi/core/config.py
retention.artifact_kinds_keep_lastList[str]['lan_result']Defaults from dataclass fields.smolotchi/core/config.py
retention.artifacts_keep_lastint500Defaults from dataclass fields.smolotchi/core/config.py
retention.artifacts_older_than_daysint30Defaults from dataclass fields.smolotchi/core/config.py
retention.events_keep_lastint5000Defaults from dataclass fields.smolotchi/core/config.py
retention.events_older_than_daysint30Defaults from dataclass fields.smolotchi/core/config.py
retention.jobs_done_failed_older_than_daysint14Defaults from dataclass fields.smolotchi/core/config.py
retention.jobs_keep_lastint1000Defaults from dataclass fields.smolotchi/core/config.py
retention.vacuum_after_pruneboolFalseDefaults from dataclass fields.smolotchi/core/config.py
theme.json_pathstrtheme.jsonDefaults from dataclass fields.smolotchi/core/config.py
ui.hoststr0.0.0.0Defaults from dataclass fields.smolotchi/core/config.py
ui.portint8080Defaults from dataclass fields.smolotchi/core/config.py
watchdog.actionstrresetDefaults from dataclass fields.smolotchi/core/config.py
watchdog.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
watchdog.interval_secint30Defaults from dataclass fields.smolotchi/core/config.py
watchdog.max_resetsint2Defaults from dataclass fields.smolotchi/core/config.py
watchdog.min_runtime_secint60Defaults from dataclass fields.smolotchi/core/config.py
watchdog.stuck_after_secint300Defaults from dataclass fields.smolotchi/core/config.py
wifi.allow_ssidsList[str][]Defaults from dataclass fields.smolotchi/core/config.py
wifi.apply_profile_on_connectboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.auto_connectboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.auto_disconnect_on_brokenboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.auto_reconnect_on_brokenboolFalseDefaults from dataclass fields.smolotchi/core/config.py
wifi.credentialsDict[str, str]{}Defaults from dataclass fields.smolotchi/core/config.py
wifi.disconnect_after_lanboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.health_enabledboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.health_interval_secint20Defaults from dataclass fields.smolotchi/core/config.py
wifi.health_ping_gatewayboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.health_ping_targetstr""Defaults from dataclass fields.smolotchi/core/config.py
wifi.ifacestrwlan0Defaults from dataclass fields.smolotchi/core/config.py
wifi.lock_during_lanboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.preferred_ssidstr""Defaults from dataclass fields.smolotchi/core/config.py
wifi.profilesDict[str, Dict[str, Any]]{}Defaults from dataclass fields.smolotchi/core/config.py
wifi.reconnect_on_failureboolFalseDefaults from dataclass fields.smolotchi/core/config.py
wifi.safe_modeboolTrueDefaults from dataclass fields.smolotchi/core/config.py
wifi.scan_interval_secint30Defaults from dataclass fields.smolotchi/core/config.py
wifi.scope_mapDict[str, str]{}Defaults from dataclass fields.smolotchi/core/config.py