Skip to main content

Release Notes

2026.10 Re-release — 2026-10-20 · LLM model aura-lite · UI term «Incident» · MCP Gateway​

Breaking change — you must change the model value in external API calls

The LLM model name changes from aura-35b → aura-lite. No alias is kept for the old name, so calling aura-35b returns 404. External integrations that call the gateway (LiteLLM) directly must change "model": "aura-35b" in their requests to "aura-lite" → API Integration Guide

The manual documents aura-lite as of this release. Installations predating this release still use aura-35b.

LLM model — aura-35b → aura-lite​

  • Not just the name — the model itself changes: AURA-Lite (MoE · 256K context · image input supported) runs in place of AURA-35B.
  • The weights folder name also changes from Aura-35B-A3B-NVFP4 → Aura-Lite-NVFP4 (/opt/kopens/models/Aura-Lite-NVFP4, bundled model file Aura-Lite-NVFP4.tar.zst).
  • Installation and bin/update.sh newly download Aura-Lite-NVFP4.tar.zst (verified against SHA256SUMS; if it cannot be downloaded, they stop there).
  • On an air-gapped network, download with MODELS="Aura-Lite-NVFP4 …" on an internet-connected machine and carry it in — bundle burning does not download the model → Air-gapped Installation
  • vLLM moves up to v0.31.0, and the startup arguments (LLM_MODEL_ARGS) change to the parser matching the new model (gemma4).
  • The old Aura-35B-A3B-NVFP4 folder is no longer used — you may delete it after confirming the new release is up.
  • aura-vision · aura-embedding-4b · aura-reranker-0.6b are unchanged.
  • Copilot, admin console, document search, vision, and document understanding adopt the new name on their own after bin/update.sh — Copilot aligns the model name stored in the DB with the wiring at startup.

UI terminology change — Fault report → Incident​

  • «Fault report» becomes «Incident» in the Copilot UI (the English UI shows «Incident»). These cases are opened not only by faults but also by alarms and anomaly signals → Anomaly Detection · Incident Response
  • Names in code, API, config keys, and the DB (incident) are unchanged. Nothing needs fixing in integrations.
  • Wording that refers to actual faults (equipment fault, fault precursor, status FAULT) remains «fault».

Tool management — Copilot «Tool Servers (MCP)» → AI Admin Console «MCP Gateway»​

  • The Copilot Admin Console's Tool Servers (MCP) (/admin/mcp) goes away. MCP server registration · tool on/off · connection checks are handled by the new service MCP Gateway (plantpulse-mcp-gateway-api, internal 7160), and the screen is AI Admin Console › MCP Gateway → MCP Gateway
  • The copilot no longer attaches MCP servers directly; it looks only at the gateway's single address. The approval gate · per-person audit log remain in the copilot.
  • 🔴 More tools are on at first — Time Series Insight 34 · Digital Thread 9 · Engineering Calculation 4 · RAG 2 · Document Understanding 2 · Vision 5 · all platform tools. Only external servers stay off → MCP Tool Map
  • Tool search is on by default (budget 20) — only the tools that fit each question are loaded for the model.
  • Document search in chat goes only through the gateway's rag_search (the copilot's built-in document search goes away). If the gateway does not respond or rag_search is off, manual · drawing · procedure questions are not answered; the reason is shown instead → RAG
  • In AI Admin Console › MCP Gateway › Tools you see and override each tool's search terms. The call log separates «Tool failed» from «Transport failed» and filters by them → MCP Gateway
  • Two tools are added to the Digital Thread — thread_impact_range (how far a late PO · defective lot reaches) · thread_interval_production (what was being made during an anomaly interval).

Incidents · Proposals · Automations​

  • Adding files in chat — use Add file in the Ask input box, drag and drop, or paste to upload PDF · Excel (xlsx · xls · csv) · Word · PowerPoint · DXF drawings · TIFF scans and ask about them right in that conversation. Up to 50MB per file, 20 per conversation, and the first 100 pages are read. Video (mp4 · mov · mkv · webm) · audio (m4a · mp3 · wav) can also be added, up to 1GB · 60 minutes — the AI answers from the transcribed speech · subtitles, and the times it cites in the answer become evidence cards that play that scene (5 minutes · 200MB or less right away; longer files are transcribed in the background and you are notified when done. On installations where the install switch PI_MEDIA_ENABLED is on). Only the conversation owner sees and plays them, they are deleted along with the conversation, and they do not go into the company document library (RAG) → Ask — Adding files
  • Action plan review — on the «Proposals» card of an incident awaiting approval, choose Approve Action Plan · Edit and Approve · Reject. Rejecting picks a reason (one of six, such as diagnosis is wrong · not an anomaly (false alarm)) and closes the case → Proposals — Action Plan Review
  • Notification recipients — set automatically only when exactly one person matches the Notify Role (maintenance · operations · safety) and scope (sites · assets) in Admin › Contacts; otherwise the person running the action picks. On installations without SMTP, «Notify Owner» is blocked with a reason → Proposals — Execute Action
  • Operations Overview — see usage · proposals · incidents · automations for the last 7 · 30 · 90 days in Admin › AI › Operations Overview (/admin/ops-stats) → Copilot Admin
  • Diagnosis accuracy — the per-model breakdown is based on the model that actually answered, and causes are counted only once per incident.
  • Automation runs — a run cut by a server restart is left as «Interrupted» (no report · sending, does not resume). In a workflow automation, a failure to store artifacts shows as a warning on the run result, and the sending status is recorded accurately as «Sent» → Automation
  • Automation report titles — the titles of reports · runs · PDF · Excel · email · notifications · messenger become «automation name · run time» (plant time zone), and the title the model wrote becomes the subtitle. Report wording written by code follows the installation language (PP_LANG) → Automation — Report titles
  • Automation «All» tab — the Turn off · Turn on · Delete buttons moved to the bottom row inside the card (Delete after confirmation).
  • Video scene chips — a chip's time and playback start are the matching scene, not the start of the segment → Video RAG
  • Digital Thread evidence panel — clicking a node shows History of this object (30 days, show the 30 days before) and current values in the source system, and opens the source system screen if an administrator has put a link template on the connector → Digital Thread
  • Automation Sandbox — gets its own rail in the AI Admin Console to see run history · limits → Automation Sandbox

Also included in this release​

  • Thinking mode on by default — the compose default for CO_LLM_THINKING_ENABLED becomes true (AURA-Lite does not think when it is left empty) → Environment Variable Configuration
  • Choosing «thinking depth» — use the brain icon in the Ask input box to choose off · low · medium · high; administrators set defaults per chat, automation, anomaly diagnosis, and action proposal in Admin › System Settings → Ask — Thinking Depth
  • Conversation URLs — new conversations are at /chat/new, opened conversations at /chat/<id>. The old /chat?session=<id> is no longer accepted → Ask — Conversation URLs
  • Engineering calculation MCP — the new service plantpulse-engcalc-api and four tools (eng_list_formulas · eng_formula · eng_unit_convert · eng_calc_eval). Computes 29 standard formulas with units, substitution steps, and sources → MCP Tool Map
  • Installation default language ko — PP_LANG in the env template is ko. The only values are ko · en; if it is empty or anything else, the services do not start → Environment Variable Configuration
  • vLLM v0.31.0 (generation · embedding · reranking · transcription)
  • Minimum digital thread connector versions — mes-mcp/0.7 · erp-mcp/0.4 · ehs-mcp/0.3 · the rest 0.2. A connector declaring a lower version is not used for synchronization or evaluation. After upgrading, repeat tool discovery → conformance → enable (bin/reregister-connectors.sh) → Digital Thread Connectors

When upgrading​

  • If the host env contains LLM_NAME · LLM_MODEL_PATH · LLM_MODEL_ARGS lines, delete them. With old values the new model will not come up, and with values identical to the new defaults the pre-start check blocks startup with redundant.
  • The copilot's old tool tables (mcp_server · mcp_tool_pref · mcp_tool_call_log) are dropped at startup. Values turned on and off in the older release are not carried over; everything restarts from the gateway policy. If you had deliberately turned tools off, turn them off again in MCP Gateway › Tools after upgrading. External MCP servers attached directly to the copilot must be registered again under the gateway's Servers, with the auth values re-entered.

2026.10 Re-release 8 — 2026-10-13 · Copilot UI fully replaced​

A bundle re-released under the same 2026.10 tag. The Copilot UI changes wholesale — data, permissions, and settings carry over unchanged. Installations already on 2026.10 pick it up with bin/update.sh. Fixes to the admin console, Insight, document search (RAG), vision, digital thread, document understanding, and the proxy are included as well.

The old UI is gone in this release

After upgrading to this release, Copilot serves only the new UI. There is no switch to revert to the old UI — read «Removed screens and old URLs» and «When upgrading» below before upgrading.

Identity — a field judgment app​

It is «a field judgment app that finds plant problems and proposes actions with evidence, lets people approve and close them, asks when unsure, and hands repetitive work to automation.» It is not MES, ERP, a BI dashboard, a chatbot, or an operator execution terminal. It replaces «shop-floor AI assistant · six menus» from Re-release 7.

Three ways to use it — Ask · Proposals · Automation​

  • Sidebar — from the top: New conversation · Proposals · Automation, below that recent conversations (searchable), at the bottom the profile menu (Settings · Admin · Audit · Help · Theme · Log out), and a notification bell in the header. There is no separate «Ask» entry — a new conversation, and the first screen that opens, is Ask. The UI is monochrome; color is used only for status dots → Screen Map
  • Ask (first screen) — greeting · input box · Today's tasks · question chips. «Today's tasks» is collapsed to one line reading "N tasks today" and expands when pressed (no line appears when there are no tasks). Tables in the answer body are placed in rounded-border boxes, and color indicators within answers appear as status dots → Ask
  • Proposals — To do · In progress · Done. Planned items (action proposals) and unplanned items (anomaly to check · fault reports) share one list, and a single detail view closes the loop from detection · intake → approval → action → result → recurrence verification. The «Resolve» menu is gone → Proposals
  • Automation (formerly «Agent Builder») — build by describing it, dry run, share, run history, reports, version history and rollback → Automation
  • Settings and My Info are now a single screen (/settings).
  • First-time visitors get the UI in their browser language (the installation default language if it is neither Korean nor English), and a URL opened before login returns to that screen after login. Unknown URLs show "The screen you are looking for does not exist."

Right panel and drawing viewer​

  • Source documents, drawings, and videos open in the same right panel. Keep a conversation or proposal detail in place and view alongside it; drag the edge to change the width.
  • Proposal evidence also opens in the panel. It stacks on top of the detail and Back in the header returns to the detail.
  • When the screen is too narrow for side-by-side layout, the panel opens as a sheet over the content; on phones it opens full screen.
  • Drawing viewer — pressing a drawing card opens a preview in the panel, and Open in viewer (new tab) opens the viewer in a new tab: zoom in/out, page list, revision comparison (side-by-side · overlay, changes highlighted), and drag over the drawing to select an area and Ask about this area → Ask with Drawings

Automation — destinations and templates​

  • Delivery — receive results via app notification · internal email · messenger channel (Teams · Slack). Recipients are chosen only as internal users or roles; no addresses are typed.
  • Attachments — attach Excel or CSV to email. PDF can be chosen only on installations where the PDF conversion service (CO_GOTENBERG_URL) is configured; otherwise it appears disabled in the UI.
  • Send limits — per automation: 6 emails per person per day, 12 messenger items per channel per day, and up to 50 recipients when chosen by role (changeable in system settings). Identical content is not resent the same day.
  • Approval actions — the actions an automation can propose on a card have grown to five (maintenance request draft · PO expediting draft · work order draft · raise a proposal · raise a fault report). All require human approval on the card before going out.
  • 14 templates — Condition monitoring («tell me when … is exceeded»), Open fault report reminder, and Drawing revision notice have been added. The three templates that depend on the digital thread (delivery-risk PO · quality anomaly tracing · drawing revision notice) appear in the gallery only when those tools are present.
  • Build by describing it, dry run, and run now all run in the background, with the UI waiting on "Running…" until it finishes. When requests pile up, you are told to try again shortly.

Other changes in Ask · Automation · Admin​

  • Ask — steps are visible while tools run (Thinking → Running tool → Composing answer), and text streams after the tools finish. Stop response also stops generation on the server. Regenerate has been added, and evidence cards retain only the tool results the answer actually used. Within one conversation, the next question is sent only after the current answer finishes.
  • Automation — «Condition monitoring» does not call the AI model when the condition is not met, and can be scheduled as often as every 5 minutes. Templates open with the destination set to «me + app notification»; role, email, and messenger are chosen manually. App notifications remain in the notification list and the bell. Administrators and plant managers see an All tab (only administrators can disable or delete).
  • Proposals — closed planned cards also appear on the Done tab, and if two people handle the same card at once, you are told "Someone else handled this first" and the list is refreshed.
  • Admin — known configuration keys are always shown in system settings with name, description, and default value, and can be reset to default. View raw in the audit log.
  • PDF download and attachment are enabled only when the installation's PDF conversion service responds.
  • Tool line in answers — expanding it shows only the tool name, elapsed time, and item count. Raw tool results are shown collapsed to administrators only.
  • Chart captions — state the period and item count of the data actually plotted, not the period asked about, and append "partial" when data was truncated.
  • Document citation passages — a sentence from the source or a single table row. A table row appears as one line of text with cells joined.
  • Deleting a conversation also deletes the raw questions, answers, and tool executions (approved action cards and audit records remain).
  • Automation — an automation that has not been dry run shows Run now disabled with the reason. Pressing the app notification opens the report, proposal cards, and run record from that run, and deleting an automation also deletes the app notifications it sent. Equipment in scope and monitored tags are shown by name.

Renamed​

Old nameNew name
IncidentFault report
Agent · Agent BuilderAutomation

Names in API paths, config keys, and audit records (incident · agent) are unchanged.

Removed screens and old URLs​

Today, Anomaly diagnosis, Resolve, Report, Dashboard, Network, Forecast, and Thread screens, the mobile-only build (/m), and the chat role tabs and context chips are gone. 🔴 Old URLs are not redirected to the new locations. Old links in bookmarks, past emails, and push notifications show "The screen you are looking for does not exist." → Old URLs

  • What you saw in Dashboard, Forecast, and Thread comes back as the same answer if you ask in Ask (the tools are unchanged).
  • 🔴 Watch is gone. Not only the screen but also the executor and API that drove Watch have been removed — create Automation for anything you need to keep an eye on (template «Condition monitoring») → Automation
  • AI accuracy figures are found in the admin console under Accuracy tuning · Answer quality → AI Findings and Accuracy
  • The digital thread is an optional integration. There is no dedicated screen; when connected, it adds tools to Ask and Automation and evidence to proposals → Digital Thread

Admin console​

The screens have been reorganized into four groups (People and permissions · AI · Operations · Records) → Copilot Admin Console

  • Notification channels (new screen, /admin/channels) — register the Teams and Slack channels automations send to and set the allowed email domains. 🔴 If the domain list is empty, automation email is disabled.
  • User editing — set work duties, admin console access, role bundles, data scope, viewing clearance, bundle expiry, temporary delegation (proxy), partner expiry date, and platform user linkage from one screen → Permissions — Assigning to people
  • Branding (new screen) — customer name, tab title, logo, favicon, CI color, login screen, contact, and email display name.
  • The old report permission (menu:report) is no longer shown in role bundle editing — it no longer blocks anything in the new UI.
  • The session management, AI usage statistics, execution log, system monitor, and notification shelf screens are gone. On narrow screens, some columns of admin tables collapse.

Operations​

  • Login sessions are now stored in the session store. In earlier releases sessions lived only in Copilot's memory, so every restart or redeploy logged everyone out. From this release they persist — the one upgrade to this release does require logging in again.
  • The admin console also requires one login after upgrading — its session format changed, so pre-upgrade logins do not carry over.
  • The proxy compresses responses (gzip) and adds security headers. Nothing to do on your side.
  • Metrics — GET /actuator/prometheus (Prometheus format). 🔴 Accessible only with an API key (X-API-Key) — a login session cannot open it even for administrators (403), and without a key it is 401. It is the same key as the public API (/api/v1) → Logs and Monitoring
  • Logs are now single-line JSON (both container logs and the file /app/logs/system.log). Passwords, tokens, keys, and the leading part of email addresses are masked. Fix any collection rules that scraped the old text format.
  • The PDF conversion service (Gotenberg) comes up as a container used only inside the stack (no port exposed externally). It is optional — if CO_GOTENBERG_URL is empty, only PDF download and PDF attachment are disabled; everything else is unchanged → Configuration

When upgrading​

WhatWhat to do
UINothing to enable. After upgrading the new UI comes up, and you cannot revert to the old one
LoginEveryone logs in once right after the upgrade — both Copilot and the admin console
Bookmarks · old linksOld screen URLs end in "The screen you are looking for does not exist." Update links on intranet portals and wikis to the new URLs (/chat · /tasks · /automations)
Watches already created🔴 They do not run after the upgrade. The watch tables are left in place, but they are not migrated to automations automatically — recreate anything you still need to monitor as an automation using the same sentence. Fault reports already raised by a watch remain in Proposals
Automation emailTo use it, enter the allowed email domains in the admin console › Notification channels (disabled when empty). The mail server is smtp.* in system settings
Permissions · bundlesNothing to do. No new permissions were added

How to open it​

Web browser · home screen app (PWA) · Windows desktop app → How to Open Copilot

2026.10 Re-release 7 — 2026-10-09​

A bundle re-released under the same 2026.10 tag. Ports are unchanged, and the new tables (agents) are created automatically at startup. Installations already on 2026.10 just pick it up with bin/update.sh — nothing to do by hand.

Copilot — shop-floor AI assistant​

  • Six menus — Today · Action proposals · Anomaly diagnosis · Resolve · Report · Ask. There are two intake points (planned = action proposals, unplanned = anomaly diagnosis), and both close in one Resolve list from assignment → action → result → recurrence verification. Short labels appear under the rail icons.
  • Anomaly diagnosis — shows anomalies to check one card per equipment, with a single Confirm → to incident and Ignore button on each card. The previous anomaly detection table has moved to the operations console.
  • Today (home) — most urgent now banner · metric tiles · 7-day trend of action proposals / anomaly diagnosis findings / resolutions · urgent list. Role cards are in a collapsible section below.
  • Report — three tabs (Overview · AI accuracy · Statistics). The AI accuracy screen has become a tab of Report.
  • Plant status, Monitoring, Correlation, Forecast, and Digital thread have been dropped from the menu but still open via their URLs and links. The weekly briefing screen is gone (/briefing → home), /incidents → Resolve, and /accuracy → Report › AI accuracy.
  • The phone's bottom bar and the mobile app also have five slots (Today · Proposals · Diagnosis · Resolve · Ask).

→ Copilot Screen Map

Copilot — Agent Builder​

  • Write one sentence and the AI drafts five fields (when · where · with what · how · to whom); check it in preview and turn it on. Results come out as action proposal cards. Three templates — morning shift briefing · recurring fault causes · material PO delays.
  • It uses read-only tools within the creator's permissions and scope. Plant managers and administrators (permission «Create · manage agents») create them.

→ Agent Builder

Changed behavior — five roles​

  • The role bundles shown by default on the admin screen are five: Operator · Supervisor · Maintenance · Plant manager · Administrator. The other eight are inside an Advanced roles collapsible section, with their permissions and assigned people unchanged.
  • Default menus for field bundles have been trimmed — operators get Today · Action proposals · Resolve · Ask, maintenance adds Anomaly diagnosis. Startup changes only bundles still at the previous defaults once; bundles an administrator edited are left alone. It is recorded in the audit log as «System (migration)».
  • Incident action «Execute» has been narrowed to the new permission «Execute incident actions» — by default Supervisor · Maintenance · Plant manager · Administrator. Operators and quality can no longer execute.

Changed behavior — two-person approval · delegation · partner accounts​

  • The person who asked cannot approve their own chat action card. Another person with approval permission approves or rejects it under Pending approval at the left of Action proposals.
  • Material expediting requests require approval by two different people before being sent (setting access.two_person.tools). Maintenance requests remain single-person approval.
  • Temporary delegation — lend another person your bundles with an end date, from user editing. Each bundle can have its own expiry.
  • Partner accounts — partner bundles are scope supplier: only, require an expiry date, and cannot hold the controlled clearance. Sessions are cut when they expire.

→ Two-person approval · delegation · partner accounts

Fixed​

  • Voice questions — the recording banner now floats above the input box so buttons do not shift, and Stop recording on the banner stops it. The microphone button is the same size as the send button.
  • Permission screens — the clearance selector for document classification is visible, input widths in the user edit dialog fit, and the type and content columns of the audit table appear in the UI language.
  • Screen headers (title and subtitle) have been unified under one rule.

Operations​

2026.10 Re-release 6 — 2026-10-08​

A bundle re-released under the same 2026.10 tag. Ports are unchanged, and DB tables are created automatically at startup. Installations already on 2026.10 just pick it up with bin/update.sh — nothing to do by hand.

Copilot — permissions​

  • Role bundles — permissions attach to bundles, not to people. The admin console › Role bundles has 13 default bundles (Administrator · Operator · Supervisor · Maintenance · Quality · Plant manager · Design · Purchasing · Production control · EHS · Partner · Audit · External API), and each person can be given several.
  • Data scope — assign a site, line, and equipment (or project, customer PO, partner) per person, and only that scope is visible everywhere: screens, chat, document answers, and API.
  • Document classification — General · Internal · Confidential · Controlled. Set in the admin console › Document classification, with a viewing clearance per person. Confidential drawing page previews are watermarked with the viewer and timestamp, controlled documents cannot be downloaded in original form, and viewing is recorded.
  • Audit screen (/audit) — filter configuration and permission changes and viewing records of confidential and controlled documents by period, user, and type, and download as CSV.
  • Behavior is unchanged after upgrading. Existing users are migrated to the bundle of their work role (administrators also to the Administrator bundle), full scope, and Confidential viewing clearance. The only difference is controlled documents — each person must be given the Controlled clearance to open them.

→ Permissions — role bundles · data scope · document classification

Changed behavior — external integration by API key only​

The external integration URLs /api/v1/** and /mcp are now accessible only with an API key (X-API-Key). Calling them with a logged-in browser session returns 403. External systems integrating via API key continue to work unchanged.

Operations​

  • New environment variable PI_USER_CONTEXT_MODE (off · log · enforce, default off) — determines how the backend treats calls arriving without user information. It does not have to be put in .env. An unknown value is blocked by the installation check (lint-env) → Operations — Backend user-info check mode
  • Document answers for people with document classification assigned or a restricted scope are composed only from filtered evidence, so they may be slightly slower.
  • Fixed audit log queries returning 500 and drawing previews the user cannot see dropping the connection (now «not found» 404).
  • Added a connection timeout so time series insight is not held up for long when the platform DB is down.

→ Accuracy figures have been corrected to this release's public pipeline values — Accuracy · Benchmarks

2026.10 Re-release 5 — 2026-10-07​

A bundle re-released under the same 2026.10 tag. Ports, DB migration, and environment variables are the same as Re-release 4. Installations already on 2026.10 just pick it up with bin/update.sh.

Copilot — chat action cards​

  • «What if a part is N days late» questions now call recovery calculation before document search. When recovery calculation suggests expediting, a Material expediting action card is attached below the answer, and the body says "You can approve the draft on the card below" instead of containing the expediting text.
  • New card Maintenance request — when an answer contains an open fault risk finding, an MES maintenance request draft card is attached. Supervisor, Maintenance, Plant manager, and Administrator can approve (proposal cards under To do › Action proposals remain administrator-only). It appears only when the MES connector exposes a maintenance request tool.

→ AI Chat Web — Action cards · User Permissions and Work Roles

Copilot — drawings​

  • Chat drawing cards are now one card per drawing number and revision. DXF and PDF of the same revision, which used to appear as separate cards, are grouped; the card shows "N files" and pressing it opens the representative file (DXF if present). The admin console Drawing register likewise shows a Files chip on one row.
  • Asking "what is the difference between revision ○ and revision ○" now answers with the revision comparison result (title block · dimensions · BOM · notes changed) instead of «cannot compare».
  • Tolerances in the revision comparison list appear in plain language instead of raw JSON, and title block items appear in Korean.

→ Ask with Drawings · Admin Console — Drawing register

Copilot — screens · answers​

  • The Today's work list on the supervisor start screen scrolls inside its card — even with 12 process rows, the first question and example questions remain on the first screen.
  • The table under "What work is there today?" has one footer line ("and N more" or "showing N of M rows"). The two numbers no longer disagree.
  • Fixed ** appearing verbatim in answers (when a particle follows the end of emphasis).
  • Fixed the English «no speech» overlapping below «no speech» in the admin console Video list.

Operations​

  • Copilot now recovers on its own when the platform DB connection drops and comes back. If it cannot get a connection for more than 5 minutes, the container restarts itself.
  • Forecasting (insight) now answers "insufficient data" instead of an error on equipment with many missing values.

2026.10 Re-release 4 — 2026-10-06​

The final public bundle under the same 2026.10 tag. Ports, DB migration, and environment variables are the same as Re-release 3. Installations already on 2026.10 just pick it up with bin/update.sh.

Copilot — supervisor «Today's work»​

  • Process status and platform order status on the card appear as Korean labels (Planned · In progress · Running …) instead of codes (in_progress · planned · START …). Platform orders are shown compactly as "order equipment start time".
  • Customer PO slack has changed to "planned slack N days" — it is based on the work order plan end, so part delays are not included. The value with part delays applied appears as "(delay applied)" in the Affected customer POs table of the recovery calculation.
  • Fixed the answer to "What work is there today?" showing the table twice — only the server-generated Today's work table remains, and that table has gained a Blocking reason column. The column name is Customer PO planned slack.
  • The digital thread links platform-running orders to processes by the external order number in the platform order list.

→ AI Chat Web — supervisor cards · Digital Thread

Copilot — chat answers​

  • Video and audio cards appear even when the chat answer did not number them in the body (only document and drawing cards collapse). The first question of a new conversation searches documents with exactly the sentence the user wrote → Ask with Video · Audio
  • Answers to tolerance questions («What is the tolerance range of Ø35 H7?») begin with the upper and lower limits from the drawing dimension table — in earlier releases they sometimes answered «cannot be confirmed» despite having the values → Ask with Drawings
  • What-if questions such as «What if a part is N days late» are always answered with recovery calculation, computed using the assumptions in the question (part, days). The answer states both the assumption and the current delay.
  • If the model repeats itself and breaks off, it rewrites once, and if that also fails, it shows document search results with source cards.

Copilot — screens​

  • Fixed a defect where menus and titles appeared as raw message keys (nav.main.today etc.) in the English UI.
  • The guidance on Pending verification (/review) now reads "An administrator changes work roles in User management" (previous release said «in your profile»).
  • The user edit dialog has gained the subtitle "Edit user information and work role," and two-column inputs overflowing the dialog have been fixed.
  • Horizontal scrollbars are now as thin as vertical ones, and the close button on top-right notifications (toasts) is clickable where it appears.

RAG · video​

  • The document table in the admin console can now exclude / re-include platform ledger drawings from the corpus. Directly uploaded drawings still cannot be excluded, and the button's tooltip explains why. Drawing 409 wording also changed per target (manual drawing · ledger drawing) → Admin Console · Troubleshooting
  • Fixed transcription dropping the first sentence that follows silence or noise, and the timestamp of retained sentences is pulled forward to the actual speech. Already transcribed videos are not redone automatically — use Re-transcribe on the admin console Video screen to transcribe again in the processing window (20:00-06:00 if left empty).

2026.10 Re-release 3 — 2026-10-06​

The same 2026.10 tag rebuilt. Ports and DB migration are unchanged, and new tables and columns are created automatically at startup. Installations already on 2026.10 just pick it up with bin/update.sh.

Before you pull again
  • If you enabled video and audio by hand-writing MEDIA_INGEST_ENABLED · ASR_URL into the host env, upgrading as-is will not break anything — the old names are aliases for this release, and the operations script moves them to PI_MEDIA_ENABLED on first run. [warn] of the pre-start check prints the sed to clean up. The aliases are removed in 2026.11.
  • Upgrading the ERP connector to erp-mcp/0.3 changes its tool list, so the connector is disabled on re-discovery. Re-run the conformance test and enable it → Digital Thread

Video · audio — now you can enable it​

  • One line in the host env, PI_MEDIA_ENABLED=true, brings up transcription serving, makes rag-api accept video and audio, opens the transcription intake in document understanding, and makes bin/fetch-models.sh download the transcription model Aura-ASR-Turbo (about 1.5 GB). It is off by default.
  • A new one-shot service plantpulse-asr-audio copies audio libraries into transcription serving — this fixes the cause of transcription serving staying unhealthy in the previous release. «Exited (0)» is normal, and bin/status.sh counts it as healthy (23/23 on installations that enabled it).
  • Ask by voice in chat also works on installations that enabled it.
  • The admin console RAG › Index › Video screen has been added (upload video · processing status · transcription · retry). On disabled installations it only explains how to enable it.
  • On air-gapped networks the image is always included in the bundle; only the transcription model is downloaded with PI_MEDIA_ENABLED=true MODEL_BASE=… bin/fetch-models.sh and carried in.
  • Leaving MEDIA_PROCESSING_WINDOW empty starts processing only during 20:00-06:00 (PP_TZ). For always-on processing, use always.

→ Video · Audio Ingestion · Video · Audio Search · Air-gapped Installation

Installation · configuration​

  • The stop on an empty inbound key has moved from compose to the pre-start check ([fail] PI_INBOUND_API_KEY is empty …). A no-auth switch for development and testing only, PI_INBOUND_AUTH_DISABLED (default false), has been added and is ignored when a key is present.
  • New knobs (all correct at their defaults) — RAG_S3_BUCKET (rag-api bucket, default plantpulse-rag) · digital thread connector periodic sync DT_CONNECTOR_SYNC_ENABLED (on by default) · DT_CONNECTOR_SYNC_INTERVAL_S · DT_CONNECTOR_MAX_AGE · DT_LINK_HISTORY_DAYS.
  • bin/doctor.sh now lists old names and duplicate lines separately as «old or redundant lines» rather than «bad».
  • There are thirteen in-house images (pi/plantpulse-asr-audio added), and docling-serve is v1.36.0. bin/backup.sh does not mount the transcription audio library volume.

→ Environment Variable Configuration · Service Operations

Copilot — screens​

  • The left rail order is now Today · Ask AI · Field · To do · Resolve · Report, and the mobile bottom bar is Today · Ask AI · Field · To do. The tabs under "Field" are in the order Correlation · Forecast.
  • Only administrators change work roles (each change is recorded in the audit log). "My duties" in the profile is read-only, replaced by a "Start screen" the user chooses themselves.
  • The supervisor tab on the chat start screen is now "Today's work" — it shows readiness, equipment status, customer PO slack, material POs, and drawing revision for each of today's processes. Asking "What work is there today?" appends a today's-work table to the answer (new tool thread_today_work, on by default).
  • The what-if tool thread_explain_recovery is now on by default, so answers carry an "Actions you can take" card. Who can approve is determined by work role → Work Roles
  • To do (/tasks) — hides urgent cards whose grouped findings are all closed, and groups findings of the same equipment and type into one card per day. The "Related SOP documents" panel uses only that equipment's documents as evidence.
  • The "Cannot determine" box in anomaly detection is now a single collapsed line by default, and the readiness dot on the digital thread screen has a tooltip with the reason shown in the UI language.

→ Copilot Screens · Digital Thread

Admin console​

  • Below 1024px width the menu collapses into a drawer (☰).
  • The upload dialog accepts multiple files, and the drawing register has gained "Upload drawing" (for PDFs, document vs. drawing is chosen per file).
  • The drawing reading test has gained dimension upper and lower limit columns and a "Geometric tolerance frame check" card.
  • "Sync now" on the integration map closes connections that have disappeared (it reports when it did not close because collection was cut off).

→ AI Admin Console

Digital thread · RAG​

  • The digital thread now links PO-centrically — material PO → work order → customer order line → customer. ERP connector erp-mcp/0.3 exposes purchasing, receiving, and sales order tools, and computes slack days and risk for customer orders. A new API GET /api/v1/today and MCP tool today_work (seven digital thread tools) have been added.
  • Enabled connectors are re-synchronized periodically (on by default).
  • On installations with drawing ingestion enabled, drawings in platform asset documents (.dxf, PDFs whose document type is DRAWING) are also ingested.
  • Tolerance and range questions are answered from the drawing dimension table, and values computed with fit formulas carry a «formula estimate» caveat.

→ Drawing Search · Digital Thread

Time series insight​

  • The downtime penalty in the health index counts unplanned downtime only. Domains with short history are held pending rather than scored 0.
  • Order shortfall findings are held when evidence is insufficient.

→ Time Series Insight

Fixed​

  • If only the connection drops mid-chat, it shows "Connection lost. The server is still composing the answer…" instead of "An error occurred," and the desktop UI retrieves the answer for up to 5 minutes.
  • Empty answers end with "Could not compose an answer…" and answers caught in a loop with "⚠ Generation stopped because the same content repeated…". Fixed "LLM call failed: finish_reason is null" and mismatched citation numbers.
  • Fixed uploaded drawings not appearing in the document list, DXF preview text showing as empty boxes, and English remaining on the Korean UI.

→ Troubleshooting

Component versions​

ComponentVersion
docling-servev1.36.0

Everything else is as in «2026.10» below.

2026.10 Re-release — 2026-10-05​

The same 2026.10 tag rebuilt (monthly tags are moving tags). The installation procedure and ports are unchanged. Installations already on 2026.10 just pick it up with bin/update.sh; if you are upgrading from 2026.09 or earlier, follow the manual steps under «2026.10» below exactly.

Two things to check before pulling again
  1. Make sure PI_INBOUND_API_KEY is not empty — backend services now refuse to start when it is empty (see «Security» below). If the env was generated by the installer, it already has a value.
  2. If you wrote TS_GPU_UTIL into the host env, delete it — the GPU share of the time series inference server has moved to the hardware profile, so the pre-start check raises the host env line as profile.

Security — an empty backend inbound key stops startup​

  • RAG, time series insight API, document understanding, vision, and digital thread refuse to start when the inbound key is empty. Previously, an empty key left them open without authentication and still healthy. Compose also requires PI_INBOUND_API_KEY.
  • Each service has gained a switch to open without a key (*_INBOUND_AUTH_DISABLED), but this release's compose does not pass it. From Re-release 3 it is passed via the host switch PI_INBOUND_AUTH_DISABLED, and empty keys are blocked by the pre-start check rather than compose (above).

→ Environment Variable Configuration · Troubleshooting

Observability — metrics and request ids​

  • The five Python backends expose GET /metrics (Prometheus text format). There are no new ports, and it sits behind the inbound key.
  • The same five return a X-Request-ID per request in the response and include it in that request's log lines as request_id.

→ Logs and Monitoring · API Integration Guide

Drawings — off by default, now enableable​

  • Compose passes DRAWING_INGEST_ENABLED (default false) to rag-api — previously there was no way to enable it.
  • On installations that enable it, it produces differences between two revisions — rag-api GET /api/v1/drawings/{asset_id}/{doc_name}/diff?lang= (against the previous revision of an indexed drawing) and document understanding POST /api/v1/drawings/diff (two files).

→ API Integration Guide

Document · photo tools​

  • Compose passes FETCH_ALLOWED_HOSTS to document understanding and vision. You can allow-list the URL of an internal file server to open it (earlier releases did not pass it, so internal URLs were always rejected).
  • vision_ocr now reads with the served LLM (answering only when two out of three runs agree). It reads Korean nameplates and labels. To revert to the old docling OCR, use VISION_OCR_ENGINE=docling.

→ MCP Tool Map

Video · audio — the knobs arrived (transcription did not work in this release)​

  • Compose gained the video and audio ingestion knobs (MEDIA_* · ASR_* · OCR_*) and transcription serving plantpulse-asr (profile media, off by default), and its GPU share (ASR_GPU_UTIL) is pre-counted in the hardware profile total.
  • In this release, transcription did not work because the vLLM image used by transcription serving had no audio decoder. This was fixed in Re-release 3, and it is now enabled with the single line PI_MEDIA_ENABLED=true (above).

→ Video · Audio Ingestion

Installation · configuration​

  • install.sh fills remaining placeholders from environment variables of the same name (… | sudo PP_API_TOKEN=… bash). Values already entered are not overwritten.
  • The pre-start check now guides old CH_* lines as renamed — a sed that only renames rather than "delete them." Values no longer revert to defaults through deletion.
  • The hardware profile carries five shares (LLM · EMB · RERANK · TS · ASR) — GB10 0.4 · 0.10 · 0.08 · 0.13 · 0.03 (total 0.74), g7e 0.53 · 0.13 · 0.10 · 0.15 · 0.04 (total 0.95).

→ Environment Variable Configuration · System Requirements

Copilot · data​

  • Administrators can set the installation default role for the chat start screen (setting chat.home.default_role) — it is used only when an employee has no work role, and when empty the start screen asks them to choose a role → Copilot Admin Console
  • New tables and columns (chat_action · chat_turn_metric · chat_bench_run · chats.context · agent_tool_call_log.approved_by, Aster TSDB PI_NAVIGATOR_ACTION_CHECK) are created automatically at startup. There is no migration to run by hand.

→ Database Model

2026.10​

If you are upgrading from 2026.09 or earlier — five manual steps

The installer does not regenerate an existing /etc/kopens/plantpulse-ai.env and does not add new lines either. You must do the following yourself.

  1. Platform credential fetch configuration — enter PP_DATALAKE_ADMIN_URL · PP_DATALAKE_ADMIN_API_KEY and place the platform trust anchor at /etc/kopens/ca/root.crt (the same content also as CA.crt). The AI host IP must be on the platform allow-list. Otherwise the containers that use credentials stop with FATAL → Installation Overview
  2. Stored credential encryption keys — add the PI_COPILOT_SECRET_KEY · PI_DT_SECRET_KEY lines (openssl rand -base64 32). Without PI_COPILOT_SECRET_KEY, Copilot will not come up → Environment Variable Configuration
  3. CH_* → CO_* rename — the prefix of Copilot environment variables changed and there is no fallback. Do not delete the old lines; move only the names, keeping the values (from the re-release the pre-start check catches this as renamed and prints a sed that only renames) → Environment Variable Configuration
  4. Host env cleanup — the host env now holds only site values and secrets. Image references, GPU shares, values identical to compose defaults, PP_HOST, platform accounts, passwords (PP_PG_* · PP_CASSANDRA_* · PP_REDIS_PASSWORD · PP_S3_* etc.), and LITELLM_IMAGE lines left in an old env stop startup at the pre-start check. Delete them with the sed printed by bin/lint-env.sh and add PP_HW_PROFILE=gb10 (g7e on AWS g7e). Do steps 1 and 3 first → Environment Variable Configuration
  5. Admin console URL — 9080 closes and 5959 (HTTP) · 5960 (HTTPS) open. Move your bookmarks and firewall rules.

Copilot — screens​

  • The left rail has been consolidated into six menus — Today · Field · To do · Resolve · Ask AI · Report. Pressing a menu goes to its first screen, and screens within a menu are switched by tabs in the content header (Today: Summary · Weekly briefing / Field: Plant status · Monitoring · Anomaly detection · Forecast · Correlation). Names changed too — Home → Summary, Plant state → Plant status, Watch → Monitoring, Association analysis → Correlation, AI Chat → Ask AI.
  • Start screen by work role — entering at / sends operators, supervisors, and quality to "Today," maintenance to "To do," and plant managers to "Report."
  • Mobile tabs are now four — Today · Field · To do · Ask AI.
  • The alert side of the Monitoring tab (/watch) is now two columns — watch alerts → AI findings on the left, equipment to watch · post-repair verification on the right.
  • The default theme is light. Even if the OS is dark, it is not applied unless the user chooses dark mode.
  • Fixed the proxy cutting notification subscriptions that went quiet for a while (Copilot sends a heartbeat; the proxy waits up to an hour on that path only).

→ Copilot Screens

Copilot — AI finds, people judge​

  • AI finding intake — receives findings from time series insight and shows them as notifications, morning briefings, and an "AI findings" section, and raises order shortfall proposals (on by default). Prescriptive finding cards and automatic post-repair verification came in together.
  • Equipment to watch — "Equipment to check first today" (on by default).
  • Human in the loop — mark each anomaly as correct, false alarm, or unsure; report missed anomalies; accept or reject proposals and record the outcome. Those marks are read via the public API GET /api/v1/ai-feedback.
  • AI accuracy (/accuracy, administrators) — accuracy against stoppage and fault rules, and autonomous tuning of per-equipment sensor thresholds.
  • Pending verification (/review) — for supervisors, maintenance, and administrators. Off by default.
  • The public chat API opens a new conversation when called without session_id (earlier releases returned 500). Chat called with X-API-Key has also been fixed.

→ Time Series Insight · API Integration Guide

Digital thread​

  • plantpulse-digital-thread-api is now in the stack by default — it owns the plant graph mirror and the connector registry. The mirror lives in a dedicated Neo4j (plantpulse-digital-thread-neo4j) and does not share a DB with LightRAG's graph. Neither exposes a port on the host.
  • The admin console has gained Integration map (/thread/) and Graph mirror (/thread/mirror/) screens.
  • Digital thread tools (thread_get_timeline · thread_trace_links, on by default) attach to Copilot chat. Approval → draft has been added: when an administrator approves on a proposal card, one draft or request is created in MES or SCM.
  • The connector families have gained PLM (plm-mcp/0.1 — engineering change orders · design BOM) and QM (qm-mcp/0.1 — inspection · nonconformance), and the SCM in mes-mcp/0.5 exposes partner supply capacity. All are read-only.
  • Answers from the what-if tool thread_explain_recovery (off by default) now include the added delay for each engineering change and nonconformance, and whether a late part can be pulled in from a partner (when the relevant connector is enabled).

→ Digital Thread · AI Admin Console

Installation · configuration​

  • Platform credentials are fetched at startup — accounts, passwords, and ports for PG, Aster TSDB, Redis, and RustFS are not kept in the host env. Containers, and host scripts such as pre-start DB provisioning, fetch them from the same API. If the fetch fails, it stops with FATAL, and there is no way to disable certificate verification.
  • The installer asks for PP_DATALAKE_ADMIN_URL · PP_DATALAKE_ADMIN_API_KEY instead of a platform host and account. With START=1 it tries fetching credentials once before pulling images, and brings nothing up if it fails.
  • The host env holds only site values and secrets — product defaults moved to compose, and vLLM GPU shares to the hardware profile (compose/profiles/<PP_HW_PROFILE>.env). Image pins cannot be kept in the host env; in an emergency, give them once via the shell environment.
  • After opening the firewall, the installer warns about ports already held by processes outside this stack.
  • Copilot environment variable prefix CH_ → CO_ (see «manual steps» above).
  • Stored credential encryption keys PI_COPILOT_SECRET_KEY · PI_DT_SECRET_KEY — generated by the installer on a fresh install. Rotation is done with _PREVIOUS and is not covered by passwd.sh → Changing Passwords · API Keys
  • The AI app PG moves to DB pi — Copilot uses schema co and the digital thread dt. The old DB ch is migrated to pi.co at startup.
  • PI_NEO4J_PASSWORD is the account for both Neo4j instances. bin/passwd.sh changes both together.
  • The installer picks one PP_TZ and matches the host OS time zone as well. With HOST_TUNING=skip|plan it also skips package installation and nvidia runtime registration (Docker restart). TLS SANs already written in the env are preserved on reinstall.
  • The LiteLLM host port can be changed with PI_LITELLM_PORT (default 4000).

→ Environment Variable Configuration · Installation Overview

Air-gapped networks​

  • bin/up.sh also refuses to bring things up while placeholders remain — previously only the START=1 path was blocked, so a stack brought up by hand after import could be open with the public template's passwords.
  • When import finishes without START, it prints the next steps (fill placeholders → place models → bin/up.sh).
  • vLLM models are downloaded with bin/fetch-models.sh on the internet side and carried in (release weights and checksums verified). The time series inference model is inside the image, so there is nothing to carry in.

→ Air-gapped Installation

Access · ports​

  • Admin console 9080 → 5959 (HTTP, PI_ADMIN_WEB_PORT) · 5960 (HTTPS, PI_ADMIN_WEB_TLS_PORT, via the proxy). Both are open and serve the same console.
  • When a service behind the console rejects the console's inbound key, it no longer bounces back to the login screen but shows 502 · upstream_auth and the variable names to check. The LLM read screen maps 5xx from the gateway (or its DB) to 502 · llm_upstream (previously 500) → Troubleshooting
  • With the entry proxy now running non-root, the ports inside the container changed to 8080 · 9443 · 8443. The host's 80, 443, and 5960 are unchanged.

→ Service Port Map

Operations​

  • Containers run non-root — every service in compose specifies its run user (our images and the entry proxy and vLLM use uid 10001, gid 0), with one root exception: plantpulse-dcgm for GPU metrics. Root-owned writable volumes from old installations (including proxy certificates, Qdrant, and Neo4j) are fixed once before startup by up.sh · restart.sh · update.sh (bin/volumes-nonroot.sh) → Service Operations
  • New volumes pi-digital-thread-neo4j-data (plant graph mirror) · pi-ttm-tuned-models (per-installation time series fine-tuning weights).

Images​

  • There are now twelve in-house images — the digital thread was added, and LightRAG and LiteLLM changed to images we wrap (pi/plantpulse-lightrag · pi/plantpulse-litellm). Both follow the monthly tag; to pin just one in an emergency, give PI_IMAGE_TAG_LIGHTRAG · PI_IMAGE_TAG_LITELLM via the shell environment. LITELLM_IMAGE is gone.
  • The default tag for in-house images is 2026.10.

Component versions​

ComponentVersion
vLLMv0.29.0
LightRAGv1.5.7 (base of the wrapped image)
docling-servev1.34.0
LiteLLMv1.103.0 (base of the wrapped image)
Neo4j5.26.28 (two instances)
Qdrantv1.18.2

2026.09 (2026-09-25)​

If you are upgrading from 2026.08 or earlier — two manual steps

The installer does not regenerate an existing /etc/kopens/plantpulse-ai.env. You must fix the following two yourself for startup to succeed.

  1. Object storage key rename — rename PP_MINIO_PORT · PP_MINIO_ACCESS_KEY · PP_MINIO_PASSWORD to PP_S3_PORT · PP_S3_ACCESS_KEY · PP_S3_PASSWORD (values unchanged). If only the old names are present, the pre-start check stops and tells you which lines to move → Environment Variable Configuration
  2. LiteLLM admin UI password — add the PI_LITELLM_UI_PASSWORD=<password> line. Without it, compose refuses to start → Initial Password Change

If external integrations were calling the model as gpt-4o · gpt-4o-mini, they must change to the new name (aura-35b etc. — aura-lite from Re-release (2026-10-20)) (below).

Model names​

  • The names registered with the gateway changed to aura-35b (changed again to aura-lite in Re-release (2026-10-20)) · aura-vision (vision alias) · aura-embedding-4b · aura-reranker-0.6b.
  • Compatibility aliases such as gpt-4o · gpt-4o-mini have been removed. VLM_NAME is gone as well — the vision alias is held by the gateway configuration.

Installation​

  • Internal secrets are generated by the installer — gateway master key, salt, vLLM key, inbound key, RAG key, and console session secret. People are asked only for values only they know (the administrator password) and platform values (PP_*).
  • It asks for the TLS certificate SAN (PP_PROXY_CERT_SAN). Non-interactively it uses the host address and warns.
  • With START=1 it refuses to start when placeholders remain (previously it only warned).
  • With START=1 it downloads missing models automatically and verifies SHA256 (except on air-gapped networks).
  • After startup, bin/verify-install.sh measures not "did it come up" but "does it work" (models, gateway key, platform token). On FAIL, the installation ends in failure.
  • The installer installs the NVIDIA driver and container toolkit (skip with SKIP_GPU=1).
  • HOST_TUNING=skip|plan|apply — on hosts running other containers, the default is plan (print only).
  • ALLOW_DOCKER_RECONFIGURE=1 — for a pre-existing Docker, the default is now to leave the repository alone and not restart.
  • It stops when the env template and the machine architecture disagree (override with ENV_TEMPLATE_SKIP_ARCH_CHECK=1).

→ Installation Overview

Air-gapped networks​

  • Bundle signature verification (verify-bundle.sh) is now the first step of import. It stops if verification fails or the bundle is not found. The bundle carries cosign for air-gapped use.
  • Two sibling repositories are included in the bundle. The Docker offline package type follows the architecture (arm64 → deb, amd64 → rpm).

→ Air-gapped Installation

Access · ports​

  • The default host has gained /llm/ (OpenAI-compatible gateway) and the /mcp/rag/ · /mcp/timeseries/ · /mcp/parser/ · /mcp/vision/ paths — you can run everything on one domain.
  • Phoenix (6006) is no longer published on the host. Normal startup is unchanged; open it with PP_DEBUG_PORTS=1 only when diagnosing.
  • A LiteLLM admin UI account (PI_LITELLM_UI_USERNAME · PI_LITELLM_UI_PASSWORD, default admin / admin123!) has been added. Previously you had to type the master key as the password.

→ Service Port Map

Configuration​

  • Object storage keys PP_MINIO_* → PP_S3_* (see «manual steps» above).
  • Equipment alarm channel Kafka → MQTT (1884, TLS). PP_KAFKA_PORT is gone.
  • GPU share sum check — startup stops beforehand if the sum of per-service GPU shares exceeds PP_GPU_BUDGET_CEILING (default 0.75).
  • CH_API_V1_KEY — the machine authentication key for the public API (/api/v1). Leaving it empty blocks entry with this key.
  • LightRAG entity extraction limit LIGHTRAG_LLM_TIMEOUT default 3600 s — fixes large document indexing failing midway.

→ Environment Variable Configuration

Operations​

  • bin/passwd.sh --generate — the tool generates the values to rotate. Generated keys identify themselves by family prefix (ppin_ · ppvl_ · pprg_ · sk-pplm_).
  • bin/backup.sh now takes all compose volumes (excluding logs and caches) — TLS certificates and Phoenix data have been added. Check the result with --list. → Database Administration

→ Changing Passwords · API Keys

Admin console​

  • Korean can be selected (language switch on the login screen).
  • The LLM menu has gained Chat test · Model registration (external OpenAI-compatible endpoints) · API keys (virtual key issuance) · Upstream status.

→ AI Admin Console

Copilot​

  • Watch (/watch) — write down what to keep an eye on and get alerts → Automation
  • The screen order in the left rail has been rearranged to follow the flow of work → Copilot Screens
  • Conversation title search, and masking of secret values in tool arguments shown in the evidence view
  • API key issuance in the Copilot admin screen and the public API /api/v1 → API Integration Guide
  • Default time series forecasting model TTM R3, and default calibrated score threshold 5.0 for equipment sensor anomaly detection → Time Series Insight

Component versions​

ComponentVersion
vLLMv0.29.0
LightRAGv1.5.6
docling-servev1.34.0
LiteLLMv1.102.0
Neo4j5.26.28
Qdrantv1.18.2
Arize Phoenix19.6.0

2026.08 (2026-08-23)​

  • Introduced plantpulse-proxy — consolidates the external entry point to a single 80 / 443 and applies TLS.
  • Common operations verbs — bin/up.sh · down.sh · restart.sh · logs.sh · shell.sh · update.sh · remove.sh · doctor.sh.
  • bin/passwd.sh — changing passwords and API keys (a convention shared by platform · ai · studio).
  • Moved the configuration source of truth to /etc/kopens/plantpulse-ai.env (compose/.env is no longer read).
  • Stopped publishing host ports for internal services (vLLM · embedding · reranker · docling · Qdrant · time series inference · admin-api). Consolidated the inbound keys of the four backend services into one value (named PP_INBOUND_API_KEY at the time, now PI_INBOUND_API_KEY).
  • Releases are built in two variants, arm64 · amd64. The env template name became env.gb10.example.

v2.0.0 (2026-07) — Major architecture overhaul​

info

The v1.x entries below are historical records based on the pre-overhaul architecture. For the current architecture, refer to this v2.0.0 entry.

Chat orchestration brought in-house (Langflow removed)​

  • Chat/agent execution has been unified into the AI Chat Web built-in agent (AgentOrchestrator + ToolRegistry).
  • The Langflow engine with its 15 custom components, and Jupyter, were removed from the stack. Arize Phoenix was also dropped at the time but returned on 2026-07-27 for LLM tracing and now comes up by default (its host port has been closed since 2026.09).
  • LLM inference goes through the LiteLLM (:4000) gateway. The model name at the time was gpt-4o, changed to aura-35b in 2026.09 and to aura-lite in 2026.10 Re-release (2026-10-20). Agent execution flow is viewed under "View work" on the chat screen.

MCP / ontology integration​

  • The former standalone services plantpulse-mcp-server (:50000) and plantpulse-ontology (:8888) were archived and replaced by the platform's server-web integrated MCP (/api/v5/mcp, api_key authentication). Ontology tools were absorbed into the integrated MCP.
  • The built-in agent's ToolRegistry discovers tools dynamically via tools/list.

RAG → LightRAG migration​

  • The in-house RAG server (formerly plantpulse-rag) was replaced by the official LightRAG server (1.5.4 at the time, 1.5.6 in 2026.09). Document management is done in the LightRAG WebUI (/webui).

Shared infrastructure​

  • PostgreSQL, Aster TSDB, Redis, and RustFS use the PlantPulse platform installation as shared infrastructure (the AI stack no longer runs its own).

v1.4.0 (2026-03-29)​

Documentation​

  • Expanded question examples to 178 (feature store subdivided, compound questions strengthened, business scenarios added)
  • Added troubleshooting guide
  • Added API integration guide
  • Added release notes page
  • Added GitBook online manual URL to the README

v1.3.0 (2026-03-29)​

Documentation​

  • Expanded question examples to 170 (subdivided by domain)
  • Added three appendix algorithm guides:
    • Understanding RAG algorithms (chunking, embedding, hybrid search, reranking)
    • Understanding AI model algorithms (TSPulse anomaly detection, TTM forecasting, feature store)
    • Understanding the ontology (knowledge graph) (graph DB, subgraph traversal)
  • Added troubleshooting guide
  • Added API integration guide
  • Added release notes page

v1.2.0 (2026-03-29)​

Documentation​

  • Added three appendix algorithm guides

v1.1.0 (2026-03-29)​

Documentation​

  • Added question examples page (130 items)

v1.0.0 (2026-03-29)​

Initial release​

Initial build of the PlantPulse AI product manual GitBook.

Platform composition​

  • 151 MCP tools integrated
    • PlantPulse MCP Server: 116 read-only APIs
    • TimeSeries-Insight: 27 AI analysis tools
    • Ontology: 5 graph tools
    • RAG: 3 search tools
  • 15 custom Langflow components
  • AURA LLM — our own industry-specific models (LLM + Embedding + Reranker)

AI models​

ModelPurpose
AURA LLMConversation/analysis/report generation
AURA EmbeddingVector embedding (2560 dimensions)
AURA RerankerReranking of search results
IBM Granite TSPulseTime series anomaly detection
TinyTimeMixer (TTM)Time series forecasting

Infrastructure​

ComponentTechnology
BackendJava 21 / Spring Boot 3.4, Python / FastAPI
Graph DBNeo4j
Vector DBQdrant
Relational DBPostgreSQL 18
Time series DBApache Cassandra
CacheValkey (Redis compatible)
Object storageRustFS (S3 compatible)
LLM proxyLiteLLM
AI workflowLangflow
AI observabilityArize Phoenix
Experiment environmentJupyter Notebook

Key features by module​

AI Chat Web

  • Natural language queries over plant data
  • SSE real-time streaming responses
  • ECharts/Mermaid rich visualization
  • Multi AI Flow management

MCP Server

  • 116 read-only APIs based on OPC-UA/ISA-95
  • 10 data domains: equipment, OPC, work orders, sites, tags, OEE, calendar, system, RAM, EMS, alarms, points, and more
  • KST-native time handling

TimeSeries-Insight

  • Anomaly detection across 7 domains (IBM Granite TSPulse)
  • Forecasting across 7 domains (TinyTimeMixer TTM)
  • In-depth alarm analysis (statistics, duration, correlation)
  • Feature store (automatic hourly/daily computation, vector embedding, LLM context)
  • Equipment health score (0–100)

Ontology

  • Plant knowledge graph with 14 node types
  • Subgraph traversal (with depth specification)
  • Automatic 60-second synchronization between the PlantPulse DB and Neo4j

RAG

  • 4 search modes (hybrid, naive, local, global)
  • Hybrid search (dense + sparse)
  • Multimodal support (text + images + tables)
  • Docling document parser, reranker

AI Studio

  • Langflow visual flow programming
  • 15 PlantPulse-specific components
  • LiteLLM LLM proxy
  • Arize Phoenix AI evaluation/monitoring
  • Jupyter Notebook experiment environment