Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Environment Variables

NabaOS reads all configuration from environment variables. No configuration file is required – sensible defaults are provided for every optional variable.

Required

VariableTypeDefaultDescriptionExample
NABA_LLM_API_KEYstring(none)API key for the primary LLM provider. Required for any operation that routes to an LLM (ask, start).sk-ant-api03-...

LLM & Routing

VariableTypeDefaultDescriptionExample
NABA_LLM_PROVIDERstringanthropicPrimary LLM provider. Options: anthropic, openai, gemini.openai
NABA_CHEAP_LLM_PROVIDERstring(same as primary)Provider for cheap model (Tier 3).anthropic
NABA_CHEAP_LLM_MODELstring(provider default)Cheap model name for Tier 3 routing.claude-haiku-4-5
NABA_EXPENSIVE_LLM_MODELstring(provider default)Expensive model name for Tier 4 routing.claude-opus-4-6
NABA_DAILY_BUDGET_USDfloat10.0Maximum daily LLM spend in USD. The cost tracker enforces this limit.25.0
NABA_PER_TASK_BUDGET_USDfloat(none)Maximum spend per individual task in USD.2.0

Paths & Storage

VariableTypeDefaultDescriptionExample
NABA_DATA_DIRpath~/.nabaosRoot directory for all persistent data: databases, plugins, agents, profiles./opt/nabaos/data
NABA_MODEL_PATHpathmodels/setfit-w5h2Directory containing the ONNX model files (model.onnx, tokenizer, etc.)./opt/nabaos/models/setfit-w5h2
NABA_PLUGIN_DIRpath$NABA_DATA_DIR/pluginsDirectory where installed plugins are stored./opt/nabaos/plugins
NABA_SUBPROCESS_CONFIGpath(none)Path to a YAML file defining subprocess abilities. Loaded at startup../config/subprocess.yaml

Constitution

VariableTypeDefaultDescriptionExample
NABA_CONSTITUTION_PATHpath(none)Path to a custom constitution YAML file. If not set, the built-in default constitution is used (default_enforcement: allow)../my-constitution.yaml
NABA_CONSTITUTION_TEMPLATEstring(none)Named template to use instead of a file. Options: default, content-creator, dev-assistant, full-autonomy, home-assistant, hr-assistant, research-assistant, trading.trading

Telegram

VariableTypeDefaultDescriptionExample
NABA_TELEGRAM_BOT_TOKENstring(none)Telegram Bot API token. Required to start the Telegram bot.7123456789:AAF...
NABA_SECURITY_BOT_TOKENstring(none)Separate Telegram bot token for security alerts.7987654321:AAG...
NABA_ALERT_CHAT_IDstring(none)Telegram chat ID where security alerts are sent.-1001234567890
NABA_ALLOWED_CHAT_IDSstring(none)Comma-separated list of Telegram chat IDs allowed to interact with the bot. If not set, messages from unknown chat IDs are silently ignored.12345678,87654321

Two-Factor Authentication

VariableTypeDefaultDescriptionExample
NABA_TELEGRAM_2FAstring(none)2FA method for Telegram bot. Options: totp, password.totp
NABA_TOTP_SECRETstring(none)Base32-encoded TOTP secret. Generated by nabaos config security 2fa totp.JBSWY3DPEHPK3PXP
NABA_2FA_PASSWORD_HASHstring(none)Argon2 hash of the 2FA password. Generated by nabaos config security 2fa password.$argon2id$v=19$m=19456...

Discord

VariableTypeDefaultDescriptionExample
NABA_DISCORD_BOT_TOKENstring(none)Discord bot token from the Developer Portal. Enables outbound-only Discord integration.MTIzNDU2Nzg5MDEy.GAbcDE...

Slack

VariableTypeDefaultDescriptionExample
NABA_SLACK_BOT_TOKENstring(none)Slack bot token.xoxb-...
NABA_SLACK_CHANNELstring(none)Default Slack channel for notifications.#alerts

WhatsApp

VariableTypeDefaultDescriptionExample
NABA_WHATSAPP_TOKENstring(none)WhatsApp Business API token.EAAx...

Email

VariableTypeDefaultDescriptionExample
NABA_EMAIL_SMTP_HOSTstring(none)SMTP server host for outbound email.smtp.gmail.com
NABA_EMAIL_SMTP_PORTinteger587SMTP server port.465
NABA_EMAIL_USERNAMEstring(none)SMTP username.agent@example.com
NABA_EMAIL_PASSWORDstring(none)SMTP password.app-password

Web Dashboard

VariableTypeDefaultDescriptionExample
NABA_WEB_PASSWORDstring(none)Password for web dashboard authentication. If not set, the web dashboard is disabled.my-secure-password
NABA_WEB_BINDstring127.0.0.1:8919Bind address for the web dashboard server.0.0.0.0:9000
NABA_WEB_SESSION_TTLinteger86400Web session time-to-live in seconds (default: 24 hours).3600

Vault

VariableTypeDefaultDescriptionExample
NABA_VAULT_PASSPHRASEstring(none)Passphrase for the encrypted secret vault. If not set, the CLI prompts interactively.my-vault-passphrase

Media & Voice

VariableTypeDefaultDescriptionExample
NABA_VOICE_MODEstring(none)Enable voice input mode.whisper
NABA_MEDIA_DIRpath$NABA_DATA_DIR/mediaDirectory for media file storage./opt/nabaos/media

Security

VariableTypeDefaultDescriptionExample
NABA_CONTAINER_POOL_SIZEinteger3Number of pre-warmed containers.5
NABA_ENCRYPTION_KEY_FILEpath(none)Path to LUKS key file./etc/nabaos/key

Integrations

VariableTypeDefaultDescriptionExample
NABA_GOOGLE_CLIENT_IDstring(none)Google OAuth client ID.123456.apps.googleusercontent.com
NABA_GOOGLE_CLIENT_SECRETstring(none)Google OAuth client secret.GOCSPX-...
NABA_NOTION_TOKENstring(none)Notion integration token.ntn_...

Logging

VariableTypeDefaultDescriptionExample
RUST_LOGstringinfoStandard Rust logging filter. Uses tracing_subscriber::EnvFilter syntax. Supports module-level filters.nabaos=debug,tower_http=info

Precedence

Environment variables take precedence over built-in defaults. CLI flags (--data-dir, --model-dir) take precedence over environment variables.

Minimal Setup

The smallest viable configuration for local classification (no LLM calls):

# No env vars needed -- defaults are sufficient
nabaos admin classify "check my email"

For the full pipeline with LLM routing:

export NABA_LLM_API_KEY="sk-ant-api03-..."
nabaos ask "summarize today's news"

For production server mode:

export NABA_LLM_API_KEY="sk-ant-api03-..."
export NABA_TELEGRAM_BOT_TOKEN="7123456789:AAF..."
export NABA_WEB_PASSWORD="secure-dashboard-pw"
export NABA_VAULT_PASSPHRASE="vault-pw"
export NABA_CONSTITUTION_PATH="./constitution.yaml"
export NABA_DAILY_BUDGET_USD="15.0"
nabaos start