Skip to main content

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.

BranchGatewayWorkerWhat it does
ChatCopilot—The screens people use (Ask · Suggest · Automate) · agent loop · tool calls · SSE streaming
Time seriesInsight APIInference serverAnomaly detection · forecasting (TSPulse · TTM)
Document searchRAG APILightRAGIndexing · hybrid search
Document understandingDocument Understanding APIdoclingPDFs, tables, and formulas into markdown
VisionVision APILLM engine (direct to vLLM) · doclingGauge reading · defect inspection · OCR
ModelsLiteLLMvLLM · embedding · rerankerThe model front door for chat, the admin console, and external calls
Digital threadDigital Thread APIDedicated Neo4jConnector registry for external systems (MES · SCM · ERP · PLM · QM) · factory graph mirror · equipment timeline
The digital thread does not use the GPU

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 decides nothing

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 callWhere it goesActual model
aura-liteIn-house LLM engineAura (default Aura-Lite-NVFP4) — text and image
aura-visionSame engine — vision aliasSame model as above
aura-embedding-4bEmbedding engineAura-Embedding-4B
aura-reranker-0.6bReranker engineAura-Reranker-0.6B
The old names gpt-4o · text-embedding-3-large are gone

They 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.

Not every call passes through the gateway

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.

StoreWhose it isWhat goes in
PostgreSQLShared with the platformSettings · chat history · document index state · connector registry (schemas co · dt etc. in DB pi)
Aster TSDBShared with the platformTime series sensor values · inference history
RedisShared with the platformCache · sessions
RustFSShared with the platformDocuments · images
QdrantAI-onlyDocument embeddings (vectors)
Neo4jAI-onlyDocument knowledge graph
Neo4j (digital thread only)AI-onlyFactory graph mirror — references only, rebuildable from the sources
Neo4j here is a «document graph», not an ontology

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.

If the platform stops, the AI stops

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​

ComponentWhat it does
PhoenixTraces which tools, in what order a single agent turn called
DCGMGPU utilization, temperature, and memory metrics
Internal registryServes images internally on an air-gapped network

→ Monitoring · Air-gapped Installation