Architecture
This page explains what PlantPulse AI is made of and why it is divided that way. For the port list see Service Port Map; for installation procedures see Installation.
The structure at a glance
브라우저 (HTTPS · SSE)
│
┌──────────▼──────────┐
│ plantpulse-proxy │ ← 사용자 접점 (80 · 443, 콘솔 HTTPS 5960)
│ Host 로 뒷단을 고른다 │
└───┬──────────────┬──┘
admin.* · 5960│ │그 외
(평문 5959 는 직결) ▼ ▼
┌──────────────┐ ┌──────────────────────────────────┐
│ 관리 콘솔 │ │ 코파일럿 (묻기·제안·자동화) │
│ admin-web │ │ 에이전트 루프 · 도구 호출 │
│ + admin-api │ └───┬────┬────┬────┬────┬───────┬──┘
└──────────────┘ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
시계열 RAG 문서 비전 디지털 모델
인사이트 이해 스레드 게이트웨이
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
추론 LightRAG docling 전용 vLLM
서버 +Qdrant Neo4j 임베딩·리랭커
+Neo4j
The proxy is where users arrive. The copilot (Ask · Suggest · Automate), the admin console, and every API sit behind it — so that firewalling, TLS, and auditing are concentrated in one place. The exception is the admin console's plaintext entry point (5959), which reaches the console container directly for operators connecting by IP from the internal network → Service Port Map
Seven branches
Each branch pairs a gateway (API) with a heavy worker. The gateway is lightweight and holds policy; the worker uses the GPU. Thanks to this split, moving a worker to another machine or scaling it out does not change the gateway's address.
| Branch | Gateway | Worker | What it does |
|---|---|---|---|
| Chat | Copilot | — | The screens people use (Ask · Suggest · Automate) · agent loop · tool calls · SSE streaming |
| Time series | Insight API | Inference server | Anomaly detection · forecasting (TSPulse · TTM) |
| Document search | RAG API | LightRAG | Indexing · hybrid search |
| Document understanding | Document Understanding API | docling | PDFs, tables, and formulas into markdown |
| Vision | Vision API | LLM engine (direct to vLLM) · docling | Gauge reading · defect inspection · OCR |
| Models | LiteLLM | vLLM · embedding · reranker | The model front door for chat, the admin console, and external calls |
| Digital thread | Digital Thread API | Dedicated Neo4j | Connector registry for external systems (MES · SCM · ERP · PLM · QM) · factory graph mirror · equipment timeline |
This branch became part of the stack by default in 2026.10. It gathers references only — the
platform's equipment and tag ledger and its events, plus the work orders, parts, and people exposed by
external systems — and links them into a single graph (a mirror). Operators attach connectors from the
Digital Thread rail in the admin console, and Ask and Automate read equipment timelines and
connections through the thread_ tools — there is no dedicated screen in the copilot, only added
capability →
Digital Thread
The admin console's screens (admin-web) are static files; login decisions and status aggregation are
handled by the admin-api behind them. In other words, there is only one source of truth for
authentication.
How a single query is processed
「3라인 압축기 요즘 어때?」
│
① 이름을 ID 로 바꾼다 search_domains (플랫폼 통합 MCP)
② 무엇을 볼지 고른다 — 에이전트가 도구를 고른다
③ 데이터를 가져온다 insight_analyze_asset · get_tag_history …
④ 필요하면 문서·사진을 더 본다 rag_search · vision_inspect
⑤ 모아서 답을 만든다 LiteLLM ─▶ Aura
│
└─▶ SSE 로 한 글자씩 화면에 흘린다
Steps ②–④ do not happen just once. The agent repeatedly inspects a tool's result and picks the next tool — that is the answer to "why is the response slow," and also to "why must the tools be turned on."
🔴 A disabled tool is invisible to the agent. For which tools are on from the start and which are off → MCP Tool Map
Models — there are four names to call
The model gateway (LiteLLM) exposes the in-house models through an OpenAI-compatible API. There are only four names to call.
| Name to call | Where it goes | Actual model |
|---|---|---|
aura-lite | In-house LLM engine | Aura (default Aura-Lite-NVFP4) — text and image |
aura-vision | Same engine — vision alias | Same model as above |
aura-embedding-4b | Embedding engine | Aura-Embedding-4B |
aura-reranker-0.6b | Reranker engine | Aura-Reranker-0.6B |
gpt-4o · text-embedding-3-large are goneThey used to be called by OpenAI-compatible aliases (gpt-4o · gpt-4o-mini · text-embedding-3-large ·
rerank-multilingual-v3.0). Those compatibility aliases no longer exist — calling an old name makes the
gateway reject the request with an error immediately. If any external integration script or
configuration still contains an old name, change it to a name from the table above.
aura-vision is not a «separate vision model»Aura itself reads images. aura-vision is an alias added by the gateway so that the caller can state
its intent in the name; whichever name you call, the same engine answers.
Chat (copilot) · the admin console · /llm/ called from outside go through the gateway.
LightRAG · the Vision API · the time series Insight API connect directly to vLLM. That is why
they use the name exposed by vLLM (aura-lite) rather than the gateway alias (aura-vision) — "vision
calls don't appear in the gateway log" is not a fault.
Aura is an in-house model built by further training an open-source foundation model on manufacturing and industrial data → Aura LLM · AI Models
Where the data lives
🔴 The AI stack does not stand up its own databases. Relational, time series, cache, and object storage are shared with the platform. All that remains AI-only are the graph and vector stores.
| Store | Whose it is | What goes in |
|---|---|---|
| PostgreSQL | Shared with the platform | Settings · chat history · document index state · connector registry (schemas co · dt etc. in DB pi) |
| Aster TSDB | Shared with the platform | Time series sensor values · inference history |
| Redis | Shared with the platform | Cache · sessions |
| RustFS | Shared with the platform | Documents · images |
| Qdrant | AI-only | Document embeddings (vectors) |
| Neo4j | AI-only | Document knowledge graph |
| Neo4j (digital thread only) | AI-only | Factory graph mirror — references only, rebuildable from the sources |
The equipment ontology belongs to the platform and is exposed through the integrated MCP. The Neo4j here is the graph used by document search — there used to be a separate ontology service, but it was merged into the platform. The digital thread's mirror is kept on a different instance so the two do not mix.
Sharing data means the platform is a dependency. The order of checks for "the AI cannot answer" is ① is the platform alive ② is the model (gateway · LLM engine) responding ③ are the tools enabled → Troubleshooting
The asset hierarchy follows the platform's
The data tools address their targets through an ISA-95 / OPC-UA based hierarchy.
Enterprise ─ Site ─ Area ─ Line ─ Equipment ─ Tag ─ Point
엔터프라이즈 사이트 구역 라인 설비 태그 시계열 값
Determining which node of this hierarchy a phrase like "the Line 3 compressor" refers to is the first step of a query. Photo and document tools operate independently of this hierarchy.
Observability and air-gapped networks
| Component | What it does |
|---|---|
| Phoenix | Traces which tools, in what order a single agent turn called |
| DCGM | GPU utilization, temperature, and memory metrics |
| Internal registry | Serves images internally on an air-gapped network |
→ Monitoring · Air-gapped Installation
Related documents
- Service Port Map — what is exposed where
- MCP Tool Map — the seven tool servers
- Digital Thread — connectors and the factory graph mirror
- Installation — the actual setup procedure