Environment Variable Configuration
PlantPulse AI configuration starts from a single /etc/kopens/plantpulse-ai.env file.
sudo vi /etc/kopens/plantpulse-ai.env
/etc/kopens/The path is /etc/kopens/plantpulse-ai.env. It is not inside the installation directory
(/opt/kopens/plantpulse-ai-docker) but outside the repo tree, with permissions 0600.
All three products — platform · ai · studio — use /etc/kopens/plantpulse-<product>.env under the same convention.
compose/.env is the old path. Nothing reads it any more, so editing it will not change the
stack. Even if the old file is still present, after migration it serves only for comparison.
For *_PASSWORD · *_API_KEY in the table below, editing the file alone does not complete the change. For values whose
authoritative source is the server account — such as Neo4j — the server side must be changed as well, and getting the order
wrong leaves authentication broken. Use the dedicated tool — Changing Passwords and API Keys.
After changing a value, the service must be recreated (docker restart does not re-read the env).
cd /opt/kopens/plantpulse-ai-docker
bin/restart.sh
PlantPulse IIoT Server Connection
Information about the PlantPulse IIoT platform server that PlantPulse AI integrates with.
| Variable | Description | Default |
|---|---|---|
PP_SERVER_HOST | PlantPulse IIoT server IP | 100.68.69.41 |
PP_SERVER_PORT | Server port | 7443 |
PP_SERVER_SSL | Whether SSL is used | true |
PP_SERVER_USERNAME | API authentication user | api |
PP_SERVER_PASSWORD | API authentication password | api123! |
System Paths
| Variable | Description | Default |
|---|---|---|
PP_MODE | Operating mode | MASTER |
PP_HOME | Home directory | /home/kopens |
PP_DATA_DIR | Data storage path | /data1/pp-data |
PP_TEMP_DIR | Temporary file path | /data1/pp-temp |
JAVA_HOME | JDK path | $PP_HOME/tools/java/jdk-21 |
AI Inference Server
All AI services access the LLM through the LiteLLM proxy.
| Variable | Description | Default |
|---|---|---|
PI_INFERENCE_SERVER_BASE_URL | LLM API endpoint | http://127.0.0.1:4000/v1 |
PI_INFERENCE_SERVER_API_KEY | API key | change-at-install |
Unified MCP (Platform)
MCP and ontology tools are provided by the PlantPulse Platform server-web unified MCP (/api/v5/mcp). Connection information is managed in web/config/application.properties of AI Chat Web.
| Item | Description |
|---|---|
mcp.api.url | Unified MCP base URL (Platform server-web) |
mcp.api.token | api_key authentication token |
mcp.tools.enabled | Whether unified MCP tools are used |
With the 2026-07 revision, Langflow has been removed. Chat and agent orchestration are handled by the agent built into AI Chat Web, and the LLM is reached via the LiteLLM (inference server) described above.
RAG (LightRAG)
The RAG engine is the LightRAG 1.5.4 server. The items below are the LLM, embedding, and retrieval settings used by LightRAG, and are managed in the deployment environment (compose/env).
LLM Settings
| Variable | Description | Default |
|---|---|---|
LLM_MODEL | LLM model in use | gpt-4o |
VISION_MODEL | Vision model | gpt-4o |
LLM_TEMPERATURE | Generation temperature | 0.7 |
LLM_TOP_P | Top-P sampling | 0.8 |
LLM_TIMEOUT | LLM timeout (seconds) | 600 |
Embedding Settings
| Variable | Description | Default |
|---|---|---|
EMBED_MODEL | Embedding model | text-embedding-3-large |
EMBED_DIM | Embedding dimensions | 2560 |
EMBED_MAX_TOKENS | Maximum tokens | 8192 |
Reranker Settings
| Variable | Description | Default |
|---|---|---|
ENABLE_RERANKER | Reranker enabled | true |
RERANK_MODEL | Rerank model | rerank-multilingual-v3.0 |
TOP_K | Number of final results returned | 5 |
RERANK_TOP_K | Number of rerank candidates | 10 |
Retrieval Settings
| Variable | Description | Default |
|---|---|---|
RAG_CONTEXT_MODE | Context mode | chunk |
RAG_MAX_CONTEXT_TOKENS | Maximum context tokens | 3200 |
RAG_CONTEXT_FILTER_TYPES | Filter types | text,image,table |
ENABLE_MULTIMODAL | Multimodal enabled | true |
DOC_PARSER | Document parser | docling |
Chunking Settings
| Variable | Description | Default |
|---|---|---|
CHUNK_SIZE | Chunk size | 512 |
CHUNK_OVERLAP_SIZE | Chunk overlap | 50 |
Databases
PostgreSQL
| Variable | Description | Default |
|---|---|---|
POSTGRES_HOST | Host | 127.0.0.1 |
POSTGRES_PORT | Port | 5432 |
POSTGRES_MAX_CONNECTIONS | Maximum connections | 12 |
Cassandra
| Variable | Description | Default |
|---|---|---|
TS_CASS_HOST | Cassandra host | 192.168.0.41 |
TS_CASS_USER | User | cassandra |
Qdrant
| Variable | Description | Default |
|---|---|---|
QDRANT_URL | Qdrant URL | http://127.0.0.1:6333 |
QDRANT_API_KEY | API key | qdrant-key-123 |
QDRANT_DISTANCE | Distance metric | Cosine |
Neo4j
| Variable | Description | Default |
|---|---|---|
NEO4J_URI | Neo4j URI | bolt://127.0.0.1:7687 |
NEO4J_USERNAME | User | neo4j |
NEO4J_PASSWORD | Password | neo4j123 |
Valkey (Redis)
| Variable | Description | Default |
|---|---|---|
REDIS_URI | Redis URI | redis://:redis123@127.0.0.1:6379/0 |
MinIO
| Variable | Description | Default |
|---|---|---|
MINIO_ROOT_USER | Administrator ID | minio |
MINIO_ROOT_PASSWORD | Administrator password | minio123! |
TimeSeries
| Variable | Description | Default |
|---|---|---|
TS_CASS_HOST | Cassandra host | 192.168.0.41 |
TS_PG_HOST | PostgreSQL host | 100.68.69.41 |
TS_PG_DB | Database | pp |
TS_EMBED_URL | Embedding API URL | http://127.0.0.1:4000/v1/embeddings |
TS_EMBED_MODEL | Embedding model | text-embedding-3-large |
TS_EMBED_DIM | Embedding dimensions | 2560 |
Ontology (Migrated to Unified MCP)
The ontology has been separated from its standalone service (formerly plantpulse-ontology) and absorbed into the platform unified MCP (server-web /api/v5/mcp). Since the DB↔Neo4j synchronization settings are managed in the platform server-web, the AI stack env.sh no longer contains ontology-specific variables. Neo4j continues to be used as the LightRAG graph store (see NEO4J_* above).
CUDA (GPU)
When using a GPU, uncomment and configure the following:
export CUDA_VISIBLE_DEVICES="0,1,2,3"
export CUDA_MANAGED_FORCE_DEVICE_ALLOC="1"
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True,max_split_size_mb:128
In environments without a GPU, the system automatically falls back to CPU mode. For the TimeSeries service, a CPU-only build is also possible with Dockerfile.cpu.