Skip to main content

Environment variables

Canonical index of every environment variable the Hologram generic AI agent container recognises. Anything declared in the agent pack can also be driven from an env variable — useful for deployment-time overrides that shouldn't live in source-controlled YAML.

tip

These are the variables consumed by the chatbot process. The VS Agent is a separate container with its own variables (AGENT_PUBLIC_DID, AGENT_LABEL, AGENT_INVITATION_IMAGE_URL, USE_CORS, EVENTS_BASE_URL, wallet keys, …). See the VS Agent README upstream for those.

Application

VariableDescriptionDefault
APP_PORTApplication port3000
LOG_LEVELLog level (1=error, 2=warn, 3=info, 4=debug)3
AGENT_PACK_PATHPath to agent pack directory./agent-packs/hologram-welcome

LLM

VariableDescriptionDefault
LLM_PROVIDERLLM backend: openai, ollama, anthropicollama
OPENAI_API_KEYOpenAI (or compat-provider) API key
OPENAI_MODELOpenAI modelgpt-4o-mini
OPENAI_TEMPERATURETemperature (0–1)0.3
OPENAI_MAX_TOKENSMax tokens per completion512
OPENAI_BASE_URLBase URL for OpenAI-compatible APIs (Kimi, DeepSeek, Groq, Together AI, …)
OLLAMA_ENDPOINTOllama endpointhttp://ollama:11434
OLLAMA_MODELOllama modelllama3
ANTHROPIC_API_KEYAnthropic API key
AGENT_PROMPTOverride llm.agentPrompt at runtime

See LLM providers for how to combine these for each backend.

RAG

VariableDescriptionDefault
RAG_PROVIDERRAG backend: vectorstore or langchainvectorstore
RAG_DOCS_PATHRAG documents directory/app/rag/docs
RAG_CHUNK_SIZEMax chars per chunk1000
RAG_CHUNK_OVERLAPOverlap between chunks200
RAG_REMOTE_URLSRemote document URLs (CSV or JSON array)
VECTOR_STOREVector store: pinecone or redisredis
VECTOR_INDEX_NAMEVector index namehologram-ia
PINECONE_API_KEYPinecone API key
REDIS_URLRedis connection URLredis://localhost:6379

Memory

VariableDescriptionDefault
AGENT_MEMORY_BACKENDMemory backend: memory or redisredis
AGENT_MEMORY_WINDOWChat memory window size (turns)8

PostgreSQL (sessions + MCP user config)

VariableDescriptionDefault
POSTGRES_HOSTPostgreSQL hostpostgres
POSTGRES_USERPostgreSQL user2060demo
POSTGRES_PASSWORDPostgreSQL password2060demo
POSTGRES_DB_NAMEPostgreSQL database nametest-service-agent

Authentication & RBAC

VariableDescriptionDefault
CREDENTIAL_DEFINITION_IDVC definition ID for authentication (omit to hide auth menu)
AUTH_REQUIREDRequire auth before chat (blocks guests)false
USER_IDENTITY_ATTRIBUTECredential attribute for user identityname
ROLES_ATTRIBUTECredential attribute containing user roles
DEFAULT_ROLEFallback role when credential lacks rolesuser
ADMIN_USERSComma-separated list of admin user identities
ADMIN_AVATARS(Legacy) Comma-separated admin avatar names

Integrations

VariableDescriptionDefault
VS_AGENT_ADMIN_URLVS Agent admin API URL
LLM_TOOLS_CONFIGExternal HTTP tools (JSON array)[]
STATISTICS_API_URLStatistics API URL
STATISTICS_REQUIRE_AUTHRequire auth for statisticsfalse

MCP

VariableDescriptionDefault
MCP_CONFIG_ENCRYPTION_KEYAES-256-GCM key for per-user MCP config (64 hex chars — openssl rand -hex 32)
MCP_SERVERS_CONFIGJSON array string that overrides mcp.servers from the pack

Plus any ${VAR} that your mcp.servers[*].url or mcp.servers[*].headers references (e.g. GITHUB_MCP_URL, WISE_MCP_URL, WISE_API_TOKEN). Convention: one env var per MCP server URL, one per shared admin token.

Rotation semantics

MCP_CONFIG_ENCRYPTION_KEY is effectively a one-way trapdoor. If you rotate it, all stored per-user MCP configs become unreadable and every user must reconfigure. There is currently no re-encrypt migration path. Keep the key stable; store it in a Kubernetes Secret or your secrets manager.

Where these are typically set

EnvironmentHow
Local devconfig.env in your agent repo, sourced before ./scripts/setup.sh
Docker ComposePassed as environment: entries in docker-compose.yml
Kuberneteschatbot.extraEnv[] in the Helm values, plus chatbot.secret.* for sensitive values injected via --set chatbot.secret.X=<value> at helm upgrade time