Configuration reference¶
Every setting is environment-variable driven. Copy .env.example to .env and fill in the values for your deployment.
App¶
| Variable | Default | Description |
|---|---|---|
NODE_ENV |
production |
development or production. |
APP_PORT |
3000 |
Host port the app binds to. |
AUTH_SECRET |
(required) | Auth.js JWT signing secret. Generate with openssl rand -base64 32. |
AUTH_URL |
http://localhost:3000 |
Public URL the app is served from. |
App database (Postgres)¶
The app's own state: users, sessions, conversation history (via LangGraph checkpoints), audit log.
| Variable | Default | Description |
|---|---|---|
APP_DB_URL |
(required) | Postgres connection string. |
POSTGRES_PASSWORD |
(required) | Used by the bundled Postgres container in docker-compose.yml. |
Lab database — InteLIS MySQL source¶
Read-only access
The credentials below must be granted SELECT only. The application enforces SELECT-only at the SQL-validation layer as defence in depth, but the MySQL user itself should be read-only.
By default, these variables point at an external InteLIS MySQL database. For a local/client install that should run MySQL in Docker, use docker-compose.local-lab.yml; it starts an intelis-mysql service, imports an approved dump from mysql-init/, creates a read-only user, and overrides LAB_DB_HOST to intelis-mysql.
| Variable | Default | Description |
|---|---|---|
LAB_DB_HOST |
(required) | InteLIS MySQL hostname or IP. Use intelis-mysql with the optional local MySQL override. |
LAB_DB_PORT |
3306 |
InteLIS MySQL port. |
LAB_DB_NAME |
(required) | Database name. |
LAB_DB_USER |
(required) | Read-only user. |
LAB_DB_PASSWORD |
(required) | Password. |
Optional local InteLIS MySQL container¶
These settings are used only when .env enables the local-lab Compose override:
Those .env lines make the normal command include the local MySQL override on macOS, Linux, and Windows:
| Variable | Default | Description |
|---|---|---|
LOCAL_LAB_MYSQL_ROOT_PASSWORD |
(required with local MySQL) | Root password for the optional local MySQL container. Set a strong value for any real client install. |
LOCAL_LAB_MYSQL_PORT |
3307 |
Loopback-only host port exposed for admin tools. App containers use the internal 3306 port. |
Put approved dump files in mysql-init/ before the first startup. The MySQL image imports *.sql, *.sql.gz, and executable *.sh files only when the MySQL volume is first initialized. Real lab dumps must stay out of git.
Vector database (Qdrant)¶
| Variable | Default | Description |
|---|---|---|
QDRANT_URL |
http://qdrant:6333 |
URL of the Qdrant server. |
QDRANT_API_KEY |
(empty) | Optional API key if Qdrant is secured. |
QDRANT_COLLECTION |
intelis_insights |
Collection name. |
LLM provider¶
Choose one provider with LLM_PROVIDER. Provide only the key for the chosen one.
| Variable | Description |
|---|---|
LLM_PROVIDER |
openai | anthropic | google | mistral | deepseek | groq | openai_compatible | ollama |
LLM_MODEL |
Model for SQL generation. Defaults to a reasonable per-provider choice; override to suit cost/quality preference. |
LLM_MODEL_INTENT |
Smaller/faster model for intent classification. |
OPENAI_API_KEY |
OpenAI key. |
ANTHROPIC_API_KEY |
Anthropic key. |
GOOGLE_GENERATIVE_AI_API_KEY |
Google AI Studio / Vertex AI key. |
MISTRAL_API_KEY |
Mistral key. |
DEEPSEEK_API_KEY |
DeepSeek key. |
GROQ_API_KEY |
Groq key. |
OPENAI_COMPATIBLE_BASE_URL |
Endpoint URL for any OpenAI-compatible provider (Together, Fireworks, OpenRouter, vLLM, LiteLLM, …). |
OPENAI_COMPATIBLE_API_KEY |
Auth token for the OpenAI-compatible endpoint. |
OLLAMA_BASE_URL |
http://localhost:11434/v1 by default; in Docker offline mode this is auto-set to the bundled Ollama service. |
See LLM providers for selection guidance and the offline / cost-effective matrix.
Embeddings¶
| Variable | Description |
|---|---|
EMBEDDINGS_PROVIDER |
openai | mistral | openai_compatible | ollama |
EMBEDDINGS_MODEL |
Model name. Default: text-embedding-3-small (OpenAI). |
Re-ingest on switch
Switching embedding providers changes the vector dimension. The Qdrant collection is created at bootstrap with the configured embedder's dimension. To switch, drop the collection and re-run scripts/upsert-corpus.ts.
Observability (optional)¶
LangFuse traces every LLM call and graph node for audit and debugging. Use the bundled self-hosted profile, point at LangFuse Cloud, or leave disabled.
| Variable | Description |
|---|---|
LANGFUSE_PUBLIC_KEY |
LangFuse project public key. |
LANGFUSE_SECRET_KEY |
LangFuse project secret key. |
LANGFUSE_HOST |
Self-hosted LangFuse URL, or omit for cloud. |