Skip to content

Environment variables

All configuration lives in .env (copied from .env.example via make setup). Every Docker service and host process reads from this file.

Required (set before make up)

VariablePurpose
NEXUS_WORKSPACE_ROOTAbsolute path to the parent dir of project workspaces. Composer fails fast if unset.
ROCKETCHAT_ADMIN_PASSWORDRC admin login. Replace the dev default.
POSTGRES_PASSWORDPostgres superuser. Replace the dev default.
DATABASE_URLFull connection URL — must include the password above.
NEXUS_WEBHOOK_TOKENRC → gateway webhook auth. Replace before any non-LAN deploy.
NEXUS_PUBLIC_URLExternally-reachable origin. Used to build join URLs (<NEXUS_PUBLIC_URL>/join/<code>) issued by make create-bridge / make issue-join-link. Defaults to http://localhost:4000; set to your real LAN IP / domain before sharing any URL.
NEXUS_JOIN_TTL_HOURSDefault lifetime (in hours) of a one-shot join code. Default 24. Lower = less leak window; higher = more flexibility.

Rocket.Chat

VariableDefaultPurpose
ROCKETCHAT_URLhttp://localhost:3000Public URL of the chat instance
ROCKETCHAT_ADMIN_USERNAMEadminAdmin login
ROCKETCHAT_ADMIN_PASSWORDnexus_admin_devAdmin password
ROCKETCHAT_ADMIN_EMAILadmin@nexus.localAdmin email (verification stub)

Postgres + pgvector

VariableDefault
POSTGRES_HOSTlocalhost
POSTGRES_PORT5433
POSTGRES_USERnexus
POSTGRES_PASSWORDnexus_dev_pass
POSTGRES_DBnexus
DATABASE_URLpostgresql://nexus:nexus_dev_pass@localhost:5433/nexus

Redis

VariableDefault
REDIS_HOSTlocalhost
REDIS_PORT6380
REDIS_URLredis://localhost:6380

Nexus services (host)

VariableDefaultPurpose
GATEWAY_PORT4000gateway listens here
COMPOSER_PORT4001composer health/admin endpoints
RUNTIME_PORT4002runtime health endpoint
MEM0_API_URLhttp://localhost:4100composer talks to mem0 here

Mem0 (memory layer)

Mem0 needs an LLM for fact extraction + summarization. Use any OpenAI-compatible endpoint.

VariableDefault
MEM0_LLM_PROVIDERopenai
MEM0_LLM_MODELgpt-4o-mini
MEM0_LLM_BASE_URLhttps://api.openai.com/v1
MEM0_LLM_API_KEYsk-replace-meset this
MEM0_EMBEDDER_PROVIDERhuggingface (local)
MEM0_EMBEDDER_MODELsentence-transformers/all-MiniLM-L6-v2
MEM0_EMBEDDING_DIMS384

For a self-hosted vLLM:

bash
MEM0_LLM_BASE_URL=http://localhost:8000/v1
MEM0_LLM_MODEL=<your-model-id>
MEM0_LLM_API_KEY=any-string-vllm-ignores-it

CLI binaries

The runtime resolves each CLI by $PATH by default. Override only when the binary lives somewhere unusual.

VariableDefaultUsed by
CLAUDE_BINclaude (via PATH)runtime/adapters/claude.ts
HERMES_BINhermes (via PATH)runtime/adapters/hermes.ts
CURSOR_BINagent (via PATH)runtime/adapters/cursor.ts
GEMINI_BINgemini (via PATH)runtime/adapters/gemini.ts
GEMINI_MODELgemini-2.5-flashruntime/adapters/gemini.ts

Compaction tuning (composer)

VariableDefaultPurpose
NEXUS_TRANSCRIPT_WINDOW20Raw messages kept verbatim per invocation
NEXUS_OLDER_WINDOW100Older messages summarized behind the window
NEXUS_LANDMARK_WINDOW10Landmark candidates scanned in visible range

Bot-to-bot

VariableDefaultPurpose
NEXUS_MAX_HOP2Max bot-to-bot mention dispatches per chain

Logging

VariableDefaultNotes
LOG_LEVELinfotrace/debug/info/warn/error
NODE_ENVdevelopmentEnables pino-pretty in dev

Optional fallback keys

If you want to use a real provider directly (without the Mem0 layer proxying):

VariableNotes
ANTHROPIC_API_KEYUnused if MEM0_LLM_* is set
OPENAI_API_KEYUnused if MEM0_LLM_* is set

Released under the MIT License.