Skip to Content
Getting StartedConfiguration

Configuration

All configuration is managed via environment variables in .env. Copy .env.example to .env and fill in values.

All values are read through src/core/config.py (pydantic-settings). Never read os.environ directly in business logic — add a field to Settings instead.

Required variables

VariableDescription
SECRET_KEYJWT signing secret — minimum 32 characters in production
ENCRYPTION_KEYFernet key for credential and TOTP secret encryption
POSTGRES_PASSWORDPostgreSQL database password
REDIS_PASSWORDRedis password

Generate a Fernet key:

python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Auth & security

VariableDefaultDescription
SECRET_KEYJWT signing (≥32 chars in prod)
ENCRYPTION_KEYFernet key for secrets at rest
REQUIRE_INVITEfalsetrue = invite-only registration
ENVIRONMENTproductiondevelopment or production
CORS_ORIGINSComma-separated allowed origins

Production mode rejects startup if SECRET_KEY is weak or uses the default placeholder.

Database

VariableDefaultDescription
POSTGRES_HOSTpostgresDB hostname (Docker service name)
POSTGRES_PORT5432DB port
POSTGRES_DBnexoraDatabase name
POSTGRES_USERnexoraDatabase user
POSTGRES_PASSWORDDatabase password (required)

Redis

VariableDefaultDescription
REDIS_HOSTredisRedis hostname
REDIS_PORT6379Redis port
REDIS_PASSWORDRedis password (required)

LLM providers

Providers are configured per-organization in the UI (Settings → Providers). API keys are stored encrypted in the database using the ENCRYPTION_KEY.

The provider chain is tried in order — first healthy provider handles the request.

Integrations

Telegram

VariableDescription
TELEGRAM_BOT_TOKENBot token from @BotFather

GitHub App

VariableDescription
GITHUB_APP_IDGitHub App ID
GITHUB_APP_PRIVATE_KEYPEM private key (base64 or raw)
GITHUB_APP_WEBHOOK_SECRETWebhook signing secret

GitLab OAuth

VariableDescription
GITLAB_APP_IDGitLab OAuth application ID
GITLAB_APP_SECRETGitLab OAuth secret
GITLAB_REDIRECT_URIOAuth callback URL

Agent concurrency

VariableDefaultDescription
MAX_CONCURRENT_AGENTS2Max parallel sub-agents per worker
MAX_CONCURRENT_AGENTS_PER_ORG4Max parallel sub-agents per org (Redis-coordinated)
TASKS_PER_BATCH2Tasks dispatched per batch

NexoraCloud billing (optional)

Set when deploying NexoraCloud (not needed for plain Nexora):

VariableDescription
BILLING_WORKER_URLURL of the billing worker (port 8001)
NEXORA_LICENSE_KEYInline JWT license (or use NEXORA_LICENSE_KEY_PATH)
NEXORA_LICENSE_KEY_PATHPath to license.key file
NEXORA_LICENSE_PUBLIC_KEY_PATHPath to license_public.pem
NEXORA_ADMIN_URLhttps://nexora-gw.parendum.com

Networking

VariableDefaultDescription
HTTP_PORT80nginx external port