config.ts module.
Environment variables
Configuration is read from.env file or process.env.
Name of the assistant. Used in trigger pattern and message routing.
Whether the assistant has its own WhatsApp number. Set to
"true" to enable.Docker image to use for agent containers.
Container timeout in milliseconds (default: 30 minutes).
Maximum container output size in bytes (default: 10MB).
How long to keep container alive after last result in milliseconds (default: 30 minutes).
Maximum number of concurrent agent containers.
Timezone for scheduled tasks (cron expressions). Uses
Intl.DateTimeFormat().resolvedOptions().timeZone by default.Configuration constants
Defined insrc/config.ts:
Directory paths
All paths are absolute and resolved from the project root:{PROJECT_ROOT}/store - Database and persistent storage{PROJECT_ROOT}/groups - Group folders and memory files{PROJECT_ROOT}/data - Legacy data directory (migrated to SQLite)~/.config/nanoclaw/mount-allowlist.json - Mount security allowlist (never mounted into containers)"main" - Folder name for the main groupTrigger pattern
The trigger pattern is generated fromASSISTANT_NAME:
@{ASSISTANT_NAME} (case-insensitive).
Timezone configuration
Scheduled tasks use the configured timezone:Example .env file
Security notes
- Secrets (API keys, credentials) are NOT read in
config.ts - Secrets stay on disk and are loaded only where needed (
container-runner.ts) - This prevents leaking secrets to child processes
- Mount allowlist is stored OUTSIDE project root and never mounted into containers