From c86992f0c644f4870b7d418fae47996e683ab87f Mon Sep 17 00:00:00 2001 From: Thiago-Pio-Autonomy Date: Tue, 8 Sep 2026 22:56:18 -0300 Subject: [PATCH 01/19] EDGE-642: record a decision for every occurrence of both words The rename can only be verified against a complete inventory, so the inventory comes before any page is touched. FR17 and FR20 ask for a decision on every occurrence of "orchestrator" and "device", including the ones that stay, and this is the evidence for AC05. Writing a reason 1237 times would produce something nobody reads. So the census carries one row per occurrence with a decision code, and the reason is written once per code in the legend. Fourteen codes cover everything; 520 occurrences change and 717 stay. Two findings worth naming. There is a seventh sense of "device" that the demand's framework does not have: in the Editor's build-and-run pages the word means the PLC or runtime the editor is connected to, and that target can be physical hardware, so renaming those 101 occurrences to vPLC would make the pages wrong for anyone running a real PLC. They stay. And two senses the framework does carry, the software-engineering sense of orchestrator and the VPP licensed device, do not occur in this repository at all. The classification is rule-based and then audited, which is what earned its keep: the audit caught a rule that turned 21 occurrences of the entity into the agent, and a rule that would have renamed 14 remote-device and device-config paths that must not move. 84 rows are pinned by hand. No documentation changes here. The census excludes its own artefacts, and the pre-existing broken-link baseline of 2 image refs and 4 doc links is recorded so the rewrite cannot be blamed for it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01SEHN6E4oZKbi6ekw1da6A4 --- .gitignore | 4 + docs/exploration/RENAME-DECISION-RECORD.md | 198 +++ docs/exploration/rename-census-overrides.csv | 85 ++ docs/exploration/rename-census.csv | 1238 ++++++++++++++++++ docs/exploration/rename-census.py | 333 +++++ 5 files changed, 1858 insertions(+) create mode 100644 docs/exploration/RENAME-DECISION-RECORD.md create mode 100644 docs/exploration/rename-census-overrides.csv create mode 100644 docs/exploration/rename-census.csv create mode 100644 docs/exploration/rename-census.py diff --git a/.gitignore b/.gitignore index 2c355b8..47c2d42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ # macOS .DS_Store **/.DS_Store + +# Python bytecode from the docs tooling +__pycache__/ +*.pyc diff --git a/docs/exploration/RENAME-DECISION-RECORD.md b/docs/exploration/RENAME-DECISION-RECORD.md new file mode 100644 index 0000000..5012add --- /dev/null +++ b/docs/exploration/RENAME-DECISION-RECORD.md @@ -0,0 +1,198 @@ +# Terminology rename: decision record for user-docs + +Internal working document. Not part of the published documentation and not in `_config.json`. + +Demand [EDGE-633](https://autonomylogic.atlassian.net/browse/EDGE-633), subtask +[EDGE-642](https://autonomylogic.atlassian.net/browse/EDGE-642). Specification in section 8.5 of the +Requirements Gathering, FR17 to FR22. Risk assessment: Cybersecurity Risk Assessment - Ecosystem +terminology rename - User Docs. + +This record satisfies **FR17** and **FR20**: every occurrence of "orchestrator" and "device" in this +repository carries a recorded decision, including the ones that stay unchanged. It is the evidence +for **AC05**. + +Measured against `origin/development` at `79c4faa`. + +## What the rename is + +| Before | After | +|---|---| +| Orchestrator, the parent entity | **Device** | +| Device, the child entity | **vPLC** (plural **vPLCs**, lowercase v, uppercase PLC) | +| Orchestrator Agent | **Device Agent** | +| The platform entity, named inside the OpenPLC Editor docs | **Edge Device** / **Edge Devices** | + +The Editor's own `Device` node keeps its name, because it means the PLC target being programmed, +which is a different concept (BR06, FR09). + +## How a decision gets recorded without 1237 sentences + +`exploration/rename-census.csv` holds **one row per occurrence**: file, line, column, the word, the +decision code, the id of the rule that assigned it, whether the decision is *changes* or *stays*, and +140 characters of context. + +The **reason** is written once per code, in the legend below. A row carries the code. That is the +whole trick: the reason for keeping "remote device" is one sentence, not 184 copies of one sentence. + +The census is reproducible: `python3 exploration/rename-census.py` from `docs/`. + +## The legend + +Fourteen codes cover all 1237 occurrences. Two further codes are defined and legitimately empty. + +### Codes whose occurrences must not survive the rewrite + +| Code | n | Sense | Decision and reason | +|---|---|---|---| +| `O-ENTITY` | 272 | orchestrator = the parent product entity | **-> Device.** The rename itself (BR01) | +| `D-VPLC` | 93 | device = the child entity, the virtual PLC | **-> vPLC.** The rename itself (BR02, sense 1) | +| `O-EDGEDEV` | 68 | the platform entity named inside the Editor docs, including both halves of the Editor's screen label "Device Orchestrators" | **-> Edge Device / Edge Devices.** The Editor already uses "Device" for the PLC target, so the platform entity needs the qualifier to stay distinguishable (BR05, FR10) | +| `O-PATH` | 66 | a path, link target or image filename carrying "orchestrator" | **Rewritten by the section move** (FR18) | +| `O-AGENT` | 11 | the orchestrator agent, the daemon on the customer machine | **-> Device Agent** (BR04) | +| `D-PATH` | 10 | a path, link target or image filename where "device" means the child entity | **Renamed to vplc** (FR18) | +| | **520** | | | + +### Codes whose occurrences must survive the rewrite unchanged + +| Code | n | Sense | Decision and reason | +|---|---|---|---| +| `D-REMOTE` | 184 | remote device: a Modbus master, or an EtherCAT bus or slave device | **Stays.** A different concept, and the word is the industry's, not ours (sense 4) | +| `D-EDITORNODE` | 145 | the Editor's `Device` node and its Device Configuration screens: board selection, pin mapping, communication settings | **Stays.** It means the PLC target being programmed, not the platform entity. This is also why the on-disk `devices/` directory is not renamed (BR06, FR09, sense 3) | +| `X-HIST` | 125 | a dated historical record: the three internal planning documents under `exploration/`, and the changelog entries in `changelog-link.md` | **Stays.** These say what was true, or what a release actually said, at a past date. Renaming them would falsify a record. The planning documents are outside the navigation and already name sections that no longer exist | +| `D-TARGET` | 101 | device = the PLC or runtime the editor is connected to | **Stays. SEVENTH SENSE, absent from the original framework.** The target can be a vPLC or physical hardware, so calling it a vPLC would make these pages wrong for anyone running a real PLC. 99 of the 101 sit in `openplc-editor/building-deploying/` | +| `D-HOST` | 90 | device = the machine the agent runs on, written today as "your edge device" | **Stays as a word.** This is the sense the new vocabulary promotes, so it gets a consistency pass rather than a rename (sense 2) | +| `D-LITERAL` | 33 | a string quoted verbatim from a product interface or message, a CLI subcommand, or the on-disk `devices/` project directory | **Stays byte-identical.** Quoting it differently would misreport what the screen says or print a command that does not work (BR09) | +| `D-PLAIN` | 29 | the plain networking or hardware sense, ordinary English, including "every device" meaning the reader's own browser session | **Stays** (sense 5) | +| `O-LITERAL` | 10 | a literal the software still emits or resolves: the container name, the image reference, the repository URL, and the log line `Unknown orchestrator` | **Stays byte-identical.** These name components that keep their names. Changing them would print an instruction that does not work (BR09, BR13) | +| | **717** | | | + +### Defined and legitimately empty + +| Code | n | Why it is empty | +|---|---|---| +| `O-SE` | 0 | The ordinary software-engineering sense of "orchestrator" (BR07). It exists in the code of other repositories, `library-build-orchestrator.ts` among them, which is what RSK01 is about. **It does not occur in this repository at all**, so BR07 has nothing to protect here | +| `D-LICENSE` | 0 | The VPP licensed device, a physical hardware unit with a serial anchor (BR12, sense 6). **user-docs does not document VPP licensing**, so this sense never appears | + +## Where the occurrences are + +| Area | O-ENTITY | D-REMOTE | D-EDITORNODE | X-HIST | D-TARGET | D-VPLC | D-HOST | O-EDGEDEV | O-PATH | D-LITERAL | D-PLAIN | O-AGENT | D-PATH | O-LITERAL | total | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `openplc-editor` | - | 164 | 136 | - | 101 | - | 28 | 67 | 7 | 26 | 3 | 1 | - | - | 533 | +| `platform` | 158 | 2 | 7 | - | - | 52 | 25 | - | 36 | 6 | 14 | 3 | 7 | 3 | 313 | +| `exploration` | - | - | - | 124 | - | - | - | - | - | - | - | - | - | - | 124 | +| `getting-started` | 51 | 18 | 2 | - | - | 13 | 19 | 1 | 9 | - | 4 | 5 | 2 | - | 124 | +| `troubleshooting` | 30 | - | - | - | - | 6 | 13 | - | 8 | 1 | 4 | - | - | 7 | 69 | +| `reference` | 13 | - | - | - | - | 6 | 4 | - | 3 | - | 2 | 2 | - | - | 30 | +| `plans-and-billing` | 12 | - | - | - | - | 11 | - | - | 1 | - | - | - | 1 | - | 25 | +| `account` | 6 | - | - | - | - | 4 | - | - | - | - | 2 | - | - | - | 12 | +| docs root | 2 | - | - | 1 | - | 1 | 1 | - | 2 | - | - | - | - | - | 7 | +| **total** | **272** | **184** | **145** | **125** | **101** | **93** | **90** | **68** | **66** | **33** | **29** | **11** | **10** | **10** | **1237** | + +Read the `openplc-editor` row as the reason the rename is smaller than the raw count suggests: 533 of +the 1237 occurrences live there, and only 75 of those change. + +**57 of the 182 files** contain at least one occurrence that changes. 99 files contain at least one +occurrence of either word; 83 files contain neither. + +## The nine literals that must survive byte-identical + +Everything else in this repository is prose. These are not, and rewriting one of them would hand a +customer an instruction that fails. + +| Where | Literal | +|---|---| +| `platform/orchestrators/managing-orchestrators.md:49,50` | `docker stop orchestrator-agent`, `docker start orchestrator-agent` | +| `platform/orchestrators/overview.md:36` | `https://github.com/Autonomy-Logic/orchestrator-agent` | +| `troubleshooting/orchestrator-not-connecting.md:22` | `ghcr.io/autonomy-logic/orchestrator-agent` | +| `troubleshooting/orchestrator-not-connecting.md:53,59,65,85` | `docker ps \| grep`, `docker start`, `docker logs --tail 100`, `docker restart`, each on `orchestrator-agent` | +| `troubleshooting/orchestrator-not-connecting.md:106` | `docker logs orchestrator-agent` | + +The tenth `O-LITERAL` row is `orchestrator-not-connecting.md:76`, the agent log line quoted as +`"Unauthorized" or "Unknown orchestrator"`. It stays for the same reason: the agent still emits it. +Per BR13 only installer and uninstaller feedback text moves; ordinary runtime log strings do not. + +## Method, and what it is worth + +The classification is **rule-based and then audited**, not pattern-replaced. + +- 1153 rows were assigned by 17 ordered rules, keyed on the file, the position of the match and the + text touching it. +- **84 rows were read individually and pinned** in `exploration/rename-census-overrides.csv`, which + wins over the rules. 67 of those were rows no rule could classify; the other 17 were rows a rule + classified wrongly, found by auditing. +- The audit is what earned its keep. Two rules were wrong in a way that mattered and were fixed: + - The agent rule matched the word "agent" anywhere in the 140-character window, which turned 21 + occurrences of the entity into the daemon. It now fires only when "agent" touches the match. + - The path rule renamed every link and image path containing "device", which would have renamed + **14 remote-device and device-config paths** that must not move. + A third fix added a rule for the Editor's `Device Orchestrators` label, whose two words are one + label and move together; 7 occurrences of its "Device" half had been filed under senses that stay. + +A fourth fix closed a hole rather than a misclassification: an unclassified row sitting inside a +fenced code block used to acquire a literal code from the fallback instead of being reported. One row +had been masked that way. Unclassified rows now survive the fallback and are reported, so the census +cannot quietly claim to be complete. + +The census also excludes this demand's own two artefacts, which are full of both words by +construction; without that it would measure itself and report 1306. + +**What is exact:** the *changes* or *stays* decision on all 1237 rows, and the completeness of the +census. An independent count of raw matches returns 1237, equal to the number of rows, and +`--verify` currently fails with 520 changes-rows outstanding, which is what proves the Phase 10 gate +actually fires. + +**What is approximate:** among the *stays* codes, a small number of rows sit on the boundary between +two senses that both stay, most often `D-EDITORNODE` against `D-REMOTE` where a page discusses the +Editor's Device node and remote devices in one sentence. The decision on those rows is right and the +sense is arguable. No row's *decision* depends on resolving one. + +## Corrections to the demand's documents + +Found while measuring, and carried into the change records at pass 2: + +1. The Requirements Gathering says **182 documentation pages**. That is a file count. Only **167** are + reachable from `_config.json`. The other 15 are the 3 internal planning documents, 7 section + `README.md` files, `index.md`, and the 4 pages of `openplc-editor/hardware-configuration/`. +2. It says **59 files mention "orchestrator" and 82 mention "device"**. Measured: **60 and 84**, or 57 + and 81 excluding `exploration/`. +3. The Cybersecurity Risk Assessment names "the Node network isolation model" as security-relevant + guidance carried by this repository. **There are zero mentions of Autonomy Node in user-docs**; + every match for "node" is an OPC-UA node or a project-tree node. The security-relevant set is + `platform/vplcs/network-modes.md`, `platform/vplcs/overview.md`, + `platform/orchestrators/installing-the-agent.md`, + `troubleshooting/orchestrator-not-connecting.md` and `troubleshooting/vplc-stuck-stopped.md`. + +## Defects found that predate this demand + +Reported, not fixed here, so they can be tracked separately. + +1. **`openplc-editor/hardware-configuration/` is orphaned from the navigation.** Four pages, + `board-selection`, `communication-settings`, `device-config-overview` and `pin-mapping`, are absent + from `_config.json` and unreachable from it. +2. **Six broken links**, which is the baseline the rename must not extend: + - `openplc-editor/programming-languages/ladder-diagram/function-blocks-ld.md` points at + `../images/block-properties-ton.png` and `../images/block-properties-ton-eneno.png`; the files + are two levels up, in `openplc-editor/images/` + - `openplc-editor/communication/modbus/addressing.md` -> `../../device-config-overview` + - `openplc-editor/task-configuration/instance-management.md` -> + `../working-with-variables/global-variables-editor` + - `changelog-link` from `platform/autonomy-ai-assistant.md` and `platform/notifications.md` +3. **`docs/platform-features/` is a dead directory**: 7 images, no markdown, and no page references + any of them. It is the leftover of a `platform-features/orchestrator-management/` section that the + planning document still describes. +4. **39 images are referenced by no page.** Handled in the phase that deletes them. +5. **Two Editor UI generations coexist in the screenshots.** Older captures show the project tree as + `Device > Configuration`; newer ones show `Devices > Orchestrators`. The documentation is already + visually inconsistent, independently of this demand. Filed separately. + +## Files + +| File | What it is | +|---|---| +| `rename-census.csv` | The census: 1237 rows, one per occurrence | +| `rename-census-overrides.csv` | The 84 hand-pinned rows, which win over the rules | +| `rename-census.py` | Generates the census, and re-verifies it with `--verify` | +| `RENAME-DECISION-RECORD.md` | This document | + +The image map required by FR21 is produced separately, in its own phase, and lands as +`RENAME-IMAGE-MAP.md`. diff --git a/docs/exploration/rename-census-overrides.csv b/docs/exploration/rename-census-overrides.csv new file mode 100644 index 0000000..cca72c9 --- /dev/null +++ b/docs/exploration/rename-census-overrides.csv @@ -0,0 +1,85 @@ +file,line,col,code,rule +plans-and-billing/ai-credit-units.md,78,31,D-VPLC,H01 +plans-and-billing/pricing.md,11,53,D-VPLC,H01 +plans-and-billing/pricing.md,30,21,D-VPLC,H01 +plans-and-billing/pricing.md,40,22,D-VPLC,H01 +plans-and-billing/pricing.md,50,25,D-VPLC,H01 +plans-and-billing/pricing.md,62,32,D-VPLC,H01 +plans-and-billing/pricing.md,72,33,D-VPLC,H01 +plans-and-billing/pricing.md,84,35,D-VPLC,H01 +platform/autonomy-ai-assistant.md,71,96,D-VPLC,H01 +platform/notifications.md,72,34,D-PLAIN,H02 +platform/organizations/leaving-and-deleting.md,19,59,D-VPLC,H01 +platform/organizations/members-and-roles.md,47,67,D-VPLC,H01 +platform/vplcs/connecting-from-editor.md,3,153,D-EDITORNODE,H03 +platform/vplcs/connecting-from-editor.md,8,15,D-EDITORNODE,H03 +platform/vplcs/connecting-from-editor.md,8,70,D-EDITORNODE,H03 +platform/vplcs/connecting-from-editor.md,10,129,D-VPLC,H01 +platform/vplcs/creating-a-vplc.md,60,95,D-LITERAL,H04 +platform/vplcs/creating-a-vplc.md,62,44,D-PLAIN,H02 +platform/vplcs/creating-a-vplc.md,64,71,D-PLAIN,H02 +platform/vplcs/creating-a-vplc.md,65,17,D-PLAIN,H02 +platform/vplcs/creating-a-vplc.md,67,64,D-LITERAL,H04 +platform/vplcs/network-modes.md,35,134,D-PLAIN,H02 +platform/vplcs/network-modes.md,49,50,D-PLAIN,H02 +platform/vplcs/network-modes.md,88,33,D-PLAIN,H02 +platform/vplcs/network-modes.md,89,74,D-PLAIN,H02 +platform/vplcs/vplc-detail.md,30,28,D-VPLC,H01 +platform/projects/overview.md,3,305,D-EDITORNODE,H03 +platform/orchestrators/installing-the-agent.md,59,13,D-HOST,H05 +platform/orchestrators/installing-the-agent.md,97,28,D-HOST,H05 +platform/orchestrators/managing-orchestrators.md,43,12,D-HOST,H05 +platform/orchestrators/orchestrator-detail.md,3,133,D-VPLC,H01 +platform/orchestrators/orchestrator-detail.md,11,6,D-VPLC,H01 +platform/orchestrators/orchestrator-detail.md,16,53,D-VPLC,H01 +platform/orchestrators/orchestrator-detail.md,19,24,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,5,71,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,5,107,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,29,18,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,31,15,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,35,6,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,37,3,D-VPLC,H01 +platform/orchestrators/orchestrators-list.md,43,54,D-VPLC,H01 +platform/orchestrators/overview.md,40,28,D-HOST,H05 +troubleshooting/orchestrator-not-connecting.md,71,40,D-HOST,H05 +troubleshooting/orchestrator-not-connecting.md,82,8,D-HOST,H05 +troubleshooting/plan-limit-reached.md,52,3,D-VPLC,H01 +troubleshooting/vplc-stuck-stopped.md,22,13,D-HOST,H05 +troubleshooting/vplc-stuck-stopped.md,39,79,D-PLAIN,H02 +troubleshooting/vplc-stuck-stopped.md,48,44,D-PLAIN,H02 +troubleshooting/vplc-stuck-stopped.md,56,5,D-PLAIN,H02 +troubleshooting/vplc-stuck-stopped.md,78,21,D-PLAIN,H02 +getting-started/account-and-signup.md,38,68,D-VPLC,H01 +getting-started/account-and-signup.md,39,107,D-VPLC,H01 +getting-started/account-and-signup.md,50,159,D-VPLC,H01 +getting-started/quick-start.md,11,112,D-PLAIN,H02 +getting-started/quick-start.md,15,54,D-HOST,H05 +getting-started/quick-start.md,24,99,D-VPLC,H01 +getting-started/quick-start.md,261,25,D-EDITORNODE,H03 +getting-started/quick-start.md,262,43,O-EDGEDEV,H06 +getting-started/quick-start.md,325,21,D-PLAIN,H02 +getting-started/what-is-autonomy-edge.md,10,75,D-HOST,H05 +getting-started/what-is-autonomy-edge.md,20,25,D-HOST,H05 +getting-started/what-is-autonomy-edge.md,43,50,D-VPLC,H01 +account/settings/account.md,13,76,D-VPLC,H01 +account/settings/usage.md,51,5,D-VPLC,H01 +reference/glossary.md,35,42,D-VPLC,H01 +reference/glossary.md,55,51,D-VPLC,H01 +reference/glossary.md,107,43,D-VPLC,H01 +platform/vplcs/connecting-from-editor.md,44,8,O-AGENT,H07 +platform/vplcs/network-modes.md,7,251,D-PLAIN,H02 +platform/vplcs/network-modes.md,22,36,D-PLAIN,H02 +platform/vplcs/network-modes.md,25,85,D-PLAIN,H02 +platform/vplcs/overview.md,11,194,D-HOST,H05 +platform/vplcs/vplc-detail.md,34,188,D-PLAIN,H02 +platform/projects/project-page.md,13,173,D-EDITORNODE,H03 +platform/projects/overview.md,46,61,D-EDITORNODE,H03 +getting-started/quick-start.md,114,199,D-HOST,H05 +getting-started/what-is-autonomy-edge.md,18,55,D-HOST,H05 +getting-started/what-is-autonomy-edge.md,29,146,D-HOST,H05 +reference/faq.md,73,104,D-PLAIN,H02 +changelog-link.md,24,53,X-HIST,H08 +platform/projects/overview.md,16,20,D-EDITORNODE,H03 +openplc-editor/custom-languages/python-blocks/python-restrictions.md,57,84,D-TARGET,H09 +openplc-editor/custom-languages/python-blocks/python-restrictions.md,58,52,D-TARGET,H09 +troubleshooting/vplc-stuck-stopped.md,27,22,D-VPLC,H10 diff --git a/docs/exploration/rename-census.csv b/docs/exploration/rename-census.csv new file mode 100644 index 0000000..48ca89b --- /dev/null +++ b/docs/exploration/rename-census.csv @@ -0,0 +1,1238 @@ +file,line,col,word,code,rule,decision,context +changelog-link.md,24,53,Device,X-HIST,H08,stays,"- **v1.2.3** (February 25, 2026): **Fixed** Add New Device modal layout on smaller screens." +index.md,19,6,Orchestrator,O-ENTITY,R05,changes,- **[Orchestrators](platform/orchestrators/overview)**: The cloud-managed agent that ru +index.md,19,30,orchestrator,O-PATH,R02,changes,- **[Orchestrators](platform/orchestrators/overview)**: The cloud-managed agent that runs on your edge device. +index.md,19,104,device,D-HOST,R15,stays,estrators/overview)**: The cloud-managed agent that runs on your edge device. +index.md,20,11,device,D-VPLC,R18,changes,- **[vPLC devices](platform/vplcs/overview)**: Virtual PLC containers that host your r +index.md,53,6,Orchestrator,O-ENTITY,R05,changes,- **[Orchestrator not connecting](troubleshooting/orchestrator-not-connecting)** +index.md,53,51,orchestrator,O-PATH,R02,changes,- **[Orchestrator not connecting](troubleshooting/orchestrator-not-connecting)** +openplc-editor/README.md,5,321,device,D-HOST,R15,stays,"write programs, configure variables, set up tasks, and deploy to your devices." +openplc-editor/README.md,14,153,Device,D-EDITORNODE,R17,stays,"ct tree: Functions, Function Blocks, Programs, Data Types, Resources, Devices, and Servers." +openplc-editor/README.md,36,91,device,D-EDITORNODE,R17,stays,uilding-deploying/deployment-vplc): Deploy your compiled program to a device. +openplc-editor/README.md,41,81,device,D-HOST,R15,stays,"cting to Runtimes**](connecting-to-runtimes): Connect the IDE to your devices, authenticate, and control program execution." +openplc-editor/README.md,50,17,orchestrator,O-EDGEDEV,R04,changes,2. At least one orchestrator registered with an active device. See [Managing Device Status](../pla +openplc-editor/README.md,50,56,device,D-EDITORNODE,R17,stays,2. At least one orchestrator registered with an active device. See [Managing Device Status](../platform/vplcs/vplc-detail) for setu +openplc-editor/README.md,50,78,Device,D-EDITORNODE,R17,stays,east one orchestrator registered with an active device. See [Managing Device Status](../platform/vplcs/vplc-detail) for setup instructions. +openplc-editor/connecting-to-runtimes.md,5,47,Device,O-EDGEDEV,R09,changes,"When you're ready to run on a vPLC, use the **Device Orchestrators** screen to pick one and connect. This page walks throu" +openplc-editor/connecting-to-runtimes.md,5,54,Orchestrator,O-EDGEDEV,R04,changes,"When you're ready to run on a vPLC, use the **Device Orchestrators** screen to pick one and connect. This page walks through that flow:" +openplc-editor/connecting-to-runtimes.md,7,28,orchestrator,O-EDGEDEV,R04,changes,"> If you don't yet have an orchestrator or a vPLC, see **[Orchestrators](../platform/orchestrators/overview)*" +openplc-editor/connecting-to-runtimes.md,7,59,Orchestrator,O-EDGEDEV,R04,changes,"> If you don't yet have an orchestrator or a vPLC, see **[Orchestrators](../platform/orchestrators/overview)** and **[Creating a vPLC](../pl" +openplc-editor/connecting-to-runtimes.md,7,86,orchestrator,O-PATH,R02,changes,"yet have an orchestrator or a vPLC, see **[Orchestrators](../platform/orchestrators/overview)** and **[Creating a vPLC](../platform/vplcs/creating-a-vpl" +openplc-editor/connecting-to-runtimes.md,9,13,Orchestrator,O-EDGEDEV,R04,changes,## Open the Orchestrators screen +openplc-editor/connecting-to-runtimes.md,11,31,Device,D-EDITORNODE,R17,stays,"In the project tree, expand **Device** and click **Orchestrators**. The Orchestrators editor opens as a ta" +openplc-editor/connecting-to-runtimes.md,11,52,Orchestrator,O-EDGEDEV,R04,changes,"In the project tree, expand **Device** and click **Orchestrators**. The Orchestrators editor opens as a tab in the central editing ar" +openplc-editor/connecting-to-runtimes.md,11,73,Orchestrator,O-EDGEDEV,R04,changes,"the project tree, expand **Device** and click **Orchestrators**. The Orchestrators editor opens as a tab in the central editing area." +openplc-editor/connecting-to-runtimes.md,13,3,Device,O-EDGEDEV,R09,changes,![Device Orchestrators screen with OpenPLC Simulator selected by default at th +openplc-editor/connecting-to-runtimes.md,13,10,Orchestrator,O-EDGEDEV,R04,changes,"![Device Orchestrators screen with OpenPLC Simulator selected by default at the top, follow" +openplc-editor/connecting-to-runtimes.md,13,120,orchestrator,O-EDGEDEV,R04,changes,"tor selected by default at the top, followed by the user's registered orchestrators as expandable cards](images/orchestrators-screen.png)" +openplc-editor/connecting-to-runtimes.md,13,162,orchestrator,O-PATH,R02,changes,ed by the user's registered orchestrators as expandable cards](images/orchestrators-screen.png) +openplc-editor/connecting-to-runtimes.md,17,47,orchestrator,O-EDGEDEV,R04,changes,"Below the Simulator, each card represents one orchestrator: its name, its online status, and a chevron to expand the list of vPL" +openplc-editor/connecting-to-runtimes.md,21,12,orchestrator,O-EDGEDEV,R04,changes,"Expand the orchestrator. The vPLCs running on it appear as child rows, each with its name and" +openplc-editor/connecting-to-runtimes.md,23,3,Device,O-EDGEDEV,R09,changes,"![Device Orchestrators screen with SLM-RP4 expanded, showing vPLC 01 with a gr" +openplc-editor/connecting-to-runtimes.md,23,10,Orchestrator,O-EDGEDEV,R04,changes,"![Device Orchestrators screen with SLM-RP4 expanded, showing vPLC 01 with a green Running s" +openplc-editor/connecting-to-runtimes.md,23,106,orchestrator,O-PATH,R02,changes,"SLM-RP4 expanded, showing vPLC 01 with a green Running status](images/orchestrators-expanded.png)" +openplc-editor/connecting-to-runtimes.md,27,63,orchestrator,O-EDGEDEV,R04,changes,"![vPLC 01 selected, with the Connect button visible below the orchestrator cards](images/orchestrators-vplc-selected.png)" +openplc-editor/connecting-to-runtimes.md,27,90,orchestrator,O-PATH,R02,changes,with the Connect button visible below the orchestrator cards](images/orchestrators-vplc-selected.png) +openplc-editor/connecting-to-runtimes.md,47,7,orchestrator,O-EDGEDEV,R04,changes,- The orchestrator card now shows the vPLC with a **Connected** status badge. +openplc-editor/connecting-to-runtimes.md,49,5,Orchestrator,O-EDGEDEV,R04,changes,![Orchestrators editor showing a vPLC with the Connected status badge](images/vplc-c +openplc-editor/connecting-to-runtimes.md,55,7,Orchestrator,O-EDGEDEV,R04,changes,"- The Orchestrators card shows live runtime stats (CPU, memory, uptime) for the connecte" +openplc-editor/connecting-to-runtimes.md,65,76,Orchestrator,O-EDGEDEV,R04,changes,on't refresh anything by hand. Updates land in the console and on the Orchestrators card automatically. +openplc-editor/connecting-to-runtimes.md,69,25,Orchestrator,O-EDGEDEV,R04,changes,"Click **Logout** in the Orchestrators card. The vPLC keeps running, disconnecting only ends your editor's" +openplc-editor/connecting-to-runtimes.md,73,7,Orchestrator,O-EDGEDEV,R04,changes,**The Orchestrators screen is empty.** +openplc-editor/connecting-to-runtimes.md,74,12,orchestrator,O-EDGEDEV,R04,changes,Verify the orchestrator is online in the platform dashboard. The card only appears if the pla +openplc-editor/connecting-to-runtimes.md,83,63,orchestrator,O-EDGEDEV,R04,changes,"The connection may have dropped during the build. Confirm the orchestrator is still online, then retry. The console will carry the specific tran" +openplc-editor/overview.md,17,98,orchestrator,O-EDGEDEV,R04,changes,"er with the **built-in Simulator**, or connect to a real vPLC on an **orchestrator**, deploy your build, and watch live variable values in the **debugge" +openplc-editor/overview.md,40,116,device,D-EDITORNODE,R17,stays,"imes)** is how you get from ""I wrote a program"" to ""it's running on a device""." +openplc-editor/working-with-variables/global-variable-lists.md,20,138,Device,D-REMOTE,R13,stays,"on Block, Program, Data Type, Global Variable List, Server and Remote Device. Global Variable List is highlighted and its side panel is open, with" +openplc-editor/working-with-variables/variables-editor.md,56,39,device,D-EDITORNODE,R17,stays,"`Retain` on its own does nothing. The device also needs somewhere to keep the values, which is set up on the **[Pe" +openplc-editor/working-with-variables/variables-editor.md,103,61,device,D-REMOTE,R13,stays,"Variables that come from a producer, a Modbus master remote device, an EtherCAT slave channel, a board pin-map on the desktop editor, ha" +openplc-editor/working-with-variables/variables-editor.md,105,50,device,D-REMOTE,R13,stays,"If the producer goes away (you delete the remote device or the EtherCAT channel), the variable becomes **orphaned**. The edit" +openplc-editor/library-manager/creating-a-library.md,18,149,device,D-LITERAL,R10,stays,"eady in place: a `functions/` folder, a `function-blocks/` folder, a `devices/` folder, and a **`library.json`** manifest." +openplc-editor/library-manager/publishing-a-library.md,17,91,device,D-EDITORNODE,R17,stays,"rary project page. The file list includes functions, function-blocks, devices, build, project.json and library.json, and a ""Publish library"" butto" +openplc-editor/standard-function-blocks/other-blocks.md,418,104,device,D-REMOTE,R13,stays,mmunication/README): Set up Modbus and other industrial protocols for device-to-device communication +openplc-editor/standard-function-blocks/other-blocks.md,418,114,device,D-REMOTE,R13,stays,n/README): Set up Modbus and other industrial protocols for device-to-device communication +openplc-editor/building-deploying/debugger.md,61,109,Orchestrator,O-EDGEDEV,R04,changes,tion dropped. The console shows a transport error. Reconnect from the Orchestrators panel. +openplc-editor/building-deploying/debugger.md,63,71,Orchestrator,O-EDGEDEV,R04,changes,**The bug icon is grey.** You're not connected to a runtime. Open the Orchestrators screen and connect first. +openplc-editor/building-deploying/deployment-vplc.md,8,15,orchestrator,O-EDGEDEV,R04,changes,- An **online orchestrator** with at least one **running vPLC** on it. See **[Orchestrators](../ +openplc-editor/building-deploying/deployment-vplc.md,8,79,Orchestrator,O-EDGEDEV,R04,changes,nline orchestrator** with at least one **running vPLC** on it. See **[Orchestrators](../../platform/orchestrators/overview)** in the platform docs. +openplc-editor/building-deploying/deployment-vplc.md,8,109,orchestrator,O-PATH,R02,changes,east one **running vPLC** on it. See **[Orchestrators](../../platform/orchestrators/overview)** in the platform docs. +openplc-editor/building-deploying/deployment-vplc.md,37,104,orchestrator,O-EDGEDEV,R04,changes,rror.** The connection dropped between compile and upload. Verify the orchestrator is still online and reconnect. +openplc-editor/building-deploying/headless-cli.md,3,120,device,D-TARGET,R16,stays,"terminal, with no window: create a project, build it, upload it to a device, and drive a live debug session against real hardware. It exists for" +openplc-editor/building-deploying/headless-cli.md,11,3,Device,D-TARGET,R16,stays,"| Device search, serial-port list | `openplc-cli devices` |" +openplc-editor/building-deploying/headless-cli.md,11,50,device,D-LITERAL,R10,stays,"| Device search, serial-port list | `openplc-cli devices` |" +openplc-editor/building-deploying/headless-cli.md,16,112,device,D-TARGET,R16,stays,"enPLC Editor application, which is what supplies the compiler and the device transports it drives. It runs on a machine with the desktop editor in" +openplc-editor/building-deploying/headless-cli.md,16,257,device,D-TARGET,R16,stays,"nstalled, including a headless CI machine, and works against the same devices as the editor." +openplc-editor/building-deploying/headless-cli.md,76,13,device,D-LITERAL,R16+fenced,stays,openplc-cli devices # no switches needed from here on +openplc-editor/building-deploying/headless-cli.md,94,52,device,D-LITERAL,R10,stays,"Redirection and piping work normally (`openplc-cli devices > devices.json`), which is what matters for a test harness." +openplc-editor/building-deploying/headless-cli.md,94,62,device,D-LITERAL,R10,stays,"Redirection and piping work normally (`openplc-cli devices > devices.json`), which is what matters for a test harness." +openplc-editor/building-deploying/headless-cli.md,102,13,device,D-LITERAL,R16+fenced,stays,openplc-cli devices [--timeout ] +openplc-editor/building-deploying/headless-cli.md,110,6,device,D-LITERAL,R10,stays,### `devices` +openplc-editor/building-deploying/headless-cli.md,112,135,device,D-REMOTE,R13,stays,the serial ports on this machine. The same two searches the editor's device picker and port dropdown run. +openplc-editor/building-deploying/headless-cli.md,115,13,device,D-LITERAL,R16+fenced,stays,openplc-cli devices +openplc-editor/building-deploying/headless-cli.md,116,13,device,D-LITERAL,R16+fenced,stays,openplc-cli devices --timeout 5000 +openplc-editor/building-deploying/headless-cli.md,142,36,device,D-TARGET,R16,stays,"Builds, then sends the result to a device. Give it either a network address or a serial port:" +openplc-editor/building-deploying/headless-cli.md,149,29,device,D-HOST,R15,stays,"Targets that compile on the device itself refuse to build while the PLC is **RUNNING**, exactly as the e" +openplc-editor/building-deploying/headless-cli.md,149,140,device,D-TARGET,R16,stays,"LC is **RUNNING**, exactly as the editor warns: building on a running device can stall the build or make the program miss its scan deadlines. `--y" +openplc-editor/building-deploying/headless-cli.md,180,27,device,D-TARGET,R16,stays,| `7` | Target error: the device reported a failure | +openplc-editor/building-deploying/headless-cli.md,186,3,device,D-TARGET,R16,stays,A device reached through its runtime API needs them. A board flashed over USB +openplc-editor/building-deploying/headless-cli.md,279,61,device,D-TARGET,R16,stays,| `--upload-if-needed` | `debug open` | Upload first if the device's program does not match | +openplc-editor/building-deploying/headless-cli.md,313,84,device,D-TARGET,R16,stays,"is the thing to branch on. A compile error gives `4`, an unreachable device `5`, refused credentials `6`:" +openplc-editor/building-deploying/persistent-storage.md,8,13,device,D-TARGET,R16,stays,"2. Tell the device where to keep the values, on the **Persistent Storage** screen." +openplc-editor/building-deploying/persistent-storage.md,22,66,device,D-TARGET,R16,stays,"| **Retain** | `VAR RETAIN` | Preserved across a restart, if the device has somewhere to keep it. |" +openplc-editor/building-deploying/persistent-storage.md,32,42,Device,D-TARGET,R16,stays,**Persistent Storage** lives under the **Device** branch of the project tree. +openplc-editor/building-deploying/persistent-storage.md,34,29,Device,D-TARGET,R16,stays,"![The project tree with the Device branch expanded, showing Configuration, Persistent Storage and User M" +openplc-editor/building-deploying/persistent-storage.md,36,165,device,D-TARGET,R16,stays,"saved with the project like everything else in it, and they reach the device when you upload. There is nothing to connect to and nothing to config" +openplc-editor/building-deploying/persistent-storage.md,38,100,device,D-HOST,R15,stays,"en. A heading and explanatory line, a ""Keep retained variables on the device"" checkbox with its help text, a File location field showing the place" +openplc-editor/building-deploying/persistent-storage.md,40,34,device,D-HOST,R15,stays,**Keep retained variables on the device** +openplc-editor/building-deploying/persistent-storage.md,46,25,device,D-HOST,R15,stays,"An absolute path on the device. **Leave it empty and the runtime uses its own default**, which is th" +openplc-editor/building-deploying/persistent-storage.md,46,181,device,D-TARGET,R16,stays,"swer almost always: the editor does not have to know how a particular device lays out its filesystem, and the default is a location the runtime al" +openplc-editor/building-deploying/persistent-storage.md,61,151,device,D-TARGET,R16,stays,"they are kept when you save the project, and they are applied to the device the next time you upload." +openplc-editor/building-deploying/persistent-storage.md,65,9,device,D-TARGET,R16,stays,Where a device can safely keep values across a power cut is a **property of the hard +openplc-editor/building-deploying/persistent-storage.md,87,51,device,D-TARGET,R16,stays,Changing anything here changes the project. **The device keeps using the settings it last received until you upload again.** U +openplc-editor/building-deploying/persistent-storage.md,91,59,device,D-TARGET,R16,stays,"The checkbox reflects **what you configured**, not what a device is doing. A project can have storage switched on while nothing is bei" +openplc-editor/building-deploying/persistent-storage.md,97,7,device,D-TARGET,R16,stays,"**The device log is what tells you the truth.** After the PLC starts, the runtime" +openplc-editor/building-deploying/persistent-storage.md,113,108,device,D-TARGET,R16,stays,"the settings?** They travel with the program, so nothing reaches the device until you do." +openplc-editor/building-deploying/persistent-storage.md,115,16,device,D-TARGET,R16,stays,"5. **Check the device log after a start.** This is the step that distinguishes ""storage is" +openplc-editor/building-deploying/persistent-storage.md,116,98,device,D-HOST,R15,stays,"th, is it still valid?** A path whose directory does not exist on the device is refused when the program is installed. Clear the field to fall bac" +openplc-editor/building-deploying/project-compilation.md,38,102,orchestrator,O-EDGEDEV,R04,changes,"y default, so **Build & Upload** is always available, even without an orchestrator-managed vPLC. The ""upload"" step loads the firmware into the in-browse" +openplc-editor/building-deploying/project-compilation.md,40,128,Orchestrator,O-EDGEDEV,R04,changes,"Upload` and `Clean Upload` are disabled until you reconnect. Click **Orchestrators**, log back in, and they come back. (Or switch back to the Simulator" +openplc-editor/building-deploying/retrieve-project.md,3,70,device,D-TARGET,R16,stays,**File → Retrieve Project from PLC…** downloads the source project a device is holding and opens it in the editor. +openplc-editor/building-deploying/retrieve-project.md,5,243,device,D-TARGET,R16,stays,"upload sends the source project along with the compiled program, the device itself is the copy of last resort." +openplc-editor/building-deploying/retrieve-project.md,13,3,device,D-TARGET,R16,stays,A device therefore holds the project of its **most recent upload**. Two conseq +openplc-editor/building-deploying/retrieve-project.md,15,5,device,D-TARGET,R16,stays,- A device programmed before this feature existed has nothing to retrieve. It st +openplc-editor/building-deploying/retrieve-project.md,16,100,device,D-TARGET,R16,stays,"ads, not edits. If you changed the project after the last upload, the device is holding the older version." +openplc-editor/building-deploying/retrieve-project.md,21,28,device,D-TARGET,R16,stays,2. The editor searches for devices and lists what it finds. +openplc-editor/building-deploying/retrieve-project.md,23,20,device,D-TARGET,R16,stays,4. Sign in to that device. +openplc-editor/building-deploying/retrieve-project.md,26,16,device,D-TARGET,R16,stays,### Choosing a device +openplc-editor/building-deploying/retrieve-project.md,28,77,device,D-LITERAL,R10,stays,"Retrieve Project from PLC dialog. Under the title, the line ""Choose a device to retrieve its stored project. Retrieving requires an administrator" +openplc-editor/building-deploying/retrieve-project.md,28,169,device,D-TARGET,R16,stays,"stored project. Retrieving requires an administrator account on that device."" Below it a count reading ""1 device"" with a Refresh button, and a li" +openplc-editor/building-deploying/retrieve-project.md,28,206,device,D-TARGET,R16,stays,"an administrator account on that device."" Below it a count reading ""1 device"" with a Refresh button, and a list whose single row shows ""PostMergeC" +openplc-editor/building-deploying/retrieve-project.md,30,51,device,D-TARGET,R16,stays,"Each row leads with **the name of the project the device is holding**, and beneath it the device, its location, and when that" +openplc-editor/building-deploying/retrieve-project.md,30,91,device,D-TARGET,R16,stays,"**the name of the project the device is holding**, and beneath it the device, its location, and when that project was stored. That is usually enou" +openplc-editor/building-deploying/retrieve-project.md,36,40,device,D-TARGET,R16,stays,| A project name and a timestamp | The device answered and holds that project | Yes | +openplc-editor/building-deploying/retrieve-project.md,37,44,device,D-TARGET,R16,stays,| **No project stored** (greyed out) | The device answered and has nothing attached | No | +openplc-editor/building-deploying/retrieve-project.md,38,7,device,D-TARGET,R16,stays,| The device name and **project unknown** | The device did not answer the search i +openplc-editor/building-deploying/retrieve-project.md,38,49,device,D-TARGET,R16,stays,| The device name and **project unknown** | The device did not answer the search in time | Yes | +openplc-editor/building-deploying/retrieve-project.md,40,47,device,D-TARGET,R16,stays,"The third case stays selectable on purpose. A device that said nothing has not told you it is empty, so the picker does no" +openplc-editor/building-deploying/retrieve-project.md,42,44,device,D-TARGET,R16,stays,"**Refresh** runs the search again. With no devices at all the list reads *""No devices found. Check the network and try" +openplc-editor/building-deploying/retrieve-project.md,42,79,device,D-TARGET,R16,stays,"h** runs the search again. With no devices at all the list reads *""No devices found. Check the network and try Refresh.""*" +openplc-editor/building-deploying/retrieve-project.md,46,118,device,D-TARGET,R16,stays,"8.2.4. Retrieving a project requires an administrator account on that device."" above Username and Password fields, with ""Sign in and retrieve"" and" +openplc-editor/building-deploying/retrieve-project.md,48,56,device,D-TARGET,R16,stays,**Retrieving requires an administrator account on that device.** A `User`-role account can sign in to the runtime but cannot pull t +openplc-editor/building-deploying/retrieve-project.md,50,39,device,D-TARGET,R16,stays,"If you are **already connected to the device you picked**, this step is skipped entirely and retrieval starts at o" +openplc-editor/building-deploying/retrieve-project.md,52,41,device,D-TARGET,R16,stays,### If you are connected to a different device +openplc-editor/building-deploying/retrieve-project.md,54,163,device,D-REMOTE,R13,stays,".168.2.4 signs you out of it."" with a second line explaining that one device is connected at a time, and a ""Disconnect and continue"" button beside" +openplc-editor/building-deploying/retrieve-project.md,56,36,device,D-TARGET,R16,stays,"The editor holds a session for one device at a time, so signing in to another ends the one you have. Rather tha" +openplc-editor/building-deploying/retrieve-project.md,56,194,device,D-TARGET,R16,stays,"quietly as a side effect of browsing, the dialog stops and names the device you are about to be signed out of. **Disconnect and continue** accept" +openplc-editor/building-deploying/retrieve-project.md,65,121,device,D-TARGET,R16,stays,"waiting for your answer. Behind the prompt, the dialog returns to the device list carrying a message telling you to save or discard first and retr" +openplc-editor/building-deploying/retrieve-project.md,69,7,device,D-TARGET,R16,stays,- **A device that turns out to hold nothing never costs you your open project.** Y +openplc-editor/building-deploying/retrieve-project.md,80,16,device,D-TARGET,R16,stays,"It came from a device, not from a location you chose, so **an ordinary save is refused**:" +openplc-editor/building-deploying/retrieve-project.md,83,27,device,D-TARGET,R16,stays,"> It was retrieved from a device. Use Save As to choose where to keep it, then saving works as usual." +openplc-editor/building-deploying/retrieve-project.md,103,247,device,D-HOST,R15,stays,"ainst it produces a **different program** from the one running on the device, silently. Update it to match before trusting a rebuild." +openplc-editor/building-deploying/retrieve-project.md,109,6,device,D-TARGET,R16,stays,**No devices found.** The search reaches devices through your orchestrator. Check +openplc-editor/building-deploying/retrieve-project.md,109,42,device,D-TARGET,R16,stays,**No devices found.** The search reaches devices through your orchestrator. Check the device is powered and reachable +openplc-editor/building-deploying/retrieve-project.md,109,63,orchestrator,O-EDGEDEV,R04,changes,"**No devices found.** The search reaches devices through your orchestrator. Check the device is powered and reachable, then click **Refresh**. A" +openplc-editor/building-deploying/retrieve-project.md,109,87,device,D-TARGET,R16,stays,"nd.** The search reaches devices through your orchestrator. Check the device is powered and reachable, then click **Refresh**. A device on another" +openplc-editor/building-deploying/retrieve-project.md,109,146,device,D-TARGET,R16,stays,"Check the device is powered and reachable, then click **Refresh**. A device on another subnet may not answer." +openplc-editor/building-deploying/retrieve-project.md,111,3,Device,D-TARGET,R16,stays,"**Devices are listed but every row says ""project unknown"".** The devices were" +openplc-editor/building-deploying/retrieve-project.md,111,66,device,D-TARGET,R16,stays,"**Devices are listed but every row says ""project unknown"".** The devices were found, but the part of the search that asks each one what it ho" +openplc-editor/building-deploying/retrieve-project.md,111,184,orchestrator,O-AGENT,R03,changes,hat asks each one what it holds did not answer. This happens when the orchestrator agent is older than the feature. The list is still usable: select a d +openplc-editor/building-deploying/retrieve-project.md,111,265,device,D-TARGET,R16,stays,"r agent is older than the feature. The list is still usable: select a device and retrieve, and you will find out what it has. Updating the agent r" +openplc-editor/building-deploying/retrieve-project.md,113,28,device,D-TARGET,R16,stays,"**""No project stored"" on a device you know is programmed.** It was last programmed before uploads began" +openplc-editor/building-deploying/retrieve-project.md,115,74,device,D-HOST,R15,stays,"ign-in is refused.** Retrieving needs an administrator account on the device, not merely a valid one." +openplc-editor/building-deploying/retrieve-project.md,121,100,device,D-HOST,R15,stays,"ployment-vplc)** for uploading, which is what puts the project on the device in the first place." +openplc-editor/building-deploying/retrieve-project.md,123,67,device,D-TARGET,R16,stays,- **[Connecting to runtimes](../connecting-to-runtimes)** for how device sessions work. +openplc-editor/building-deploying/runtime-status.md,3,52,device,D-TARGET,R16,stays,"**Runtime Status** answers two questions about the device you are connected to: what it is, and how it is running. It also hold" +openplc-editor/building-deploying/runtime-status.md,3,158,device,D-TARGET,R16,stays,"is, and how it is running. It also holds the one action that needs a device rather than a project, changing the runtime version installed on it." +openplc-editor/building-deploying/runtime-status.md,5,22,Device,D-TARGET,R16,stays,It lives under the **Device** branch of the project tree. +openplc-editor/building-deploying/runtime-status.md,7,73,device,D-TARGET,R16,stays,"The Runtime Status screen. A header reading ""Runtime Status"" with the device name and address beneath it, a ""Change runtime version"" button at the" +openplc-editor/building-deploying/runtime-status.md,9,150,Orchestrator,O-EDGEDEV,R04,changes,"-cycle, EtherCAT and plugin tables used to sit at the bottom of the **Orchestrators** screen in the web editor, and at the bottom of the **Device Config" +openplc-editor/building-deploying/runtime-status.md,9,219,Device,D-TARGET,R16,stays,"*Orchestrators** screen in the web editor, and at the bottom of the **Device Configuration** screen in the desktop editor. They were never configu" +openplc-editor/building-deploying/runtime-status.md,13,37,device,D-TARGET,R16,stays,"Everything here is read from a live device, so the leaf appears **while you are connected** to one. Opening it o" +openplc-editor/building-deploying/runtime-status.md,15,13,device,D-TARGET,R16,stays,## What the device tells you about itself +openplc-editor/building-deploying/runtime-status.md,22,57,device,D-HOST,R15,stays,| **Bootloader** | The version of the bootloader on the device | +openplc-editor/building-deploying/runtime-status.md,23,18,device,D-TARGET,R16,stays,| **Host** | The device's hostname | +openplc-editor/building-deploying/runtime-status.md,30,35,device,D-TARGET,R16,stays,"**If some of these are empty, the device is a native install, or an installation old enough to predate the boo" +openplc-editor/building-deploying/runtime-status.md,30,171,device,D-TARGET,R16,stays,"te the bootloader.** It is not a fault, and nothing is wrong with the device. You simply see fewer details about it." +openplc-editor/building-deploying/runtime-status.md,52,83,device,D-HOST,R15,stays,runtime version** button installs a different OpenPLC runtime on the device. +openplc-editor/building-deploying/runtime-status.md,54,32,device,D-TARGET,R16,stays,"> **The button appears only on devices that can do it.** A native install, or an installation old enough to" +openplc-editor/building-deploying/runtime-status.md,58,59,device,D-TARGET,R16,stays,"![The Change Runtime Version dialog. It explains that the device downloads the version you choose and restarts its runtime, and that i" +openplc-editor/building-deploying/runtime-status.md,60,101,device,D-HOST,R15,stays,"published runtime releases, newest first. The version already on the device is marked **(installed)** and cannot be chosen, since installing what" +openplc-editor/building-deploying/runtime-status.md,64,110,device,D-REMOTE,R13,stays,"the dropdown is replaced by a field you can type a version into, so a device that is offline but holding an image you side-loaded is still install" +openplc-editor/building-deploying/runtime-status.md,68,191,device,D-TARGET,R16,stays,"reads ""Downloading v4.2.1 — Downloading"" at 38%, and a note says the device continues on its own if you close the editor and that on a slow conne" +openplc-editor/building-deploying/runtime-status.md,70,5,device,D-TARGET,R16,stays,"The device does the work: it downloads the image, replaces the runtime and then" +openplc-editor/building-deploying/runtime-status.md,78,53,device,D-HOST,R15,stays,| **The update failed** | Shown with the reason the device gave | +openplc-editor/building-deploying/runtime-status.md,80,46,device,D-TARGET,R16,stays,"**Closing the editor does not stop it.** The device continues on its own, and on a slow connection the whole thing can ta" +openplc-editor/building-deploying/runtime-status.md,84,12,device,D-TARGET,R16,stays,### If the device is in recovery +openplc-editor/building-deploying/runtime-status.md,86,97,device,D-HOST,R15,stays,"nning, the screen shows a warning at the top of the header saying the device is in recovery, with the reason the device reported and the advice to" +openplc-editor/building-deploying/runtime-status.md,86,140,device,D-HOST,R15,stays,"p of the header saying the device is in recovery, with the reason the device reported and the advice to **install a different version to recover i" +openplc-editor/building-deploying/runtime-status.md,92,80,device,D-TARGET,R16,stays,ecting to runtimes](../connecting-to-runtimes)** for establishing the device session this screen needs. +openplc-editor/building-deploying/runtime-status.md,94,90,device,D-TARGET,R16,stays,"t](user-management)**, the other screen that configures the connected device rather than the project." +openplc-editor/building-deploying/simulator.md,9,62,orchestrator,O-EDGEDEV,R04,changes,"The Simulator is the default target. Until you connect to an orchestrator-managed vPLC, anything you build runs on the Simulator. You'll see a" +openplc-editor/building-deploying/simulator.md,13,34,Device,D-TARGET,R16,stays,"1. In the project tree, expand **Device** and click **Orchestrators**." +openplc-editor/building-deploying/simulator.md,13,55,Orchestrator,O-EDGEDEV,R04,changes,"1. In the project tree, expand **Device** and click **Orchestrators**." +openplc-editor/building-deploying/simulator.md,14,8,Device,O-EDGEDEV,R09,changes,2. The Device Orchestrators screen opens in a tab. +openplc-editor/building-deploying/simulator.md,14,15,Orchestrator,O-EDGEDEV,R04,changes,2. The Device Orchestrators screen opens in a tab. +openplc-editor/building-deploying/simulator.md,17,3,Device,O-EDGEDEV,R09,changes,![Device Orchestrators screen with OpenPLC Simulator selected by default at th +openplc-editor/building-deploying/simulator.md,17,10,Orchestrator,O-EDGEDEV,R04,changes,"![Device Orchestrators screen with OpenPLC Simulator selected by default at the top, and th" +openplc-editor/building-deploying/simulator.md,17,112,orchestrator,O-EDGEDEV,R04,changes,"C Simulator selected by default at the top, and the user's registered orchestrators listed below](../images/orchestrators-screen.png)" +openplc-editor/building-deploying/simulator.md,17,150,orchestrator,O-PATH,R02,changes,"top, and the user's registered orchestrators listed below](../images/orchestrators-screen.png)" +openplc-editor/building-deploying/simulator.md,132,97,orchestrator,O-EDGEDEV,R04,changes,(../connecting-to-runtimes)**: when you're ready to run on a real (or orchestrator-managed virtual) device. +openplc-editor/building-deploying/simulator.md,132,127,device,D-TARGET,R16,stays,when you're ready to run on a real (or orchestrator-managed virtual) device. +openplc-editor/building-deploying/user-management.md,3,71,device,D-TARGET,R16,stays,"Every OpenPLC runtime keeps its own list of accounts. Signing in to a device is what lets the editor upload to it, start and stop it, watch variab" +openplc-editor/building-deploying/user-management.md,3,196,device,D-TARGET,R16,stays,"stop it, watch variables and read its logs, so those accounts are the device's access control, not the platform's." +openplc-editor/building-deploying/user-management.md,5,68,Device,D-TARGET,R16,stays,"**User Management** is where you manage them. It lives under the **Device** branch of the project tree, and unlike most of what is in that tree" +openplc-editor/building-deploying/user-management.md,5,175,device,D-TARGET,R16,stays,and unlike most of what is in that tree it configures the **connected device** rather than the project. +openplc-editor/building-deploying/user-management.md,7,29,Device,D-TARGET,R16,stays,"![The project tree with the Device branch expanded, showing Configuration, Runtime Status, Persistent St" +openplc-editor/building-deploying/user-management.md,9,24,device,D-TARGET,R16,stays,"Accounts belong to the device. They do not travel with the project, and two people working on the s" +openplc-editor/building-deploying/user-management.md,13,55,device,D-TARGET,R16,stays,The leaf is in the tree when you are **connected to a device** running **runtime 4.1.9 or newer**. Older runtimes predate the acco +openplc-editor/building-deploying/user-management.md,19,140,device,D-TARGET,R16,stays,"the network could claim it. So the first time you connect to an empty device, the editor asks you to create an account instead of asking you to si" +openplc-editor/building-deploying/user-management.md,21,86,device,D-TARGET,R16,stays,"count is always an administrator**, whatever you pick afterwards. The device would otherwise have no one able to create the second account." +openplc-editor/building-deploying/user-management.md,27,18,device,D-TARGET,R16,stays,| Sign in to the device | Yes | Yes | +openplc-editor/building-deploying/user-management.md,38,39,device,D-HOST,R15,stays,| [Retrieve the project stored on the device](retrieve-project) | Yes | No | +openplc-editor/building-deploying/user-management.md,44,38,device,D-HOST,R15,stays,The table lists every account on the device with its role. Your own account is marked **(you)**. +openplc-editor/building-deploying/user-management.md,56,147,device,D-TARGET,R16,stays,"cannot delete the account you are signed in as, which is what stops a device being left with no way in." +openplc-editor/building-deploying/user-management.md,66,33,device,D-HOST,R15,stays,Usernames must be unique on the device. +openplc-editor/building-deploying/user-management.md,80,53,device,D-TARGET,R16,stays,"> **Changing your own password signs you out.** The device revokes the session that made the change, so an old token cannot outl" +openplc-editor/building-deploying/user-management.md,86,3,device,D-TARGET,R16,stays,"A device must keep at least one administrator, so the runtime refuses to demot" +openplc-editor/building-deploying/user-management.md,96,85,device,D-TARGET,R16,stays,g to runtimes](../connecting-to-runtimes)** for signing in and what a device session is. +openplc-editor/building-deploying/user-management.md,97,51,device,D-TARGET,R16,stays,"- **[Runtime status](runtime-status)**, the other device-scoped screen, for what the device is and how it is running." +openplc-editor/building-deploying/user-management.md,97,86,device,D-TARGET,R16,stays,"atus](runtime-status)**, the other device-scoped screen, for what the device is and how it is running." +openplc-editor/building-deploying/user-management.md,98,130,device,D-REMOTE,R13,stays,beside this screen in the tree but is a project setting rather than a device one. +openplc-editor/building-deploying/user-management.md,99,105,device,D-HOST,R15,stays,"](retrieve-project)**, which requires an administrator account on the device." +openplc-editor/building-deploying/xml-export.md,69,85,device,D-TARGET,R16,stays,n** builds your project into a deployable program and uploads it to a device. +openplc-editor/building-deploying/xml-export.md,78,68,device,D-TARGET,R16,stays,- [Deployment](deployment-vplc): Deploy your compiled program to a device. +openplc-editor/building-deploying/xml-export.md,79,80,device,D-HOST,R15,stays,ting to Runtimes](../connecting-to-runtimes): Connect the IDE to your devices. +openplc-editor/custom-languages/python-blocks/python-restrictions.md,44,72,device,D-EDITORNODE,R17,stays,ython function blocks run inside the Python interpreter on the target device. The same one used by the OpenPLC runtime. So whatever is installed i +openplc-editor/custom-languages/python-blocks/python-restrictions.md,49,47,device,D-HOST,R15,stays,- **Any third-party packages installed on the device**: if you `pip install` a package on the device running the OpenPLC r +openplc-editor/custom-languages/python-blocks/python-restrictions.md,49,95,device,D-HOST,R15,stays,"ages installed on the device**: if you `pip install` a package on the device running the OpenPLC runtime (NumPy, Requests, paho-mqtt, pyserial, an" +openplc-editor/custom-languages/python-blocks/python-restrictions.md,51,5,device,D-EDITORNODE,R17,stays,"The device controls which packages are installed, not the editor. Two devices ca" +openplc-editor/custom-languages/python-blocks/python-restrictions.md,51,71,device,D-EDITORNODE,R17,stays,"The device controls which packages are installed, not the editor. Two devices can have different sets of packages, and a project that works on one" +openplc-editor/custom-languages/python-blocks/python-restrictions.md,51,320,device,D-EDITORNODE,R17,stays,es your project needs and make sure they're installed on every target device before deploying. +openplc-editor/custom-languages/python-blocks/python-restrictions.md,57,84,device,D-TARGET,H09,stays,as np # Available only if `pip install numpy` was run on the target device +openplc-editor/custom-languages/python-blocks/python-restrictions.md,58,52,device,D-TARGET,H09,stays,import requests # Same. Depends on the target device's Python environment +openplc-editor/custom-languages/python-blocks/python-restrictions.md,76,74,device,D-HOST,R15,stays,"*Install packages from inside a block**: `pip install` happens on the device, not from your block code. A block cannot install its own dependencie" +openplc-editor/custom-languages/python-blocks/python-restrictions.md,77,251,device,D-HOST,R15,stays,onomy Edge project. (You can still import any module installed on the device.) +openplc-editor/workspace-overview/project-explorer.md,5,134,Device,D-EDITORNODE,R17,stays,"with Functions, Function Blocks, Programs/main, Data Types, Resource, Device/Orchestrators, and Servers branches](../images/project-tree.png)" +openplc-editor/workspace-overview/project-explorer.md,5,141,Orchestrator,O-EDGEDEV,R04,changes,"nctions, Function Blocks, Programs/main, Data Types, Resource, Device/Orchestrators, and Servers branches](../images/project-tree.png)" +openplc-editor/workspace-overview/project-explorer.md,11,99,Device,D-REMOTE,R13,stays,"ting Function, Function Block, Program, Data Type, Server, and Remote Device options, each with a small icon and a chevron indicating a sub-menu](" +openplc-editor/workspace-overview/project-explorer.md,20,11,device,D-LITERAL,R10,stays,"- `remote-device`: Modbus master, EtherCAT, or other supported remote protocols" +openplc-editor/workspace-overview/project-explorer.md,53,5,Device,D-EDITORNODE,R17,stays,### Device +openplc-editor/workspace-overview/project-explorer.md,54,11,orchestrator,O-EDGEDEV,R04,changes,Lists the orchestrator and remote-device entries for this project. +openplc-editor/workspace-overview/project-explorer.md,54,35,device,D-REMOTE,R13,stays,Lists the orchestrator and remote-device entries for this project. +openplc-editor/workspace-overview/project-explorer.md,56,5,Orchestrator,O-EDGEDEV,R04,changes,- **Orchestrators**: opens the connection screen. From there you pick an orchestrator +openplc-editor/workspace-overview/project-explorer.md,56,74,orchestrator,O-EDGEDEV,R04,changes,*Orchestrators**: opens the connection screen. From there you pick an orchestrator + a vPLC and log in. See **[Connecting to a vPLC](../connecting-to-ru +openplc-editor/workspace-overview/project-explorer.md,57,9,Orchestrator,O-EDGEDEV,R04,changes,"- Below Orchestrators, any **remote devices** you've added live as siblings of the orchest" +openplc-editor/workspace-overview/project-explorer.md,57,37,device,D-REMOTE,R13,stays,"- Below Orchestrators, any **remote devices** you've added live as siblings of the orchestrator entry. Each one" +openplc-editor/workspace-overview/project-explorer.md,57,84,orchestrator,O-EDGEDEV,R04,changes,"strators, any **remote devices** you've added live as siblings of the orchestrator entry. Each one (Modbus master, EtherCAT bus master) opens its own ed" +openplc-editor/workspace-overview/workspace-layout.md,50,134,Device,D-EDITORNODE,R17,stays,"with Functions, Function Blocks, Programs/main, Data Types, Resource, Device/Orchestrators, and Servers branches](../images/project-tree.png)" +openplc-editor/workspace-overview/workspace-layout.md,50,141,Orchestrator,O-EDGEDEV,R04,changes,"nctions, Function Blocks, Programs/main, Data Types, Resource, Device/Orchestrators, and Servers branches](../images/project-tree.png)" +openplc-editor/workspace-overview/workspace-layout.md,59,5,Device,D-REMOTE,R13,stays,"- **Device**: connected orchestrators and remote devices (Modbus master, EtherCA" +openplc-editor/workspace-overview/workspace-layout.md,59,25,orchestrator,O-EDGEDEV,R04,changes,"- **Device**: connected orchestrators and remote devices (Modbus master, EtherCAT)." +openplc-editor/workspace-overview/workspace-layout.md,59,50,device,D-REMOTE,R13,stays,"- **Device**: connected orchestrators and remote devices (Modbus master, EtherCAT)." +openplc-editor/workspace-overview/workspace-layout.md,62,200,device,D-REMOTE,R13,stays,"popover (function, function-block, program, data-type, server, remote-device)." +openplc-editor/workspace-overview/workspace-layout.md,84,5,Device,D-REMOTE,R13,stays,"- **Device entries** open per-device configuration editors (e.g., Modbus master" +openplc-editor/workspace-overview/workspace-layout.md,84,31,device,D-REMOTE,R13,stays,"- **Device entries** open per-device configuration editors (e.g., Modbus master groups, EtherCAT slave cha" +openplc-editor/hardware-configuration/board-selection.md,3,427,Orchestrator,O-EDGEDEV,R04,changes,g/simulator) (selected by default) or deploy to runtime instances via Orchestrators. See [Running with the Simulator](../building-deploying/simulator) t +openplc-editor/hardware-configuration/board-selection.md,3,593,device,D-EDITORNODE,R17,stays,"hardware, or [Connecting to Runtimes](../connecting-to-runtimes) for device deployment." +openplc-editor/hardware-configuration/board-selection.md,12,22,Device,D-EDITORNODE,R17,stays,2. Navigate to the **Device** section in the Project Explorer. +openplc-editor/hardware-configuration/board-selection.md,194,86,device,D-EDITORNODE,R17,stays,"industrial production environments, deploy to robust industrial-grade devices running OpenPLC Runtime v4 rather than Arduino development boards. D" +openplc-editor/hardware-configuration/board-selection.md,200,4,Device,D-EDITORNODE,R17,stays,- [Device Configuration Overview](device-config-overview): Understand the full +openplc-editor/hardware-configuration/board-selection.md,200,35,device,D-EDITORNODE,R11b,stays,- [Device Configuration Overview](device-config-overview): Understand the full range of target types +openplc-editor/hardware-configuration/communication-settings.md,13,90,Device,D-EDITORNODE,R17,stays,ntroller (`arduino-cli`) | Yes | Yes (boards with Ethernet or WiFi) | Device Configuration in desktop editor | +openplc-editor/hardware-configuration/communication-settings.md,17,125,Device,D-REMOTE,R13,stays,"piler type, both Modbus RTU and Modbus TCP settings are hidden in the Device Configuration panel." +openplc-editor/hardware-configuration/communication-settings.md,28,98,device,D-EDITORNODE,R17,stays,"00, 19200, 38400, 57600, 115200 | Communication speed; must match all devices on the bus |" +openplc-editor/hardware-configuration/communication-settings.md,29,53,device,D-REMOTE,R13,stays,| **Slave ID** | 0–255 | The Modbus address of this device on the serial bus | +openplc-editor/hardware-configuration/communication-settings.md,34,11,Device,D-EDITORNODE,R17,stays,"1. In the Device Configuration panel, locate the Communication Settings section." +openplc-editor/hardware-configuration/communication-settings.md,37,45,device,D-REMOTE,R13,stays,4. Set the **Baud Rate** to match the other devices on your Modbus network. +openplc-editor/hardware-configuration/communication-settings.md,38,42,device,D-REMOTE,R13,stays,5. Assign a unique **Slave ID** for this device (each device on the bus must have a different ID). +openplc-editor/hardware-configuration/communication-settings.md,38,55,device,D-REMOTE,R13,stays,5. Assign a unique **Slave ID** for this device (each device on the bus must have a different ID). +openplc-editor/hardware-configuration/communication-settings.md,69,65,device,D-EDITORNODE,R17,stays,| **IP Address** | Static only | The static IP address for this device | +openplc-editor/hardware-configuration/communication-settings.md,76,11,Device,D-EDITORNODE,R17,stays,"1. In the Device Configuration panel, locate the Communication Settings section." +openplc-editor/hardware-configuration/communication-settings.md,84,20,device,D-EDITORNODE,R17,stays,- **DHCP**: The device obtains its IP address automatically from the network. +openplc-editor/hardware-configuration/communication-settings.md,139,58,device,D-EDITORNODE,R17,stays,"1. **Verify network connectivity.** For TCP, confirm the device has obtained an IP address (check serial monitor output if available)" +openplc-editor/hardware-configuration/communication-settings.md,152,53,device,D-REMOTE,R13,stays,- Ensure the Slave ID doesn't conflict with another device on the bus. +openplc-editor/hardware-configuration/communication-settings.md,158,15,device,D-EDITORNODE,R17,stays,- Confirm the device has a valid IP address (check DHCP assignment or static configuration +openplc-editor/hardware-configuration/communication-settings.md,161,58,device,D-EDITORNODE,R17,stays,"- For WiFi, verify SSID and password are correct and the device has joined the network." +openplc-editor/hardware-configuration/communication-settings.md,162,25,device,D-EDITORNODE,R17,stays,- Ensure the client and device are on the same subnet. +openplc-editor/hardware-configuration/communication-settings.md,166,56,Device,D-EDITORNODE,R17,stays,- Verify that communication is actually enabled in the Device Configuration (not just configured). +openplc-editor/hardware-configuration/communication-settings.md,172,4,Device,D-EDITORNODE,R17,stays,- [Device Configuration Overview](device-config-overview): Understand all targe +openplc-editor/hardware-configuration/communication-settings.md,172,35,device,D-EDITORNODE,R11b,stays,- [Device Configuration Overview](device-config-overview): Understand all target types and their communication +openplc-editor/hardware-configuration/communication-settings.md,176,97,device,D-REMOTE,R13,stays,nication/modbus/client): Configure Modbus client for polling external devices +openplc-editor/hardware-configuration/device-config-overview.md,1,3,Device,D-EDITORNODE,R17,stays,# Device Configuration Overview +openplc-editor/hardware-configuration/device-config-overview.md,3,5,Device,D-EDITORNODE,R17,stays,The Device Configuration section defines how your PLC program connects to and co +openplc-editor/hardware-configuration/device-config-overview.md,5,14,Device,D-EDITORNODE,R17,stays,## Accessing Device Configuration +openplc-editor/hardware-configuration/device-config-overview.md,7,13,Device,D-EDITORNODE,R17,stays,To open the Device Configuration panel: +openplc-editor/hardware-configuration/device-config-overview.md,11,12,Device,D-EDITORNODE,R17,stays,3. Click **Device** under the Configuration section. +openplc-editor/hardware-configuration/device-config-overview.md,17,15,Device,D-EDITORNODE,R17,stays,"When you open Device Configuration in the Autonomy Edge web IDE, you can browse available" +openplc-editor/hardware-configuration/device-config-overview.md,19,3,Device,O-EDGEDEV,R09,changes,![Device Orchestrators view in the web editor showing available targets](../im +openplc-editor/hardware-configuration/device-config-overview.md,19,10,Orchestrator,O-EDGEDEV,R04,changes,![Device Orchestrators view in the web editor showing available targets](../images/device-o +openplc-editor/hardware-configuration/device-config-overview.md,19,84,device,O-EDGEDEV,R09,changes,estrators view in the web editor showing available targets](../images/device-orchestrators-expanded.png) +openplc-editor/hardware-configuration/device-config-overview.md,19,91,orchestrator,O-PATH,R02,changes,rs view in the web editor showing available targets](../images/device-orchestrators-expanded.png) +openplc-editor/hardware-configuration/device-config-overview.md,26,59,device,D-REMOTE,R13,stays,- **Modbus Client**: Poll data from external Modbus slave devices. +openplc-editor/hardware-configuration/device-config-overview.md,29,65,Device,D-EDITORNODE,R17,stays,"These protocols are added through the Project Explorer, not the Device Configuration panel itself. See [Communication Protocols](../communic" +openplc-editor/hardware-configuration/device-config-overview.md,33,78,Orchestrator,O-EDGEDEV,R04,changes,editor deploys to the built-in Simulator or to runtime instances via Orchestrators. The following features are **not available** in the web editor: +openplc-editor/hardware-configuration/device-config-overview.md,42,220,Orchestrator,O-EDGEDEV,R04,changes,browser. This lets you run and debug programs without any hardware or Orchestrator setup. +openplc-editor/hardware-configuration/device-config-overview.md,71,18,device,D-EDITORNODE,R17,stays,- Standalone PLC devices running on dedicated microcontrollers +openplc-editor/hardware-configuration/device-config-overview.md,72,8,device,D-HOST,R15,stays,- Edge devices that operate independently without network connectivity +openplc-editor/hardware-configuration/device-config-overview.md,75,131,device,D-EDITORNODE,R17,stays,"strial environments. For production deployments, use industrial-grade devices running OpenPLC Runtime v4 or deploy through Autonomy Edge." +openplc-editor/hardware-configuration/device-config-overview.md,127,13,Device,D-EDITORNODE,R17,stays,1. Open the Device section and select a target runtime. +openplc-editor/hardware-configuration/pin-mapping.md,20,30,Device,D-EDITORNODE,R17,stays,The pin mapping table in the Device Configuration panel defines which physical pin on your microcontrolle +openplc-editor/hardware-configuration/pin-mapping.md,25,18,Device,D-EDITORNODE,R17,stays,2. Navigate to **Device** in the Project Explorer. +openplc-editor/hardware-configuration/pin-mapping.md,168,76,device,D-HOST,R15,stays,names in the editor correspond directly to the labels printed on the device. +openplc-editor/hardware-configuration/pin-mapping.md,185,46,Device,D-EDITORNODE,R17,stays,1. Verify the pin is correctly mapped in the Device Configuration. +openplc-editor/hardware-configuration/pin-mapping.md,205,4,Device,D-EDITORNODE,R17,stays,- [Device Configuration Overview](device-config-overview): Understand all targe +openplc-editor/hardware-configuration/pin-mapping.md,205,35,device,D-EDITORNODE,R11b,stays,- [Device Configuration Overview](device-config-overview): Understand all target types and deployment workflow +openplc-editor/examples/README.md,3,195,orchestrator,O-EDGEDEV,R04,changes,ogram executing on the **Simulator** (in-browser) or a real **vPLC** (orchestrator-managed). +openplc-editor/examples/modbus-slave-outputs.md,75,34,orchestrator,O-EDGEDEV,R04,changes,If you're running on a **vPLC** (orchestrator-managed): +openplc-editor/examples/modbus-slave-outputs.md,77,13,Orchestrator,O-EDGEDEV,R04,changes,"1. Open the Orchestrators screen, expand your orchestrator, pick a vPLC, click **Connect**, lo" +openplc-editor/examples/modbus-slave-outputs.md,77,47,orchestrator,O-EDGEDEV,R04,changes,"1. Open the Orchestrators screen, expand your orchestrator, pick a vPLC, click **Connect**, log in." +openplc-editor/examples/python-function-block.md,126,222,Orchestrator,O-EDGEDEV,R04,changes,"ss target on the desktop), Python is disabled. Switch targets via the Orchestrators screen." +openplc-editor/communication/README.md,3,192,device,D-PLAIN,R14,stays,"CADA systems, HMIs, remote I/O modules, sensors, and other automation devices. You configure all communication settings directly in the Autonomy E" +openplc-editor/communication/README.md,16,53,device,D-REMOTE,R13,stays,"- **Modbus Client (Master)**: Poll data from remote devices (temperature sensors, flow meters, VFDs, other PLCs) on a configurab" +openplc-editor/communication/README.md,17,92,device,D-REMOTE,R13,stays,municate over serial buses with multi-drop support for multiple slave devices on a single RS-485 line. +openplc-editor/communication/README.md,23,87,device,D-REMOTE,R13,stays,nt](modbus/client)**: Configure Autonomy Edge to poll external Modbus devices +openplc-editor/communication/README.md,45,79,device,D-REMOTE,R13,stays,"tab](ethercat/bus-scan)**: Network interface, scan, matching scanned devices to the repository" +openplc-editor/communication/README.md,49,6,Device,D-REMOTE,R13,stays,- **[Device Info](ethercat/slave-info)**: Read-only slave identification +openplc-editor/communication/README.md,108,87,Orchestrator,O-EDGEDEV,R04,changes,"ver RS-485, you need a serial port available on the machine where the Orchestrator is installed (this could be a Raspberry Pi, an industrial PC, an edge" +openplc-editor/communication/README.md,108,193,device,D-HOST,R15,stays,"d be a Raspberry Pi, an industrial PC, an edge computer, or any Linux device). This can be either:" +openplc-editor/communication/README.md,113,22,Device,D-EDITORNODE,R17,stays,"When creating a vPLC Device, the platform shows all available serial ports detected on the host." +openplc-editor/communication/README.md,115,186,device,D-EDITORNODE,R17,stays,"e network interfaces, a serial line cannot be shared between multiple devices. If a port is already assigned to another vPLC, it will appear graye" +openplc-editor/communication/README.md,117,20,Device,D-EDITORNODE,R17,stays,See [Creating vPLC Devices](../../platform/vplcs/creating-a-vplc) for the full Device creation +openplc-editor/communication/README.md,117,80,Device,D-EDITORNODE,R17,stays,"ting vPLC Devices](../../platform/vplcs/creating-a-vplc) for the full Device creation walkthrough, including serial port configuration." +openplc-editor/communication/README.md,132,12,Device,D-REMOTE,R13,stays,| **Remote Device > Modbus/TCP** | A Modbus client (master) connection to poll an exter +openplc-editor/communication/README.md,132,92,device,D-REMOTE,R13,stays,odbus/TCP** | A Modbus client (master) connection to poll an external device over Ethernet | +openplc-editor/communication/README.md,133,12,Device,D-REMOTE,R13,stays,| **Remote Device > Modbus/RTU** | A Modbus client over serial (RS-232/RS-485) for lega +openplc-editor/communication/README.md,133,91,device,D-REMOTE,R13,stays,Modbus/RTU** | A Modbus client over serial (RS-232/RS-485) for legacy devices | +openplc-editor/communication/README.md,134,12,Device,D-REMOTE,R13,stays,| **Remote Device > EtherCAT** | An EtherCAT master segment with its own slave configur +openplc-editor/communication/README.md,137,96,Device,D-EDITORNODE,R17,stays,in the project explorer tree under the appropriate folder (Servers or Devices). +openplc-editor/communication/README.md,140,41,device,D-REMOTE,R13,stays,You can add multiple servers and remote devices to a single project. Each operates independently at runtime with its +openplc-editor/communication/README.md,169,239,device,D-REMOTE,R13,stays,"., a SCADA system) but cannot initiate outbound connections to remote devices." +openplc-editor/communication/README.md,178,65,device,D-REMOTE,R13,stays,- **Client (Master)**: Your PLC initiates connections to remote devices and polls data on a configurable schedule. Use this when your PLC ne +openplc-editor/communication/README.md,184,320,device,D-EDITORNODE,R17,stays,tion layer automatically synchronizes those values with the connected devices. +openplc-editor/communication/README.md,200,42,Device,D-REMOTE,R13,stays,"| Modbus Client | `modbus_master.json` | Device connections, IO groups, polling schedules |" +openplc-editor/communication/README.md,211,35,device,D-REMOTE,R13,stays,"| Connecting to legacy industrial devices (sensors, VFDs, meters) | Modbus TCP or RTU |" +openplc-editor/communication/README.md,221,87,device,D-REMOTE,R13,stays,"al deployments, both Modbus and OPC-UA run simultaneously. Modbus for device-level communication with field instruments and OPC-UA for secure, hig" +openplc-editor/communication/README.md,228,111,device,D-REMOTE,R13,stays,"tandard network tools (`ping`, `telnet`) to verify the PLC and remote devices can reach each other on the expected ports." +openplc-editor/communication/README.md,238,83,device,D-REMOTE,R13,stays,Overview](modbus/README)**: Start here if you are working with Modbus devices +openplc-editor/communication/ethercat/README.md,5,228,device,D-REMOTE,R13,stays,"u upload the slave description files (ESI XML), scan the wire for the devices that are physically attached, map their input and output channels on" +openplc-editor/communication/ethercat/README.md,14,8,device,D-REMOTE,R13,stays,"- Your devices already speak EtherCAT. Beckhoff EL/EK terminals, drives from SEW/Le" +openplc-editor/communication/ethercat/README.md,34,44,Device,D-REMOTE,R13,stays,"| The bus node (e.g. `eth`) under **Remote Devices** | EtherCAT Bus Editor | Pick a NIC, scan the wire, manage the ESI" +openplc-editor/communication/ethercat/README.md,35,53,Device,D-REMOTE,R13,stays,"| A slave child node under the bus | EtherCAT Slave Device Editor | View identification, set startup checks/timeouts/watchdog/di" +openplc-editor/communication/ethercat/README.md,37,92,Device,D-REMOTE,R13,stays,"ree top-level tabs (**Bus**, **Repository**, **Advanced**). The Slave Device Editor has four top-level tabs (**Channel Mappings**, **Device Info**" +openplc-editor/communication/ethercat/README.md,37,155,Device,D-REMOTE,R13,stays,"Slave Device Editor has four top-level tabs (**Channel Mappings**, **Device Info**, **Configuration**, **Startup Parameters**)." +openplc-editor/communication/ethercat/README.md,45,20,Device,D-REMOTE,R13,stays,3. Select **Remote Device** from the menu that opens. +openplc-editor/communication/ethercat/README.md,47,17,Device,D-REMOTE,R13,stays,![Add Remote Device dialog with Device name field and Protocol dropdown](images/add-remot +openplc-editor/communication/ethercat/README.md,47,36,Device,D-REMOTE,R13,stays,![Add Remote Device dialog with Device name field and Protocol dropdown](images/add-remote-device.png) +openplc-editor/communication/ethercat/README.md,47,95,device,D-REMOTE,R11a,stays,ialog with Device name field and Protocol dropdown](images/add-remote-device.png) +openplc-editor/communication/ethercat/README.md,49,13,Device,D-EDITORNODE,R17,stays,"4. In the **Device name** field, enter a short identifier for the bus (e.g. `eth`, `axis" +openplc-editor/communication/ethercat/README.md,52,104,device,D-REMOTE,R11a,stays,"ng Modbus, EtherNet/IP, EtherCAT, PROFINET options](images/add-remote-device-protocol-dropdown.png)" +openplc-editor/communication/ethercat/README.md,55,39,Device,D-REMOTE,R13,stays,7. The new bus appears under **Remote Devices** in the project tree. Click it to open the EtherCAT Bus Editor. +openplc-editor/communication/ethercat/README.md,57,144,device,D-REMOTE,R13,stays,scanning a connected segment (**[Bus tab](bus-scan)**) or by picking devices from the ESI repository (**[Repository workflow](bus-repository)**). +openplc-editor/communication/ethercat/README.md,57,302,Device,D-REMOTE,R13,stays,you add becomes a child node under the bus and opens its own **[Slave Device Editor](slave-channel-mappings)** when clicked. +openplc-editor/communication/ethercat/README.md,68,89,device,D-REMOTE,R13,stays,"scan)**: Network interface selection, live scan, and matching scanned devices to the ESI repository" +openplc-editor/communication/ethercat/README.md,72,11,Device,D-REMOTE,R13,stays,### Slave Device Editor +openplc-editor/communication/ethercat/README.md,75,6,Device,D-REMOTE,R13,stays,- **[Device Info](slave-info)**: Read-only identification fields +openplc-editor/communication/ethercat/README.md,87,314,Device,D-REMOTE,R13,stays,"look up a specific field, jump straight to the relevant Bus or Slave Device Editor page." +openplc-editor/communication/ethercat/adding-ethercat.md,3,260,Device,D-REMOTE,R13,stays,est of the setup happens inside the [Bus Editor](bus-scan) and [Slave Device Editor](slave-channel-mappings). +openplc-editor/communication/ethercat/adding-ethercat.md,9,20,Device,D-REMOTE,R13,stays,3. Select **Remote Device** from the menu. A small form panel appears. +openplc-editor/communication/ethercat/adding-ethercat.md,11,17,Device,D-REMOTE,R13,stays,"![Add Remote Device dialog: Device name field plus Protocol dropdown defaulting to ""Selec" +openplc-editor/communication/ethercat/adding-ethercat.md,11,32,Device,D-REMOTE,R13,stays,"![Add Remote Device dialog: Device name field plus Protocol dropdown defaulting to ""Select a protocol""," +openplc-editor/communication/ethercat/adding-ethercat.md,11,153,device,D-REMOTE,R11a,stays,"to ""Select a protocol"", Cancel and Create buttons](images/add-remote-device.png)" +openplc-editor/communication/ethercat/adding-ethercat.md,13,13,Device,D-EDITORNODE,R17,stays,"4. In the **Device name** field, enter a short, descriptive identifier for the bus. The" +openplc-editor/communication/ethercat/adding-ethercat.md,16,100,device,D-REMOTE,R11a,stays,"ed showing Modbus, EtherNet/IP, EtherCAT, PROFINET](images/add-remote-device-protocol-dropdown.png)" +openplc-editor/communication/ethercat/adding-ethercat.md,20,58,Device,D-REMOTE,R13,stays,"The new bus appears in the project tree under a **Remote Devices** folder. The first time you create one, the **Remote Devices** fold" +openplc-editor/communication/ethercat/adding-ethercat.md,20,120,Device,D-REMOTE,R13,stays,"*Remote Devices** folder. The first time you create one, the **Remote Devices** folder is created automatically; if you already have other remote" +openplc-editor/communication/ethercat/adding-ethercat.md,20,196,device,D-REMOTE,R13,stays,"s** folder is created automatically; if you already have other remote devices (for example a Modbus client), the EtherCAT bus is added alongside t" +openplc-editor/communication/ethercat/adding-ethercat.md,29,32,device,D-REMOTE,R13,stays,- The list of configured slave devices (initially empty) +openplc-editor/communication/ethercat/adding-ethercat.md,40,8,device,D-EDITORNODE,R17,stays,| Pick devices from the [Repository tab](bus-repository) via the **Add Device** ➕ b +openplc-editor/communication/ethercat/adding-ethercat.md,40,72,Device,D-EDITORNODE,R17,stays,Pick devices from the [Repository tab](bus-repository) via the **Add Device** ➕ button | When you want to build the configuration before you have +openplc-editor/communication/ethercat/adding-ethercat.md,42,110,Device,D-REMOTE,R13,stays,a child node under the bus. Clicking the child node opens the [Slave Device Editor](slave-channel-mappings) where you map its channels and tune i +openplc-editor/communication/ethercat/adding-ethercat.md,46,59,Device,D-REMOTE,R13,stays,The bus name follows the same conventions as other Remote Devices: +openplc-editor/communication/ethercat/bus-repository.md,3,159,device,D-REMOTE,R13,stays,"oad, browse, and remove the **ESI XML** files that describe the slave devices in your segment. The editor matches scanned devices against this rep" +openplc-editor/communication/ethercat/bus-repository.md,3,211,device,D-REMOTE,R13,stays,escribe the slave devices in your segment. The editor matches scanned devices against this repository to figure out which ESI describes which phys +openplc-editor/communication/ethercat/bus-repository.md,5,35,Device,D-REMOTE,R13,stays,"![Repository tab showing the ""ESI Device Files"" drop-zone at the top and a Loaded Files table with one entry," +openplc-editor/communication/ethercat/bus-repository.md,5,135,device,D-EDITORNODE,R17,stays,"top and a Loaded Files table with one entry, Beckhoff EK18xx.xml, 13 devices](images/repository-tab.png)" +openplc-editor/communication/ethercat/bus-repository.md,11,90,device,D-REMOTE,R13,stays,"Information) is the standard machine-readable description of a slave device, defined by the EtherCAT Technology Group as standard ETG.2000. A sin" +openplc-editor/communication/ethercat/bus-repository.md,11,195,device,D-REMOTE,R13,stays,hnology Group as standard ETG.2000. A single ESI XML can describe one device or an entire family. For example Beckhoff publishes one file per term +openplc-editor/communication/ethercat/bus-repository.md,11,354,device,D-EDITORNODE,R17,stays,"`Beckhoff EL1xxx.xml`, `Beckhoff EL2xxx.xml`, …) covering hundreds of devices each." +openplc-editor/communication/ethercat/bus-repository.md,19,61,Device,D-REMOTE,R13,stays,The top of the Repository tab is a drop zone labelled **ESI Device Files**. Inside the zone the prompt reads: +openplc-editor/communication/ethercat/bus-repository.md,40,129,device,D-LITERAL,R10,stays,"ery ESI in the repository. The header reads `Loaded Files () - device(s)`, where N is the file count and M the total number of slave device" +openplc-editor/communication/ethercat/bus-repository.md,40,199,device,D-REMOTE,R13,stays,"device(s)`, where N is the file count and M the total number of slave devices described across all files. A **Clear All** link on the right emptie" +openplc-editor/communication/ethercat/bus-repository.md,44,56,device,D-REMOTE,R13,stays,| Expand chevron | Click to expand the row and see the devices contained in this ESI. | +openplc-editor/communication/ethercat/bus-repository.md,47,5,Device,D-REMOTE,R13,stays,| **Devices** | How many distinct slave devices are described in this ESI. | +openplc-editor/communication/ethercat/bus-repository.md,47,41,device,D-REMOTE,R13,stays,| **Devices** | How many distinct slave devices are described in this ESI. | +openplc-editor/communication/ethercat/bus-repository.md,50,16,device,D-REMOTE,R13,stays,### Inspecting devices inside an ESI +openplc-editor/communication/ethercat/bus-repository.md,52,68,device,D-EDITORNODE,R17,stays,"Click the chevron to expand a row. Below the file row, one row per device is shown, indented and highlighted." +openplc-editor/communication/ethercat/bus-repository.md,56,6,device,D-EDITORNODE,R17,stays,Each device row carries: +openplc-editor/communication/ethercat/bus-repository.md,58,39,device,D-EDITORNODE,R17,stays,- A small grid icon followed by the **device name** as it will appear in the Bus tab. +openplc-editor/communication/ethercat/bus-repository.md,61,82,device,D-REMOTE,R13,stays,al group badge (e.g. `System Couplers`) shown when the ESI groups its devices. +openplc-editor/communication/ethercat/bus-repository.md,67,308,device,D-EDITORNODE,R17,stays,es with the same name and product code but different revisions in the device browser. +openplc-editor/communication/ethercat/bus-repository.md,69,23,device,D-EDITORNODE,R17,stays,"When matching scanned devices to the repository, the editor looks for an exact revision match firs" +openplc-editor/communication/ethercat/bus-repository.md,69,224,device,D-EDITORNODE,R17,stays,"vendor and product code. If your scan returns a `No XML` badge for a device whose product code you can clearly see in the repository, the most li" +openplc-editor/communication/ethercat/bus-repository.md,82,183,Device,D-EDITORNODE,R17,stays,can) to scan the wire or browse the repository directly via the **Add Device** ➕ button. +openplc-editor/communication/ethercat/bus-scan.md,7,111,Device,D-REMOTE,R13,stays,"wing the Network Interface dropdown set to eth0, Scan button, Scanned Devices panel on the left, and Configured Devices panel on the right with on" +openplc-editor/communication/ethercat/bus-scan.md,7,153,Device,D-EDITORNODE,R17,stays,"eth0, Scan button, Scanned Devices panel on the left, and Configured Devices panel on the right with one EK1814 entry](images/bus-tab.png)" +openplc-editor/communication/ethercat/bus-scan.md,15,19,Device,D-EDITORNODE,R17,stays,| Left. **Scanned Devices** | Devices discovered on the wire after the most recent Scan. Each +openplc-editor/communication/ethercat/bus-scan.md,15,31,Device,D-EDITORNODE,R17,stays,| Left. **Scanned Devices** | Devices discovered on the wire after the most recent Scan. Each one has a ch +openplc-editor/communication/ethercat/bus-scan.md,15,165,device,D-EDITORNODE,R17,stays,one has a checkbox; selecting and clicking **Add Selected** moves the device into the right panel. | +openplc-editor/communication/ethercat/bus-scan.md,16,23,Device,D-REMOTE,R13,stays,| Right. **Configured Devices** | The slaves that are part of your project. Each row becomes a chi +openplc-editor/communication/ethercat/bus-scan.md,16,167,device,D-EDITORNODE,R17,stays,hild node in the project tree. The ➕ and ➖ icons at the top right add devices manually from the repository or remove a selected one. | +openplc-editor/communication/ethercat/bus-scan.md,22,116,device,D-EDITORNODE,R17,stays,"ee the list of NICs the runtime reports. Each option shows the kernel device name (for example `enp4s0`, `eth0`, `enx00e04c680001`) and, when avai" +openplc-editor/communication/ethercat/bus-scan.md,39,55,device,D-LITERAL,R10,stays,"If no slaves respond, the table on the left shows `No devices found. Click ""Scan"" to discover EtherCAT devices on the network.`" +openplc-editor/communication/ethercat/bus-scan.md,39,104,device,D-LITERAL,R10,stays,"n the left shows `No devices found. Click ""Scan"" to discover EtherCAT devices on the network.`" +openplc-editor/communication/ethercat/bus-scan.md,41,27,device,D-EDITORNODE,R17,stays,## Reading the discovered-device table +openplc-editor/communication/ethercat/bus-scan.md,43,14,device,D-EDITORNODE,R17,stays,Each scanned device is one row with these columns: +openplc-editor/communication/ethercat/bus-scan.md,47,26,device,D-LITERAL,R10,stays,| Checkbox | Select this device for **Add Selected**. | +openplc-editor/communication/ethercat/bus-scan.md,49,23,device,D-REMOTE,R13,stays,"| **Name** | Friendly device name, taken from the matched ESI XML when available. If no match was" +openplc-editor/communication/ethercat/bus-scan.md,55,19,device,D-EDITORNODE,R17,stays,## Adding scanned devices to the configuration +openplc-editor/communication/ethercat/bus-scan.md,59,25,device,D-REMOTE,R13,stays,1. Creates a configured device with default per-slave settings. See [Configuration](slave-configurat +openplc-editor/communication/ethercat/bus-scan.md,60,121,device,D-EDITORNODE,R17,stays,"pre-assigns IEC located variables (`%IX`, `%QX`, `%IW`, `%QW`) so the device is immediately mappable." +openplc-editor/communication/ethercat/bus-scan.md,63,60,Device,D-REMOTE,R13,stays,The successfully-added rows have their checkboxes cleared. Devices that failed because of a missing ESI stay selected so you can see wh +openplc-editor/communication/ethercat/bus-scan.md,67,107,device,D-REMOTE,R13,stays,"and click **Add Selected**, a modal titled **Missing ESI XML for some devices** appears. It lists the affected slaves with their position, name, v" +openplc-editor/communication/ethercat/bus-scan.md,69,34,device,D-REMOTE,R13,stays,1. Download the ESI XML for each device from the manufacturer's website. +openplc-editor/communication/ethercat/bus-scan.md,79,88,device,D-REMOTE,R13,stays,**[Repository tab](bus-repository)** and upload the ESI files for the devices you intend to use. +openplc-editor/communication/ethercat/bus-scan.md,81,64,Device,D-EDITORNODE,R17,stays,3. Click the **`+`** icon at the top right of the **Configured Devices** panel. The **Add Device from Repository** modal opens. +openplc-editor/communication/ethercat/bus-scan.md,81,91,Device,D-EDITORNODE,R17,stays,icon at the top right of the **Configured Devices** panel. The **Add Device from Repository** modal opens. +openplc-editor/communication/ethercat/bus-scan.md,83,10,Device,D-EDITORNODE,R17,stays,![Add Device from Repository modal listing one vendor (Beckhoff Automation GmbH & +openplc-editor/communication/ethercat/bus-scan.md,83,102,device,D-EDITORNODE,R17,stays,modal listing one vendor (Beckhoff Automation GmbH & Co. KG) with 13 devices collapsed under a chevron](images/add-device-from-repository.png) +openplc-editor/communication/ethercat/bus-scan.md,83,148,device,D-REMOTE,R11a,stays,GmbH & Co. KG) with 13 devices collapsed under a chevron](images/add-device-from-repository.png) +openplc-editor/communication/ethercat/bus-scan.md,85,56,device,D-LITERAL,R10,stays,"4. Use the search box at the top of the modal (`Search devices by name, product code, or vendor…`) or expand a vendor row to browse" +openplc-editor/communication/ethercat/bus-scan.md,87,150,device,D-REMOTE,R11a,stays,"variants with product code, revision, and source ESI file](images/add-device-from-repository-expanded.png)" +openplc-editor/communication/ethercat/bus-scan.md,89,9,device,D-REMOTE,R13,stays,"Each device row shows the name, product code, revision, and source ESI file." +openplc-editor/communication/ethercat/bus-scan.md,90,13,device,D-REMOTE,R13,stays,5. Select a device and click **Add Device**. The slave appears under your bus in the pro +openplc-editor/communication/ethercat/bus-scan.md,90,36,Device,D-REMOTE,R13,stays,"5. Select a device and click **Add Device**. The slave appears under your bus in the project tree, and in the *" +openplc-editor/communication/ethercat/bus-scan.md,90,124,Device,D-EDITORNODE,R17,stays,"e appears under your bus in the project tree, and in the **Configured Devices** panel, with a position assigned automatically (one greater than th" +openplc-editor/communication/ethercat/bus-scan.md,94,26,device,D-EDITORNODE,R17,stays,## Removing a configured device +openplc-editor/communication/ethercat/bus-scan.md,96,21,Device,D-EDITORNODE,R17,stays,"In the **Configured Devices** panel, click a row to select it (the row is highlighted). Click th" +openplc-editor/communication/ethercat/bus-scan.md,96,256,device,D-REMOTE,R13,stays,but leaves the underlying ESI in the repository so you can re-add the device later. +openplc-editor/communication/ethercat/diagnostics.md,39,113,Device,D-EDITORNODE,R17,stays,", 2, 3, …). Matches the **Pos** column in the Bus Editor's Configured Devices panel. |" +openplc-editor/communication/ethercat/diagnostics.md,60,85,Device,D-REMOTE,R13,stays,SI revision mismatch between configured and physical slave. | Check **Device Info** for this slave; download a newer ESI from the vendor and re-ad +openplc-editor/communication/ethercat/example.md,7,14,Device,D-EDITORNODE,R17,stays,| Position | Device | Function | I/O | +openplc-editor/communication/ethercat/example.md,31,20,Device,D-REMOTE,R13,stays,3. Select **Remote Device**. +openplc-editor/communication/ethercat/example.md,32,20,Device,D-EDITORNODE,R17,stays,4. Type `eth` in **Device name**. +openplc-editor/communication/ethercat/example.md,36,32,Device,D-REMOTE,R13,stays,The bus appears under **Remote Devices** as `eth`. Click it to open the EtherCAT Bus Editor. The header rea +openplc-editor/communication/ethercat/example.md,40,48,device,D-REMOTE,R13,stays,"The Beckhoff terminals are Beckhoff Automation devices, and Beckhoff publishes one ESI XML per terminal series. For our seg" +openplc-editor/communication/ethercat/example.md,49,47,Device,D-REMOTE,R13,stays,2. Drag the three `.xml` files onto the **ESI Device Files** drop zone. The progress display shows each file as it parses. +openplc-editor/communication/ethercat/example.md,50,140,device,D-EDITORNODE,R17,stays,files with a `Beckhoff Automation GmbH & Co. KG (0x2)` vendor and the device count for each. +openplc-editor/communication/ethercat/example.md,55,24,device,D-LITERAL,R17+fenced,stays,Loaded Files (3) - 317 device(s) +openplc-editor/communication/ethercat/example.md,62,5,device,D-EDITORNODE,R17,stays,The device counts will vary as Beckhoff publishes new revisions; the structure i +openplc-editor/communication/ethercat/example.md,79,126,Device,D-EDITORNODE,R17,stays,the master enumerates the segment. After a few seconds the **Scanned Devices** table fills in: +openplc-editor/communication/ethercat/example.md,88,167,Device,D-REMOTE,R13,stays,ts revision does not match. Re-check Step 3 and look at the slave's **Device Info** for the revision the wire is reporting. +openplc-editor/communication/ethercat/example.md,93,45,Device,D-REMOTE,R13,stays,The three slaves move into the **Configured Devices** panel on the right. The project tree updates: under **Remote Devic +openplc-editor/communication/ethercat/example.md,93,116,Device,D-REMOTE,R13,stays,evices** panel on the right. The project tree updates: under **Remote Devices > eth** you now see three child nodes: +openplc-editor/communication/ethercat/example.md,101,45,Device,D-REMOTE,R13,stays,1. Click the `EL1809` child node. The Slave Device Editor opens with the **Channel Mappings** tab selected. +openplc-editor/communication/ethercat/example.md,108,79,device,D-LITERAL,R10,stays,"`EK1100`. **Channel Mappings** shows `No channels available for this device.`. Couplers do not contribute process data, only mechanical and bus c" +openplc-editor/communication/ethercat/prerequisites.md,21,84,orchestrator,O-EDGEDEV,R04,changes,"ond NIC** on the host, separate from the one you use for SSH, for the orchestrator connection, and for the rest of your enterprise network." +openplc-editor/communication/ethercat/prerequisites.md,37,33,device,D-REMOTE,R13,stays,USB-Ethernet adapters and Wi-Fi devices are **not supported**: they cannot deliver the timing EtherCAT requi +openplc-editor/communication/ethercat/slave-channel-mappings.md,3,140,Device,D-REMOTE,R13,stays,ck a slave in the project tree. It is the most-used part of the Slave Device Editor and the place where each PDO entry described by the slave's ES +openplc-editor/communication/ethercat/slave-channel-mappings.md,5,195,device,D-REMOTE,R13,stays,"ESI. You do not pick them by hand. The editor lists every channel the device declares, ready to be referenced from your Ladder, ST, or FBD code." +openplc-editor/communication/ethercat/slave-channel-mappings.md,15,91,device,D-REMOTE,R13,stays,already in use by another slave on the same bus or by another remote device in the project. +openplc-editor/communication/ethercat/slave-channel-mappings.md,33,47,device,D-EDITORNODE,R17,stays,"The numbers in parentheses always reflect the device's totals, not the filtered view." +openplc-editor/communication/ethercat/slave-channel-mappings.md,79,13,device,D-EDITORNODE,R17,stays,Generic I/O devices that follow the **CANopen DS401** profile (most digital and analog I +openplc-editor/communication/ethercat/slave-channel-mappings.md,81,15,device,D-EDITORNODE,R17,stays,"For non-DS401 devices (servo drives, custom OEM modules), the channels still appear in the" +openplc-editor/communication/ethercat/slave-channel-mappings.md,81,200,device,D-EDITORNODE,R17,stays,t the names you see in the **#** column may not match anything in the device's manual. Use Device Info and the manufacturer's documentation to ide +openplc-editor/communication/ethercat/slave-channel-mappings.md,81,221,Device,D-EDITORNODE,R17,stays,n the **#** column may not match anything in the device's manual. Use Device Info and the manufacturer's documentation to identify which channel d +openplc-editor/communication/ethercat/slave-configuration.md,3,57,Device,D-REMOTE,R13,stays,The **Configuration** tab is the third tab in the Slave Device Editor. It is the largest configuration surface for an EtherCAT slave +openplc-editor/communication/ethercat/slave-configuration.md,5,224,device,D-REMOTE,R13,stays,"d values. You only need to come here when the defaults do not fit the device. Typically motion drives that need distributed clocks, or slaves that" +openplc-editor/communication/ethercat/slave-configuration.md,60,53,device,D-EDITORNODE,R17,stays,The defaults are generous and work for most catalog devices. When to extend them: +openplc-editor/communication/ethercat/slave-info.md,1,3,Device,D-EDITORNODE,R17,stays,# Device Info +openplc-editor/communication/ethercat/slave-info.md,3,7,Device,D-REMOTE,R13,stays,The **Device Info** tab is the second tab in the Slave Device Editor. It is a read +openplc-editor/communication/ethercat/slave-info.md,3,56,Device,D-REMOTE,R13,stays,The **Device Info** tab is the second tab in the Slave Device Editor. It is a read-only summary of the slave's identity. There is n +openplc-editor/communication/ethercat/slave-info.md,5,135,Device,D-EDITORNODE,R17,stays,"EL1809 16Ch. Dig. Input 24V, 3ms`) followed by the four tabs. Click **Device Info**." +openplc-editor/communication/ethercat/slave-info.md,7,3,Device,D-EDITORNODE,R17,stays,"![Device Info tab for EK1814: Vendor ""Beckhoff Automation GmbH & Co. KG"", Vend" +openplc-editor/communication/ethercat/slave-info.md,14,155,device,D-EDITORNODE,R17,stays,ve reports on the wire and the value the editor uses to match scanned devices to the repository. | +openplc-editor/communication/ethercat/slave-info.md,17,84,device,D-REMOTE,R13,stays,"* | The filename of the ESI XML in the repository that describes this device, e.g. `Beckhoff EL1xxx.xml`. Reads `Not found` if the linked ESI is n" +openplc-editor/communication/ethercat/slave-info.md,19,92,device,D-REMOTE,R13,stays,| Number of input channels (TxPDO entries) the ESI describes for this device. | +openplc-editor/communication/ethercat/slave-info.md,20,94,device,D-REMOTE,R13,stays,Number of output channels (RxPDO entries) the ESI describes for this device. | +openplc-editor/communication/ethercat/slave-info.md,24,32,Device,D-EDITORNODE,R17,stays,There are two situations where Device Info matters in practice: +openplc-editor/communication/ethercat/slave-info.md,26,130,Device,D-REMOTE,R13,stays,"m a scan, the editor picks the best matching ESI from the repository. Device Info shows you which file it picked. If the **ESI File** does not loo" +openplc-editor/communication/ethercat/slave-info.md,27,162,Device,D-REMOTE,R13,stays,") on a complex slave (analog terminals, drives, multi-axis encoders), Device Info gives you a one-line summary of how many input and output channe" +openplc-editor/communication/ethercat/slave-startup-params.md,3,63,Device,D-REMOTE,R13,stays,The **Startup Parameters** tab is the fourth tab in the Slave Device Editor. It lists the **SDO** (Service Data Object) writes the master +openplc-editor/communication/ethercat/slave-startup-params.md,3,247,device,D-REMOTE,R13,stays,"tup, after Pre-Op but before Safe-Op → Op. SDO writes are how you set device parameters that need to be applied once at boot. Not on every cycle." +openplc-editor/communication/ethercat/slave-startup-params.md,14,94,device,D-LITERAL,R10,stays,"b for the EK1814 showing ""No CoE Object Dictionary available for this device."" since this terminal has no configurable parameters](images/slave-st" +openplc-editor/communication/ethercat/slave-startup-params.md,22,48,device,D-LITERAL,R10,stays,| `No CoE Object Dictionary available for this device.` | The matched ESI does not contain a CoE (CAN over EtherCAT) object +openplc-editor/communication/ethercat/slave-startup-params.md,23,45,device,D-LITERAL,R10,stays,| `CoE Object Dictionary available for this device. Auto-configure startup parameters?` with an **Auto-configure from ES +openplc-editor/communication/ethercat/slave-startup-params.md,24,49,device,D-LITERAL,R10,stays,| `No configurable SDO parameters found in this device's CoE dictionary.` | The CoE dictionary exists but contains no SDOs m +openplc-editor/communication/ethercat/troubleshooting.md,3,114,Device,D-REMOTE,R13,stays,"grouped by where you see them: in the **Bus Editor**, in the **Slave Device Editor**, in the **Repository**, and at runtime once the bus is start" +openplc-editor/communication/ethercat/troubleshooting.md,11,101,device,D-REMOTE,R13,stays,"C's EtherCAT NIC was not marked as a **Dedicated Interface** when the device was created, so the runtime cannot take exclusive raw-Ethernet access" +openplc-editor/communication/ethercat/troubleshooting.md,13,221,device,D-EDITORNODE,R17,stays,"./platform/vplcs/creating-a-vplc)** for the wizard step. Once the new device boots, the banner clears and **Scan** becomes active." +openplc-editor/communication/ethercat/troubleshooting.md,27,9,device,D-EDITORNODE,R17,stays,"### ""No devices found"" after a successful scan" +openplc-editor/communication/ethercat/troubleshooting.md,29,76,Device,D-REMOTE,R13,stays,"ptom.** The **Scan** completes (`Completed in ms`) but the Scanned Devices table reads `No devices found. Click ""Scan"" to discover EtherCAT dev" +openplc-editor/communication/ethercat/troubleshooting.md,29,100,device,D-LITERAL,R10,stays,"pletes (`Completed in ms`) but the Scanned Devices table reads `No devices found. Click ""Scan"" to discover EtherCAT devices on the network.`" +openplc-editor/communication/ethercat/troubleshooting.md,29,149,device,D-LITERAL,R10,stays,"ices table reads `No devices found. Click ""Scan"" to discover EtherCAT devices on the network.`" +openplc-editor/communication/ethercat/troubleshooting.md,40,14,device,D-EDITORNODE,R17,stays,"### Selected device shows ""No XML"" badge" +openplc-editor/communication/ethercat/troubleshooting.md,42,35,Device,D-EDITORNODE,R17,stays,**Symptom.** A row in the Scanned Devices table has a small `No XML` badge next to the name. If you tick it an +openplc-editor/communication/ethercat/troubleshooting.md,42,168,device,D-REMOTE,R13,stays,"ou tick it and click **Add Selected**, the **Missing ESI XML for some devices** modal appears." +openplc-editor/communication/ethercat/troubleshooting.md,49,33,device,D-REMOTE,R13,stays,2. Download the ESI XML for the device from the manufacturer's website. +openplc-editor/communication/ethercat/troubleshooting.md,51,32,device,D-EDITORNODE,R17,stays,4. Re-run the scan and add the device again. +openplc-editor/communication/ethercat/troubleshooting.md,84,17,Device,D-REMOTE,R13,stays,## In the Slave Device Editor +openplc-editor/communication/ethercat/troubleshooting.md,86,6,Device,D-EDITORNODE,R17,stays,"### ""Device not found"" message" +openplc-editor/communication/ethercat/troubleshooting.md,88,61,device,D-LITERAL,R10,stays,**Symptom.** Opening a slave child node shows `The EtherCAT device could not be found. It may have been removed from the bus configurati +openplc-editor/communication/ethercat/troubleshooting.md,94,6,Device,D-REMOTE,R13,stays,"### ""Device Info > ESI File: Not found""" +openplc-editor/communication/ethercat/troubleshooting.md,96,20,Device,D-REMOTE,R13,stays,**Symptom.** The **Device Info** tab shows `ESI File: Not found`. +openplc-editor/communication/ethercat/troubleshooting.md,102,50,device,D-LITERAL,R10,stays,"### ""No CoE Object Dictionary available for this device"" on Startup Parameters" +openplc-editor/communication/ethercat/troubleshooting.md,122,133,Device,D-REMOTE,R13,stays,een the configured and the physical slave. Open the affected slave's [Device Info](slave-info) tab and compare the **Revision** field with what th +openplc-editor/communication/ethercat/troubleshooting.md,128,120,device,D-REMOTE,R13,stays,"matically (for example via **Auto-configure from ESI defaults**), the device's ESI may declare a default the slave does not actually accept. Vendo" +openplc-editor/communication/opc-ua/README.md,20,80,device,D-REMOTE,R13,stays,"eployments both protocols are used together, with Modbus on the field-device side and OPC-UA for higher-level integrations." +openplc-editor/communication/opc-ua/certificates.md,87,26,device,D-EDITORNODE,R17,stays,"| Lab testing across two devices | Auto-generate Self-Signed, accept on first connect | Add the engin" +openplc-editor/communication/opc-ua/general-settings.md,17,271,device,D-EDITORNODE,R17,stays,All Interfaces (0.0.0.0)** to accept connections on every network the device is connected to. | +openplc-editor/communication/opc-ua/general-settings.md,27,54,device,D-EDITORNODE,R17,stays,"For example, with the placeholder endpoint path on a device reachable at `192.168.1.50`:" +openplc-editor/communication/s7comm/data-blocks.md,79,47,device,D-EDITORNODE,R17,stays,| **Boolean Input (%IX)** | 1 bit | Read from device | `%IX` | Digital inputs | +openplc-editor/communication/s7comm/data-blocks.md,80,47,device,D-EDITORNODE,R17,stays,| **Boolean Output (%QX)** | 1 bit | Write to device | `%QX` | Digital outputs | +openplc-editor/communication/s7comm/data-blocks.md,82,45,device,D-EDITORNODE,R17,stays,| **Byte Input (%IB)** | 1 byte | Read from device | `%IB` | Byte inputs | +openplc-editor/communication/s7comm/data-blocks.md,83,45,device,D-EDITORNODE,R17,stays,| **Byte Output (%QB)** | 1 byte | Write to device | `%QB` | Byte outputs | +openplc-editor/communication/s7comm/data-blocks.md,84,46,device,D-EDITORNODE,R17,stays,| **Word Input (%IW)** | 2 bytes | Read from device | `%IW` | Word inputs | +openplc-editor/communication/s7comm/data-blocks.md,85,46,device,D-EDITORNODE,R17,stays,| **Word Output (%QW)** | 2 bytes | Write to device | `%QW` | Word outputs | +openplc-editor/communication/s7comm/data-blocks.md,87,53,device,D-EDITORNODE,R17,stays,| **Double Word Input (%ID)** | 4 bytes | Read from device | `%ID` | DWord inputs | +openplc-editor/communication/s7comm/data-blocks.md,88,53,device,D-EDITORNODE,R17,stays,| **Double Word Output (%QD)** | 4 bytes | Write to device | `%QD` | DWord outputs | +openplc-editor/communication/s7comm/data-blocks.md,90,51,device,D-EDITORNODE,R17,stays,| **Long Word Input (%IL)** | 8 bytes | Read from device | `%IL` | LWord inputs | +openplc-editor/communication/s7comm/data-blocks.md,91,51,device,D-EDITORNODE,R17,stays,| **Long Word Output (%QL)** | 8 bytes | Write to device | `%QL` | LWord outputs | +openplc-editor/communication/s7comm/example.md,53,44,device,D-EDITORNODE,R17,stays,Save the project and transfer it to a vPLC device the same way you would any other project. The runtime starts the S7Co +openplc-editor/communication/s7comm/logging.md,3,216,orchestrator,O-EDGEDEV,R04,changes,e runtime's standard log stream. The same stream that surfaces in the orchestrator's runtime view alongside Modbus and OPC-UA logs. +openplc-editor/communication/s7comm/logging.md,23,144,orchestrator,O-EDGEDEV,R04,changes,"this stream wherever you normally read runtime logs. Typically in the orchestrator's runtime view on the platform, or in the host's system journal if yo" +openplc-editor/communication/s7comm/plc-identity.md,5,224,device,D-EDITORNODE,R17,stays,"t is talking to. The SZL response carries identification strings. The device name, the module type, a serial number, a copyright line, and a modul" +openplc-editor/communication/s7comm/plc-identity.md,17,63,device,D-EDITORNODE,R17,stays,| **PLC Name** | Text | `OpenPLC Runtime` | 64 | The friendly device name returned to clients. | +openplc-editor/communication/s7comm/plc-identity.md,39,85,device,D-PLAIN,R14,stays,e a fleet of OpenPLC runtimes.** Setting a unique `Serial Number` per device makes them easy to distinguish in HMI device lists and asset register +openplc-editor/communication/s7comm/plc-identity.md,39,130,device,D-PLAIN,R14,stays,ique `Serial Number` per device makes them easy to distinguish in HMI device lists and asset registers. +openplc-editor/communication/s7comm/plc-identity.md,41,173,device,D-EDITORNODE,R17,stays,ady trusts. Match the `Module Type` and `Module Name` to the original device's strings. +openplc-editor/communication/s7comm/troubleshooting.md,84,67,orchestrator,O-EDGEDEV,R04,changes,"Logs are written to the runtime log stream, which surfaces in the orchestrator's runtime view and in the runtime host's system journal." +openplc-editor/communication/modbus/README.md,3,196,device,D-EDITORNODE,R17,stays,". Over the decades it has become the de facto standard for industrial device communication thanks to its simplicity, openness, and broad vendor su" +openplc-editor/communication/modbus/README.md,3,466,device,D-REMOTE,R13,stays,ur PLC programs to exchange data with virtually any Modbus-compatible device. +openplc-editor/communication/modbus/README.md,16,87,device,D-EDITORNODE,R17,stays,"nnot process the request (invalid address, unsupported function code, device busy), it returns an **exception response** with an error code. The c" +openplc-editor/communication/modbus/README.md,22,41,Device,D-EDITORNODE,R17,stays,| Transport | Medium | Addressing | Max Devices | Typical Speed | Use Case | +openplc-editor/communication/modbus/README.md,25,124,device,D-EDITORNODE,R17,stays,"D (1--247) | 247 per bus (RS-485) | 9600--115200 baud | Legacy serial devices, multi-drop RS-485 buses |" +openplc-editor/communication/modbus/README.md,29,92,device,D-REMOTE,R13,stays,"standard Modbus protocol data unit (PDU) inside a TCP/IP packet. Each device is identified by its IP address, and multiple simultaneous connection" +openplc-editor/communication/modbus/README.md,39,121,device,D-REMOTE,R13,stays,"serial lines (RS-232 for point-to-point, RS-485 for multi-drop). Each device on the bus has a unique **slave ID** (1--247). The bus operates in a" +openplc-editor/communication/modbus/README.md,39,229,device,D-EDITORNODE,R17,stays,ID** (1--247). The bus operates in a half-duplex mode where only one device transmits at a time. +openplc-editor/communication/modbus/README.md,41,72,device,D-REMOTE,R13,stays,odbus RTU supports **multi-drop** configurations where multiple slave devices share a single RS-485 serial bus. The client addresses each device b +openplc-editor/communication/modbus/README.md,41,140,device,D-REMOTE,R13,stays,"e devices share a single RS-485 serial bus. The client addresses each device by its slave ID, and only the addressed device responds. This makes R" +openplc-editor/communication/modbus/README.md,41,187,device,D-REMOTE,R13,stays,"client addresses each device by its slave ID, and only the addressed device responds. This makes RTU ideal for connecting multiple field instrume" +openplc-editor/communication/modbus/README.md,48,69,device,D-REMOTE,R13,stays,"| **Client** | Master | Initiates requests to poll data from remote devices such as sensors, VFDs, or other PLCs. | When your PLC needs to gathe" +openplc-editor/communication/modbus/README.md,48,163,device,D-EDITORNODE,R17,stays,"VFDs, or other PLCs. | When your PLC needs to gather data from field devices |" +openplc-editor/communication/modbus/README.md,54,85,device,D-EDITORNODE,R17,stays,"cification defines four data types, each mapped to a specific area of device memory:" +openplc-editor/communication/modbus/README.md,63,55,device,D-REMOTE,R13,stays,> **Note on 5-digit notation**: Many Modbus tools and device manuals display addresses with a leading digit that indicates the dat +openplc-editor/communication/modbus/README.md,99,200,device,D-EDITORNODE,R17,stays,ister in a group contains the most significant word. Some third-party devices may use little-endian or word-swapped byte order. Consult the device +openplc-editor/communication/modbus/README.md,99,270,device,D-EDITORNODE,R17,stays,devices may use little-endian or word-swapped byte order. Consult the device documentation if values appear garbled. +openplc-editor/communication/modbus/README.md,121,77,Device,D-REMOTE,R13,stays,"add a Modbus client (TCP)**: Click the **+** button, select **Remote Device**, choose **Modbus/TCP**, and enter a name." +openplc-editor/communication/modbus/README.md,122,77,Device,D-REMOTE,R13,stays,"add a Modbus client (RTU)**: Click the **+** button, select **Remote Device**, choose **Modbus/RTU**, and enter a name." +openplc-editor/communication/modbus/addressing.md,101,20,device,D-REMOTE,R13,stays,- **[Modbus remote device](../../device-config-overview)**: configure your vPLC as a master rea +openplc-editor/communication/modbus/addressing.md,101,34,device,D-EDITORNODE,R11b,stays,- **[Modbus remote device](../../device-config-overview)**: configure your vPLC as a master reading remote sl +openplc-editor/communication/modbus/client.md,1,17,device,D-REMOTE,R13,stays,# Modbus remote device (master) +openplc-editor/communication/modbus/client.md,3,186,device,D-REMOTE,R13,stays,"D, an external PLC, a Modbus-RTU gateway, configure a **Modbus remote device**. The vPLC becomes the master; the remote is the slave." +openplc-editor/communication/modbus/client.md,5,20,Device,D-REMOTE,R13,stays,"This lives under **Device** in the project tree, not under **Servers** (that's the *slave*-side" +openplc-editor/communication/modbus/client.md,7,17,device,D-REMOTE,R13,stays,## Add a remote device +openplc-editor/communication/modbus/client.md,10,18,Device,D-REMOTE,R13,stays,2. Pick **Remote Device** in the popover. +openplc-editor/communication/modbus/client.md,11,26,device,D-REMOTE,R13,stays,3. The dialog asks for a device name and a protocol. Pick **Modbus** from the dropdown. +openplc-editor/communication/modbus/client.md,13,13,Device,D-REMOTE,R13,stays,![Remote Device creation dialog with Protocol dropdown open showing Modbus (highlight +openplc-editor/communication/modbus/client.md,13,171,device,D-REMOTE,R11a,stays,"t/IP (greyed out), EtherCAT, and PROFINET (greyed out)](images/remote-device-create.png) *(EtherNet/IP and PROFINET are visible but greyed out, th" +openplc-editor/communication/modbus/client.md,17,31,Device,D-EDITORNODE,R17,stays,The new entry appears under **Device** in the tree. Click it to open the configuration editor. +openplc-editor/communication/modbus/client.md,19,17,device,D-REMOTE,R13,stays,> Modbus remote devices are gated to Runtime v4 and the Simulator. Other targets won't offer +openplc-editor/communication/modbus/client.md,23,10,Device,D-REMOTE,R13,stays,"![Remote Device editor for demo_remote_modbus: Transport TCP/IP, IP Address 127.0.0.1" +openplc-editor/communication/modbus/client.md,23,250,device,D-REMOTE,R11a,stays,"o IO groups configured. Click the + button to add one""](images/remote-device-empty.png)" +openplc-editor/communication/modbus/client.md,37,134,device,D-REMOTE,R13,stays,tive TCP slaves accept any ID; gateways use it to route to RS-485 sub-devices. | +openplc-editor/communication/modbus/client.md,58,149,device,D-REMOTE,R13,stays,"on code, one address range on the remote, one polling cycle. A remote device usually has several groups, one for reading temperatures, one for rea" +openplc-editor/communication/modbus/client.md,104,222,device,D-EDITORNODE,R11b,stays,", Function Code=Read Holding Registers (FC 3), Alias=-](images/remote-device-config.png)" +openplc-editor/communication/modbus/client.md,110,188,device,D-REMOTE,R11a,stays,"ster), Address=%IW0, Offset=0, an editable Alias field](images/remote-device-io-group-expanded.png)" +openplc-editor/communication/modbus/client.md,125,120,device,D-REMOTE,R11a,stays,"HoldingRegisters_0 now has alias ""sensor_pressure_psi""](images/remote-device-io-group-with-alias.png)" +openplc-editor/communication/modbus/client.md,133,18,device,D-REMOTE,R13,stays,A typical remote-device configuration has several groups: +openplc-editor/communication/modbus/client.md,156,13,Device,D-REMOTE,R13,stays,**No Remote Device option in the popover.** The active target doesn't support Modbus mas +openplc-editor/communication/modbus/client.md,158,65,orchestrator,O-EDGEDEV,R04,changes,"**TCP timeouts.** Host or port unreachable. From a shell on the orchestrator host: `telnet 502` should connect. Check firewalls, NAT, and tha" +openplc-editor/communication/modbus/server.md,10,125,Device,D-REMOTE,R13,stays,"showing Function, Function Block, Program, Data Type, Server, Remote Device options](../../images/create-element-popover.png)" +openplc-editor/communication/modbus/server.md,105,20,device,D-REMOTE,R13,stays,- **[Modbus remote device](client)**: configure your vPLC as a master reading remote slaves. +plans-and-billing/ai-credit-units.md,78,16,orchestrator,O-ENTITY,R05,changes,"- Plan quotas (orchestrators, devices, private projects)." +plans-and-billing/ai-credit-units.md,78,31,device,D-VPLC,H01,changes,"- Plan quotas (orchestrators, devices, private projects)." +plans-and-billing/plan-limits.md,5,23,Orchestrator,O-ENTITY,R05,changes,"![Plan limit reached, Orchestrator limit reached (1/1) on plan Community](images/orchestrator-plan-limit" +plans-and-billing/plan-limits.md,5,82,orchestrator,O-PATH,R02,changes,"t reached, Orchestrator limit reached (1/1) on plan Community](images/orchestrator-plan-limit.png)" +plans-and-billing/plan-limits.md,11,5,Orchestrator,O-ENTITY,R05,changes,| **Orchestrators** | 1 | 1 | 20 | 5 / seat | Unlimited | +plans-and-billing/plan-limits.md,12,10,device,D-VPLC,R18,changes,| **vPLC devices** (across all orchestrators) | 2 | 10 / seat | 100 | 20 / seat | Unl +plans-and-billing/plan-limits.md,12,32,orchestrator,O-ENTITY,R05,changes,| **vPLC devices** (across all orchestrators) | 2 | 10 / seat | 100 | 20 / seat | Unlimited | +plans-and-billing/plan-limits.md,38,26,orchestrator,O-ENTITY,R05,changes,- Trying to create a 2nd orchestrator on Community → orchestrator limit modal. +plans-and-billing/plan-limits.md,38,54,orchestrator,O-ENTITY,R05,changes,- Trying to create a 2nd orchestrator on Community → orchestrator limit modal. +plans-and-billing/plan-limits.md,39,46,device,D-VPLC,R18,changes,- Trying to create a 3rd vPLC on Community → device limit modal. +plans-and-billing/plan-limits.md,42,3,Device,D-VPLC,R18,changes,"![Device limit reached, 2/2 on Community](images/device-plan-limit.png)" +plans-and-billing/plan-limits.md,42,50,device,D-PATH,R11,changes,"![Device limit reached, 2/2 on Community](images/device-plan-limit.png)" +plans-and-billing/pricing.md,11,37,Orchestrator,O-ENTITY,R05,changes,| Plan | Price (annual) | ACUs/mo | Orchestrators | Devices | Private projects | AI Engineer | Trial | Best for | +plans-and-billing/pricing.md,11,53,Device,D-VPLC,H01,changes,| Plan | Price (annual) | ACUs/mo | Orchestrators | Devices | Private projects | AI Engineer | Trial | Best for | +plans-and-billing/pricing.md,30,5,Orchestrator,O-ENTITY,R05,changes,"- 1 Orchestrator, 2 Devices." +plans-and-billing/pricing.md,30,21,Device,D-VPLC,H01,changes,"- 1 Orchestrator, 2 Devices." +plans-and-billing/pricing.md,40,5,Orchestrator,O-ENTITY,R05,changes,"- 1 Orchestrator, 10 Devices per seat." +plans-and-billing/pricing.md,40,22,Device,D-VPLC,H01,changes,"- 1 Orchestrator, 10 Devices per seat." +plans-and-billing/pricing.md,50,6,Orchestrator,O-ENTITY,R05,changes,"- 20 Orchestrators, 100 Devices." +plans-and-billing/pricing.md,50,25,Device,D-VPLC,H01,changes,"- 20 Orchestrators, 100 Devices." +plans-and-billing/pricing.md,62,5,Orchestrator,O-ENTITY,R05,changes,"- 5 Orchestrators per seat, 20 Devices per seat." +plans-and-billing/pricing.md,62,32,Device,D-VPLC,H01,changes,"- 5 Orchestrators per seat, 20 Devices per seat." +plans-and-billing/pricing.md,72,15,orchestrator,O-ENTITY,R05,changes,- **Unlimited orchestrators and devices.** +plans-and-billing/pricing.md,72,33,device,D-VPLC,H01,changes,- **Unlimited orchestrators and devices.** +plans-and-billing/pricing.md,84,35,device,D-VPLC,H01,changes,- **Just exploring or running one device at home** → Community. +platform/autonomy-ai-assistant.md,18,40,Device,D-VPLC,R18,changes,"- **Explain a screen.** ""What does the Devices tab on my orchestrator do?""" +platform/autonomy-ai-assistant.md,18,58,orchestrator,O-ENTITY,R05,changes,"- **Explain a screen.** ""What does the Devices tab on my orchestrator do?""" +platform/autonomy-ai-assistant.md,71,96,device,D-VPLC,H01,changes,"ried.** ""I set the IP to 192.168.1.50 with mask 255.255.255.0 but the device shows N/A in Internal IP after restart.""" +platform/notifications.md,72,34,device,D-PLAIN,H02,stays,- **Push notifications to mobile devices.** Not yet supported. +platform/organizations/creating-an-org.md,41,17,orchestrator,O-ENTITY,R05,changes,"4. **Install an orchestrator for the org.** Same flow as personal, but performed while on the orga" +platform/organizations/creating-an-org.md,41,153,orchestrator,O-PATH,R02,changes,hile on the organization's dashboard. See **[Installing the agent](../orchestrators/installing-the-agent)**. +platform/organizations/history.md,24,23,orchestrator,O-ENTITY,R05,changes,"- **Resource audit**: orchestrators registered, vPLCs created/deleted, projects moved into or out of the" +platform/organizations/leaving-and-deleting.md,19,40,orchestrator,O-ENTITY,R05,changes,"- You lose access to all org projects, orchestrators, and devices immediately." +platform/organizations/leaving-and-deleting.md,19,59,device,D-VPLC,H01,changes,"- You lose access to all org projects, orchestrators, and devices immediately." +platform/organizations/leaving-and-deleting.md,45,11,orchestrator,O-ENTITY,R05,changes,- All org orchestrators (the cloud entries; the agents on the devices keep running with stal +platform/organizations/leaving-and-deleting.md,45,63,device,D-HOST,R15,stays,- All org orchestrators (the cloud entries; the agents on the devices keep running with stale credentials until you uninstall them locally +platform/organizations/leaving-and-deleting.md,46,16,device,D-VPLC,R18,changes,- All org vPLC devices. +platform/organizations/members-and-roles.md,47,48,orchestrator,O-ENTITY,R05,changes,"- The member loses access to all org projects, orchestrators, and devices." +platform/organizations/members-and-roles.md,47,67,device,D-VPLC,H01,changes,"- The member loses access to all org projects, orchestrators, and devices." +platform/organizations/org-dashboard.md,3,134,orchestrator,O-ENTITY,R05,changes,"s your personal dashboard but scoped to that organization's projects, orchestrators, and members." +platform/organizations/org-dashboard.md,5,54,orchestrator,O-ENTITY,R05,changes,"![Org dashboard for Autonomy-Mine, banner, projects, orchestrators, feed, trending](images/org-dashboard.png)" +platform/organizations/org-dashboard.md,15,83,orchestrator,O-ENTITY,R05,changes,"e} doesn't have an active plan yet.** Pick a plan to unlock projects, orchestrators, and AI access for your team." +platform/organizations/org-dashboard.md,26,5,Orchestrator,O-ENTITY,R05,changes,- **Orchestrators** card with **Manage orchestrator** button: lists the org's orchestr +platform/organizations/org-dashboard.md,26,40,orchestrator,O-ENTITY,R05,changes,- **Orchestrators** card with **Manage orchestrator** button: lists the org's orchestrators. +platform/organizations/org-dashboard.md,26,79,orchestrator,O-ENTITY,R05,changes,estrators** card with **Manage orchestrator** button: lists the org's orchestrators. +platform/organizations/overview.md,3,109,orchestrator,O-ENTITY,R05,changes,ace. Members of an organization see and work on the same projects and orchestrators. Organizations are how teams collaborate on Autonomy Edge. +platform/organizations/overview.md,12,19,orchestrator,O-ENTITY,R05,changes,- You want shared orchestrators and vPLCs. +platform/organizations/usage.md,17,5,Orchestrator,O-ENTITY,R05,changes,| **Orchestrators** | Orchestrator entries in this org (active + inactive). | +platform/organizations/usage.md,17,23,Orchestrator,O-ENTITY,R05,changes,| **Orchestrators** | Orchestrator entries in this org (active + inactive). | +platform/organizations/usage.md,18,5,Device,D-VPLC,R18,changes,| **Devices** | vPLC entries across all the org's orchestrators. | +platform/organizations/usage.md,18,51,orchestrator,O-ENTITY,R05,changes,| **Devices** | vPLC entries across all the org's orchestrators. | +platform/vplcs/connecting-from-editor.md,3,153,Device,D-EDITORNODE,H03,stays,](../../openplc-editor/overview)**. The editor's left sidebar has a **Devices → Orchestrators** panel; that's the only place the cloud platform an +platform/vplcs/connecting-from-editor.md,3,163,Orchestrator,O-ENTITY,R05,changes,enplc-editor/overview)**. The editor's left sidebar has a **Devices → Orchestrators** panel; that's the only place the cloud platform and the runtime me +platform/vplcs/connecting-from-editor.md,8,15,Device,D-EDITORNODE,H03,stays,"2. **Open the Devices panel.** In the editor's left sidebar expand **Devices**, then click" +platform/vplcs/connecting-from-editor.md,8,70,Device,D-EDITORNODE,H03,stays,"2. **Open the Devices panel.** In the editor's left sidebar expand **Devices**, then click **Orchestrators**. A panel slides out listing every or" +platform/vplcs/connecting-from-editor.md,8,94,Orchestrator,O-ENTITY,R05,changes,"anel.** In the editor's left sidebar expand **Devices**, then click **Orchestrators**. A panel slides out listing every orchestrator your account has ac" +platform/vplcs/connecting-from-editor.md,8,144,orchestrator,O-ENTITY,R05,changes,"ces**, then click **Orchestrators**. A panel slides out listing every orchestrator your account has access to." +platform/vplcs/connecting-from-editor.md,9,17,orchestrator,O-ENTITY,R05,changes,3. **Expand the orchestrator that owns your vPLC.** Each orchestrator entry shows its connection s +platform/vplcs/connecting-from-editor.md,9,58,orchestrator,O-ENTITY,R05,changes,3. **Expand the orchestrator that owns your vPLC.** Each orchestrator entry shows its connection status (Active / Inactive). Expand it to r +platform/vplcs/connecting-from-editor.md,10,45,device,D-HOST,R15,stays,4. **Select the target vPLC.** Click on the device row. It should report status **Running** (or you'll need to start it +platform/vplcs/connecting-from-editor.md,10,129,device,D-VPLC,H01,changes,should report status **Running** (or you'll need to start it via the device's 3-dot menu from the platform). +platform/vplcs/connecting-from-editor.md,42,24,orchestrator,O-ENTITY,R05,changes,## What happens if the orchestrator goes offline +platform/vplcs/connecting-from-editor.md,44,8,orchestrator,O-AGENT,H07,changes,If the orchestrator-agent loses its cloud connection while you're connected to a vPLC: +platform/vplcs/connecting-from-editor.md,47,73,orchestrator,O-ENTITY,R05,changes,"The editor can't issue new commands (Download, Stop, Start) until the orchestrator reconnects." +platform/vplcs/connecting-from-editor.md,48,27,device,D-PLAIN,R14,stays,- I/O traffic to physical devices is unaffected. +platform/vplcs/connecting-from-editor.md,50,10,orchestrator,O-ENTITY,R05,changes,"When the orchestrator returns to **Active**, your editor connection resumes automatically." +platform/vplcs/connecting-from-editor.md,56,41,Orchestrator,O-ENTITY,R05,changes,- **Troubleshooting connectivity** → **[Orchestrator not connecting](../../troubleshooting/orchestrator-not-connecting)**. +platform/vplcs/connecting-from-editor.md,56,92,orchestrator,O-PATH,R02,changes,onnectivity** → **[Orchestrator not connecting](../../troubleshooting/orchestrator-not-connecting)**. +platform/vplcs/creating-a-vplc.md,3,29,orchestrator,O-ENTITY,R05,changes,vPLCs are created inside an orchestrator. The flow is: +platform/vplcs/creating-a-vplc.md,5,13,orchestrator,O-ENTITY,R05,changes,1. Open the orchestrator that should host the new vPLC. +platform/vplcs/creating-a-vplc.md,6,18,Device,D-VPLC,R18,changes,2. Click **+ New Device**. +platform/vplcs/creating-a-vplc.md,7,36,Device,D-VPLC,R18,changes,3. Walk through the three-step Add Device wizard. +platform/vplcs/creating-a-vplc.md,11,13,Orchestrator,O-ENTITY,R05,changes,"From the **[Orchestrators list](../orchestrators/orchestrators-list)**, click the orchestrator" +platform/vplcs/creating-a-vplc.md,11,36,orchestrator,O-PATH,R02,changes,"From the **[Orchestrators list](../orchestrators/orchestrators-list)**, click the orchestrator card. You land on **[O" +platform/vplcs/creating-a-vplc.md,11,50,orchestrator,O-PATH,R02,changes,"From the **[Orchestrators list](../orchestrators/orchestrators-list)**, click the orchestrator card. You land on **[Orchestrator de" +platform/vplcs/creating-a-vplc.md,11,83,orchestrator,O-ENTITY,R05,changes,"Orchestrators list](../orchestrators/orchestrators-list)**, click the orchestrator card. You land on **[Orchestrator detail](../orchestrators/orchestrat" +platform/vplcs/creating-a-vplc.md,11,117,Orchestrator,O-ENTITY,R05,changes,"rs/orchestrators-list)**, click the orchestrator card. You land on **[Orchestrator detail](../orchestrators/orchestrator-detail)** with the **Devices**" +platform/vplcs/creating-a-vplc.md,11,141,orchestrator,O-PATH,R02,changes,", click the orchestrator card. You land on **[Orchestrator detail](../orchestrators/orchestrator-detail)** with the **Devices** tab active." +platform/vplcs/creating-a-vplc.md,11,155,orchestrator,O-PATH,R02,changes,chestrator card. You land on **[Orchestrator detail](../orchestrators/orchestrator-detail)** with the **Devices** tab active. +platform/vplcs/creating-a-vplc.md,11,189,Device,D-VPLC,R18,changes,chestrator detail](../orchestrators/orchestrator-detail)** with the **Devices** tab active. +platform/vplcs/creating-a-vplc.md,13,5,Device,D-VPLC,R18,changes,"The Devices tab shows your existing vPLCs as cards, plus a dashed **+ New Device" +platform/vplcs/creating-a-vplc.md,13,75,Device,D-VPLC,R18,changes,"Devices tab shows your existing vPLCs as cards, plus a dashed **+ New Device** tile at the end of the grid. Click that tile." +platform/vplcs/creating-a-vplc.md,19,7,Device,D-VPLC,R18,changes,"![New Device wizard step 1, Device Details: Device Name field and Runtime Version" +platform/vplcs/creating-a-vplc.md,19,29,Device,D-REMOTE,R13,stays,"![New Device wizard step 1, Device Details: Device Name field and Runtime Version dropdown, both empty](" +platform/vplcs/creating-a-vplc.md,19,45,Device,D-REMOTE,R13,stays,"![New Device wizard step 1, Device Details: Device Name field and Runtime Version dropdown, both empty](images/new-devic" +platform/vplcs/creating-a-vplc.md,19,116,device,D-PATH,R11,changes,"evice Name field and Runtime Version dropdown, both empty](images/new-device-step1.png)" +platform/vplcs/creating-a-vplc.md,23,5,Device,D-VPLC,R18,changes,| **Device Name** | Yes | A label for this vPLC. Must be unique within the orche +platform/vplcs/creating-a-vplc.md,23,76,orchestrator,O-ENTITY,R05,changes,"evice Name** | Yes | A label for this vPLC. Must be unique within the orchestrator. Examples: *Palletizer Machine*, *Conveyor Controller*, *vPLC 02*. |" +platform/vplcs/creating-a-vplc.md,28,122,device,D-PATH,R11,changes,"ease builds, then v4.0.9 - Latest, v4.0.8, v4.0.7, v4.0.6](images/new-device-runtime-dropdown.png)" +platform/vplcs/creating-a-vplc.md,30,167,orchestrator,O-ENTITY,R05,changes,"s the image on first use, so creation of subsequent vPLCs on the same orchestrator using the same version is much faster." +platform/vplcs/creating-a-vplc.md,38,82,device,D-PATH,R11,changes,"tep: a single default NIC (veth0) on eth0, DHCP, MAC auto](images/new-device-step2-network.png)" +platform/vplcs/creating-a-vplc.md,44,180,device,D-PATH,R11,changes,"P / Static IP radio, MAC Address Automatic / Manual radio](images/new-device-step2-nic-expanded.png)" +platform/vplcs/creating-a-vplc.md,60,95,device,D-LITERAL,H04,stays,"a Refresh button on the right and the empty-state message ""No serial devices detected on the host machine.""](images/new-device-step3-serial.png)" +platform/vplcs/creating-a-vplc.md,60,146,device,D-PATH,R11,changes,"message ""No serial devices detected on the host machine.""](images/new-device-step3-serial.png)" +platform/vplcs/creating-a-vplc.md,62,44,device,D-PLAIN,H02,stays,"If the runtime needs access to host serial devices (USB-to-RS485 adapters, on-board UARTs, etc.), the platform lets you" +platform/vplcs/creating-a-vplc.md,64,71,device,D-PLAIN,H02,stays,- **Refresh** in the top-right re-scans the host for available serial devices. +platform/vplcs/creating-a-vplc.md,65,17,device,D-PLAIN,H02,stays,- Each detected device shows its host path (e.g. `/dev/ttyUSB0`) and a checkbox to expose it +platform/vplcs/creating-a-vplc.md,67,64,device,D-LITERAL,H04,stays,"If the host has no serial hardware, this step shows *No serial devices detected on the host machine.* That's fine, leave it empty and conti" +platform/vplcs/creating-a-vplc.md,69,16,Device,D-VPLC,R18,changes,Click **Create Device** at the bottom right. +platform/vplcs/creating-a-vplc.md,79,24,device,D-VPLC,R18,changes,"You should see the new device card appear in the Devices tab within a few seconds, with status **Ru" +platform/vplcs/creating-a-vplc.md,79,50,Device,D-VPLC,R18,changes,"You should see the new device card appear in the Devices tab within a few seconds, with status **Running** once the runtime i" +platform/vplcs/network-modes.md,7,251,device,D-PLAIN,H02,stays,"Docker bridge IP that gets NAT'd. From the perspective of every other device on your LAN, a vPLC is just another piece of hardware with its own MA" +platform/vplcs/network-modes.md,22,36,device,D-PLAIN,H02,stays,- The IP can change at any time. A device that expects to find the vPLC at `192.168.1.50` may suddenly find not +platform/vplcs/network-modes.md,25,85,device,D-PLAIN,H02,stays,"*: development, demos, anything where the vPLC is a *client* of other devices (it polls them, not vice versa)." +platform/vplcs/network-modes.md,35,134,device,D-PLAIN,H02,stays,"physical port the NIC is attached to, and must not collide with other devices. Reserve the IP on your DHCP server to be safe. |" +platform/vplcs/network-modes.md,49,50,device,D-PLAIN,H02,stays,"**When to use**: production, anything that other devices need to reach by IP." +platform/vplcs/network-modes.md,79,60,orchestrator,O-AGENT,R03,changes,"For deeper details on the network monitor sidecar, see the orchestrator agent's own repo. For end users, ""it just works when the network chan" +platform/vplcs/network-modes.md,83,67,Device,D-VPLC,R18,changes,"The 3-dot menu on a vPLC card has **Edit**, which reopens the Add Device wizard pre-populated with the current settings. Change the network mo" +platform/vplcs/network-modes.md,88,33,device,D-PLAIN,H02,stays,- **Static IP collisions**: two devices answering for the same IP cause connectivity to flap. Use `ping -c 3 +platform/vplcs/network-modes.md,89,74,device,D-PLAIN,H02,stays,"*MAC duplicates**: if you set a manual MAC that collides with another device, the switch will get confused. Stick to locally administered MAC pref" +platform/vplcs/overview.md,1,8,device,D-VPLC,R18,changes,# vPLC devices +platform/vplcs/overview.md,11,194,device,D-HOST,H05,stays,of it. With vPLCs you can consolidate several PLC workloads onto one device. +platform/vplcs/overview.md,17,35,orchestrator,O-ENTITY,R05,changes,- A vPLC is created **inside** an orchestrator. Without an orchestrator there's nowhere for a vPLC to run. +platform/vplcs/overview.md,17,60,orchestrator,O-ENTITY,R05,changes,- A vPLC is created **inside** an orchestrator. Without an orchestrator there's nowhere for a vPLC to run. +platform/vplcs/overview.md,27,66,orchestrator,O-ENTITY,R05,changes,| **Inactive** | The container is unreachable. Usually means the orchestrator itself is offline. | +platform/vplcs/overview.md,29,89,orchestrator,O-ENTITY,R05,changes,tart actions are available from the vPLC card's **3-dot menu** in the orchestrator's Devices tab. +platform/vplcs/overview.md,29,104,Device,D-VPLC,R18,changes,e available from the vPLC card's **3-dot menu** in the orchestrator's Devices tab. +platform/vplcs/overview.md,45,20,device,D-VPLC,R18,changes,The number of vPLC devices you can run at once is governed by your plan. See **[Plan limits](.. +platform/vplcs/vplc-detail.md,3,64,device,D-VPLC,R18,changes,"The vPLC detail page is the read-only ""I want to see what this device looks like right now"" view. Open it by clicking a vPLC card on an **[" +platform/vplcs/vplc-detail.md,3,140,orchestrator,O-ENTITY,R05,changes,"looks like right now"" view. Open it by clicking a vPLC card on an **[orchestrator's detail page](../orchestrators/orchestrator-detail)**." +platform/vplcs/vplc-detail.md,3,171,orchestrator,O-PATH,R02,changes,en it by clicking a vPLC card on an **[orchestrator's detail page](../orchestrators/orchestrator-detail)**. +platform/vplcs/vplc-detail.md,3,185,orchestrator,O-PATH,R02,changes,ing a vPLC card on an **[orchestrator's detail page](../orchestrators/orchestrator-detail)**. +platform/vplcs/vplc-detail.md,13,35,Orchestrator,O-ENTITY,R05,changes,"The breadcrumb at the very top, **Orchestrators → {orchestrator name} → {vplc name}**, lets you jump back one step a" +platform/vplcs/vplc-detail.md,13,52,orchestrator,O-ENTITY,R05,changes,"The breadcrumb at the very top, **Orchestrators → {orchestrator name} → {vplc name}**, lets you jump back one step at a time." +platform/vplcs/vplc-detail.md,30,28,device,D-VPLC,H01,changes,Fields show `N/A` when the device hasn't reported back yet (e.g. status is Stopped or Inactive). +platform/vplcs/vplc-detail.md,34,188,device,D-PLAIN,H02,stays,", IP address, MAC address, and gateway. These are the addresses other devices on your physical LAN use to reach the vPLC, this is the IP you'd poi" +platform/vplcs/vplc-detail.md,40,109,device,D-HOST,R15,stays,tion buttons. Lifecycle actions live in the **3-dot menu** (⋮) on the device card in the orchestrator's Devices tab. +platform/vplcs/vplc-detail.md,40,128,orchestrator,O-ENTITY,R05,changes,ycle actions live in the **3-dot menu** (⋮) on the device card in the orchestrator's Devices tab. +platform/vplcs/vplc-detail.md,40,143,Device,D-HOST,R15,stays,ve in the **3-dot menu** (⋮) on the device card in the orchestrator's Devices tab. +platform/vplcs/vplc-detail.md,50,24,orchestrator,O-ENTITY,R05,changes,"| **Inactive** (parent orchestrator offline) | **Rename**, **Delete**. Lifecycle actions are unavailable" +platform/vplcs/vplc-detail.md,60,32,orchestrator,O-ENTITY,R05,changes,- **Status is Inactive but the orchestrator is Active** → check **[vPLC stuck in Stopped](../../troubleshooting/v +platform/vplcs/vplc-detail.md,67,24,orchestrator,O-ENTITY,R05,changes,- **Inspect the parent orchestrator's metrics** → **[Orchestrator detail](../orchestrators/orchestrator-d +platform/vplcs/vplc-detail.md,67,54,Orchestrator,O-ENTITY,R05,changes,- **Inspect the parent orchestrator's metrics** → **[Orchestrator detail](../orchestrators/orchestrator-detail)**. +platform/vplcs/vplc-detail.md,67,78,orchestrator,O-PATH,R02,changes,pect the parent orchestrator's metrics** → **[Orchestrator detail](../orchestrators/orchestrator-detail)**. +platform/vplcs/vplc-detail.md,67,92,orchestrator,O-PATH,R02,changes,t orchestrator's metrics** → **[Orchestrator detail](../orchestrators/orchestrator-detail)**. +platform/projects/creating-a-project.md,84,140,device,D-LITERAL,R10,stays,"the project skeleton: `programs/`, `functions/`, `function-blocks/`, `devices/`, and `project.json` with the language and cycle time you chose." +platform/projects/importing-and-forking.md,19,115,device,D-LITERAL,R10,stays,"the standard layout (`programs/`, `functions/`, `function-blocks/`, `devices/`, `project.json`)." +platform/projects/overview.md,3,305,device,D-EDITORNODE,H03,stays,"nce is that the file tree contains PLC programs, function blocks, and device configurations instead of generic source files, and the editor that o" +platform/projects/overview.md,16,4,device,D-LITERAL,R10,stays,"| `devices/` | Per-device configuration: hardware boards, communication protoco" +platform/projects/overview.md,16,20,device,D-EDITORNODE,H03,stays,"| `devices/` | Per-device configuration: hardware boards, communication protocols, remote I/O m" +platform/projects/overview.md,43,10,orchestrator,O-ENTITY,R05,changes,"1. The **orchestrator**, the agent on your edge device. Set one up with **[Installing the a" +platform/projects/overview.md,43,49,device,D-HOST,R15,stays,"1. The **orchestrator**, the agent on your edge device. Set one up with **[Installing the agent](../orchestrators/installing" +platform/projects/overview.md,43,101,orchestrator,O-PATH,R02,changes,gent on your edge device. Set one up with **[Installing the agent](../orchestrators/installing-the-agent)**. +platform/projects/overview.md,44,15,device,D-VPLC,R18,changes,"2. The **vPLC device**, the container that actually runs the OpenPLC runtime. Create one u" +platform/projects/overview.md,44,101,orchestrator,O-ENTITY,R05,changes,ntainer that actually runs the OpenPLC runtime. Create one under your orchestrator following **[Creating a vPLC](../vplcs/creating-a-vplc)**. +platform/projects/overview.md,46,61,Device,D-EDITORNODE,H03,stays,"From inside the editor, you connect to a vPLC by clicking **Devices → Orchestrators** in the left sidebar and then **Connect** on your v" +platform/projects/overview.md,46,71,Orchestrator,O-ENTITY,R05,changes,"From inside the editor, you connect to a vPLC by clicking **Devices → Orchestrators** in the left sidebar and then **Connect** on your vPLC. The first c" +platform/projects/project-page.md,13,173,device,D-EDITORNODE,H03,stays,"** scoped to this project. From the editor you can write code, browse devices, and deploy to a vPLC." +platform/projects/project-page.md,36,74,device,D-LITERAL,R10,stays,"he standard skeleton (`programs/`, `functions/`, `function-blocks/`, `devices/`, `project.json`) shown as folders and files. Click any folder to e" +platform/projects/visibility-and-sharing.md,20,35,orchestrator,O-ENTITY,R05,changes,- Run vPLC deployments using your orchestrators. +platform/orchestrators/installing-the-agent.md,3,11,orchestrator,O-ENTITY,R05,changes,Adding an orchestrator is a three-step wizard. You'll work in two places: your browser (to c +platform/orchestrators/installing-the-agent.md,3,103,orchestrator,O-ENTITY,R05,changes,e-step wizard. You'll work in two places: your browser (to create the orchestrator) and a terminal on your Linux edge device (to install the agent). +platform/orchestrators/installing-the-agent.md,3,151,device,D-HOST,R15,stays,rowser (to create the orchestrator) and a terminal on your Linux edge device (to install the agent). +platform/orchestrators/installing-the-agent.md,7,16,device,D-HOST,R15,stays,- A Linux edge device with: +platform/orchestrators/installing-the-agent.md,14,15,orchestrator,O-ENTITY,R05,changes,"The number of orchestrators you can pair at once is governed by your plan, see **[Plan limits](." +platform/orchestrators/installing-the-agent.md,18,29,Orchestrator,O-ENTITY,R05,changes,"In the web app, open the **[Orchestrators list](orchestrators-list)** (from the dashboard, click **Manage orch" +platform/orchestrators/installing-the-agent.md,18,49,orchestrator,O-PATH,R02,changes,"In the web app, open the **[Orchestrators list](orchestrators-list)** (from the dashboard, click **Manage orchestrators** on the O" +platform/orchestrators/installing-the-agent.md,18,107,orchestrator,O-ENTITY,R05,changes,"ators list](orchestrators-list)** (from the dashboard, click **Manage orchestrators** on the Orchestrators card). Click the **+ New Orchestrator** tile" +platform/orchestrators/installing-the-agent.md,18,130,Orchestrator,O-ENTITY,R05,changes,"rs-list)** (from the dashboard, click **Manage orchestrators** on the Orchestrators card). Click the **+ New Orchestrator** tile (the dashed card with a" +platform/orchestrators/installing-the-agent.md,18,169,Orchestrator,O-ENTITY,R05,changes,*Manage orchestrators** on the Orchestrators card). Click the **+ New Orchestrator** tile (the dashed card with a plus icon). +platform/orchestrators/installing-the-agent.md,22,7,Orchestrator,O-ENTITY,R05,changes,"![New Orchestrator wizard, Details step: Name and Description fields](images/new-orchest" +platform/orchestrators/installing-the-agent.md,22,82,orchestrator,O-PATH,R02,changes,"strator wizard, Details step: Name and Description fields](images/new-orchestrator-step1.png)" +platform/orchestrators/installing-the-agent.md,24,40,orchestrator,O-ENTITY,R05,changes,"At the top: a short summary of what an orchestrator is. Below it, a 3-step indicator: **1. Details** (selected), **2. Ins" +platform/orchestrators/installing-the-agent.md,30,67,orchestrator,O-ENTITY,R05,changes,"| **Name** | Yes | Any human-readable name. Used to identify this orchestrator everywhere in the platform. Examples: *Factory Floor Server*, *Lab Co" +platform/orchestrators/installing-the-agent.md,31,49,orchestrator,O-ENTITY,R05,changes,| **Description** *(optional)* | No | What this orchestrator is for. Helpful when you have several. | +platform/orchestrators/installing-the-agent.md,35,38,device,D-HOST,R15,stays,"## Step 3, Install the agent on your device" +platform/orchestrators/installing-the-agent.md,39,7,Orchestrator,O-ENTITY,R05,changes,"![New Orchestrator wizard, Install Agent step: terminal instructions and curl command](i" +platform/orchestrators/installing-the-agent.md,39,99,orchestrator,O-PATH,R02,changes,nstall Agent step: terminal instructions and curl command](images/new-orchestrator-step2.png) +platform/orchestrators/installing-the-agent.md,51,71,Orchestrator,O-ENTITY,R05,changes,"> **c.** Once the installation finishes, the script will display an **Orchestrator ID**. Copy it, you'll paste it in the next step." +platform/orchestrators/installing-the-agent.md,59,13,device,D-HOST,H05,stays,3. Generate device-side TLS keys and certificates for the mTLS connection. +platform/orchestrators/installing-the-agent.md,60,17,Orchestrator,O-ENTITY,R05,changes,4. Display an **Orchestrator ID** in the terminal once it's running. +platform/orchestrators/installing-the-agent.md,62,7,Orchestrator,O-ENTITY,R05,changes,> The Orchestrator ID generated by the wizard **expires after 5 minutes**. If the instal +platform/orchestrators/installing-the-agent.md,68,7,Orchestrator,O-ENTITY,R05,changes,"![New Orchestrator wizard, Link step: paste the Orchestrator ID](images/new-orchestrator" +platform/orchestrators/installing-the-agent.md,68,49,Orchestrator,O-ENTITY,R05,changes,"![New Orchestrator wizard, Link step: paste the Orchestrator ID](images/new-orchestrator-step3.png)" +platform/orchestrators/installing-the-agent.md,68,77,orchestrator,O-PATH,R02,changes,"Orchestrator wizard, Link step: paste the Orchestrator ID](images/new-orchestrator-step3.png)" +platform/orchestrators/installing-the-agent.md,70,19,Orchestrator,O-ENTITY,R05,changes,A single field: **Orchestrator ID**. Paste the ID that was printed in the terminal. +platform/orchestrators/installing-the-agent.md,72,16,Orchestrator,O-ENTITY,R05,changes,Click **Create Orchestrator** at the bottom right. The platform: +platform/orchestrators/installing-the-agent.md,76,13,orchestrator,O-ENTITY,R05,changes,- Marks the orchestrator as paired. +platform/orchestrators/installing-the-agent.md,78,25,orchestrator,O-ENTITY,R05,changes,A few seconds later the orchestrator's status flips to **Active** (or **Connected**) on the orchestrators +platform/orchestrators/installing-the-agent.md,78,93,orchestrator,O-ENTITY,R05,changes,e orchestrator's status flips to **Active** (or **Connected**) on the orchestrators list. You're done. +platform/orchestrators/installing-the-agent.md,82,51,device,D-HOST,R15,stays,Run `curl https://getedge.me | bash` again on the device. The installer detects the existing install and offers to re-generate +platform/orchestrators/installing-the-agent.md,84,75,Orchestrator,O-ENTITY,R05,changes,"he wizard has already timed out, close it and start over from **+ New Orchestrator**." +platform/orchestrators/installing-the-agent.md,88,20,orchestrator,O-ENTITY,R05,changes,"After pairing, the orchestrator card on the **[Orchestrators list](orchestrators-list)** shows live C" +platform/orchestrators/installing-the-agent.md,88,48,Orchestrator,O-ENTITY,R05,changes,"After pairing, the orchestrator card on the **[Orchestrators list](orchestrators-list)** shows live CPU, memory, and uptime metri" +platform/orchestrators/installing-the-agent.md,88,68,orchestrator,O-PATH,R02,changes,"After pairing, the orchestrator card on the **[Orchestrators list](orchestrators-list)** shows live CPU, memory, and uptime metrics that match what `" +platform/orchestrators/installing-the-agent.md,88,168,device,D-HOST,R15,stays,"ve CPU, memory, and uptime metrics that match what `top` shows on the device. If those numbers stay at zero or the status stays **Inactive**, see" +platform/orchestrators/installing-the-agent.md,88,247,Orchestrator,O-ENTITY,R05,changes,"f those numbers stay at zero or the status stays **Inactive**, see **[Orchestrator not connecting](../../troubleshooting/orchestrator-not-connecting)**." +platform/orchestrators/installing-the-agent.md,88,298,orchestrator,O-PATH,R02,changes,"Inactive**, see **[Orchestrator not connecting](../../troubleshooting/orchestrator-not-connecting)**." +platform/orchestrators/installing-the-agent.md,92,14,device,D-VPLC,R18,changes,- Add a vPLC device → **[Creating a vPLC](../vplcs/creating-a-vplc)**. +platform/orchestrators/installing-the-agent.md,93,30,Orchestrator,O-ENTITY,R05,changes,- View detailed metrics → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/installing-the-agent.md,93,51,orchestrator,O-PATH,R02,changes,- View detailed metrics → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/installing-the-agent.md,97,28,device,D-HOST,H05,stays,To remove the agent from a device: +platform/orchestrators/installing-the-agent.md,103,110,orchestrator,O-ENTITY,R05,changes,"r containers, removes their images, and deletes the TLS material. The orchestrator entry in the web app is not automatically deleted; remove it from **[" +platform/orchestrators/installing-the-agent.md,103,201,orchestrator,O-ENTITY,R05,changes,the web app is not automatically deleted; remove it from **[Managing orchestrators](managing-orchestrators)**. +platform/orchestrators/installing-the-agent.md,103,225,orchestrator,O-PATH,R02,changes,matically deleted; remove it from **[Managing orchestrators](managing-orchestrators)**. +platform/orchestrators/managing-orchestrators.md,1,12,orchestrator,O-ENTITY,R05,changes,# Managing orchestrators +platform/orchestrators/managing-orchestrators.md,3,9,orchestrator,O-ENTITY,R05,changes,"Once an orchestrator is paired you can rename it, update its agent, or delete it. All of t" +platform/orchestrators/managing-orchestrators.md,3,108,orchestrator,O-ENTITY,R05,changes,"n rename it, update its agent, or delete it. All of these live in the orchestrator card's **3-dot menu** on the **[Orchestrators list](orchestrators-lis" +platform/orchestrators/managing-orchestrators.md,3,153,Orchestrator,O-ENTITY,R05,changes,All of these live in the orchestrator card's **3-dot menu** on the **[Orchestrators list](orchestrators-list)**. +platform/orchestrators/managing-orchestrators.md,3,173,orchestrator,O-PATH,R02,changes,the orchestrator card's **3-dot menu** on the **[Orchestrators list](orchestrators-list)**. +platform/orchestrators/managing-orchestrators.md,5,3,Orchestrator,O-ENTITY,R05,changes,"![Orchestrator card with 3-dot menu open: Rename, Update, Delete](images/orchestrato" +platform/orchestrators/managing-orchestrators.md,5,74,orchestrator,O-PATH,R02,changes,"rchestrator card with 3-dot menu open: Rename, Update, Delete](images/orchestrator-3dot-menu.png)" +platform/orchestrators/managing-orchestrators.md,7,16,orchestrator,O-ENTITY,R05,changes,## Renaming an orchestrator +platform/orchestrators/managing-orchestrators.md,9,11,orchestrator,O-ENTITY,R05,changes,"1. On the orchestrator card, click the **⋮** icon next to the status badge." +platform/orchestrators/managing-orchestrators.md,13,57,orchestrator,O-ENTITY,R05,changes,"The name change is reflected immediately everywhere the orchestrator is shown (cards, detail page, breadcrumbs, dropdowns in the editor)." +platform/orchestrators/managing-orchestrators.md,15,5,orchestrator,O-ENTITY,R05,changes,The orchestrator's ID and certificate are unchanged. The agent on the device continues +platform/orchestrators/managing-orchestrators.md,15,71,device,D-HOST,R15,stays,The orchestrator's ID and certificate are unchanged. The agent on the device continues to work without intervention. +platform/orchestrators/managing-orchestrators.md,24,7,orchestrator,O-ENTITY,R05,changes,"- The orchestrator's status briefly flips to **Inactive** while the agent restarts, then" +platform/orchestrators/managing-orchestrators.md,25,28,orchestrator,O-ENTITY,R05,changes,- The version shown on the orchestrator's **Orchestrator** tab updates to the new version. +platform/orchestrators/managing-orchestrators.md,25,45,Orchestrator,O-ENTITY,R05,changes,- The version shown on the orchestrator's **Orchestrator** tab updates to the new version. +platform/orchestrators/managing-orchestrators.md,27,48,device,D-HOST,R15,stays,You can also re-run the install command on the device (`curl https://getedge.me | bash`) to upgrade manually if the cloud-s +platform/orchestrators/managing-orchestrators.md,29,16,orchestrator,O-ENTITY,R05,changes,## Deleting an orchestrator +platform/orchestrators/managing-orchestrators.md,32,49,orchestrator,O-ENTITY,R05,changes,2. Confirm the dialog. You may need to type the orchestrator's name to confirm. +platform/orchestrators/managing-orchestrators.md,36,7,orchestrator,O-ENTITY,R05,changes,- The orchestrator entry and its certificate. +platform/orchestrators/managing-orchestrators.md,37,12,device,D-VPLC,R18,changes,- All vPLC device entries associated with it. +platform/orchestrators/managing-orchestrators.md,38,35,orchestrator,O-ENTITY,R05,changes,- Any historical metrics for that orchestrator. +platform/orchestrators/managing-orchestrators.md,40,58,device,D-HOST,R15,stays,"It does **not** automatically uninstall the agent on the device. If the device is still running the agent, it will keep retrying to c" +platform/orchestrators/managing-orchestrators.md,40,73,device,D-HOST,R15,stays,"does **not** automatically uninstall the agent on the device. If the device is still running the agent, it will keep retrying to connect with sta" +platform/orchestrators/managing-orchestrators.md,42,30,device,D-HOST,R15,stays,"- Uninstall the agent on the device (`curl https://getedge.me | bash -s -- --uninstall`), or" +platform/orchestrators/managing-orchestrators.md,43,12,device,D-HOST,H05,stays,- Pair the device with a *new* orchestrator entry by running the install command again. +platform/orchestrators/managing-orchestrators.md,43,32,orchestrator,O-ENTITY,R05,changes,- Pair the device with a *new* orchestrator entry by running the install command again. +platform/orchestrators/managing-orchestrators.md,49,35,device,D-HOST,R15,stays,"- Stop the agent container on the device (`docker stop orchestrator-agent`), the orchestrator goes Inactive in" +platform/orchestrators/managing-orchestrators.md,49,56,orchestrator,O-LITERAL,R01,stays,"- Stop the agent container on the device (`docker stop orchestrator-agent`), the orchestrator goes Inactive in the web app." +platform/orchestrators/managing-orchestrators.md,49,82,orchestrator,O-ENTITY,R05,changes,"agent container on the device (`docker stop orchestrator-agent`), the orchestrator goes Inactive in the web app." +platform/orchestrators/managing-orchestrators.md,50,33,orchestrator,O-LITERAL,R01,stays,"- Start it again (`docker start orchestrator-agent`), status returns to Active within a few seconds." +platform/orchestrators/managing-orchestrators.md,54,26,orchestrator,O-ENTITY,R05,changes,## Moving a vPLC between orchestrators +platform/orchestrators/managing-orchestrators.md,56,60,orchestrator,O-ENTITY,R05,changes,Not supported today. The vPLC entry is bound to its parent orchestrator. To migrate workload: +platform/orchestrators/managing-orchestrators.md,58,41,orchestrator,O-ENTITY,R05,changes,1. Create a new vPLC on the destination orchestrator (**[Creating a vPLC](../vplcs/creating-a-vplc)**). +platform/orchestrators/managing-orchestrators.md,60,45,orchestrator,O-ENTITY,R05,changes,3. Delete the original vPLC from the source orchestrator. +platform/orchestrators/managing-orchestrators.md,64,9,device,D-VPLC,R18,changes,- **Add devices to a renamed orchestrator** → **[Creating a vPLC](../vplcs/creating- +platform/orchestrators/managing-orchestrators.md,64,30,orchestrator,O-ENTITY,R05,changes,- **Add devices to a renamed orchestrator** → **[Creating a vPLC](../vplcs/creating-a-vplc)**. +platform/orchestrators/managing-orchestrators.md,65,40,Orchestrator,O-ENTITY,R05,changes,- **Check on uptime and metrics** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/managing-orchestrators.md,65,61,orchestrator,O-PATH,R02,changes,- **Check on uptime and metrics** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/managing-orchestrators.md,66,30,Orchestrator,O-ENTITY,R05,changes,- **Connection issues** → **[Orchestrator not connecting](../../troubleshooting/orchestrator-not-connecting)**. +platform/orchestrators/managing-orchestrators.md,66,81,orchestrator,O-PATH,R02,changes,tion issues** → **[Orchestrator not connecting](../../troubleshooting/orchestrator-not-connecting)**. +platform/orchestrators/orchestrator-detail.md,1,3,Orchestrator,O-ENTITY,R05,changes,# Orchestrator detail +platform/orchestrators/orchestrator-detail.md,3,13,orchestrator,O-ENTITY,R05,changes,Clicking an orchestrator card from the **[Orchestrators list](orchestrators-list)** opens its +platform/orchestrators/orchestrator-detail.md,3,43,Orchestrator,O-ENTITY,R05,changes,Clicking an orchestrator card from the **[Orchestrators list](orchestrators-list)** opens its detail page. The page has two +platform/orchestrators/orchestrator-detail.md,3,63,orchestrator,O-PATH,R02,changes,Clicking an orchestrator card from the **[Orchestrators list](orchestrators-list)** opens its detail page. The page has two tabs: **Devices** (d +platform/orchestrators/orchestrator-detail.md,3,133,Device,D-VPLC,H01,changes,orchestrators-list)** opens its detail page. The page has two tabs: **Devices** (default) and **Orchestrator**. +platform/orchestrators/orchestrator-detail.md,3,159,Orchestrator,O-ENTITY,R05,changes,s its detail page. The page has two tabs: **Devices** (default) and **Orchestrator**. +platform/orchestrators/orchestrator-detail.md,5,4,Device,D-VPLC,R18,changes,## Devices tab +platform/orchestrators/orchestrator-detail.md,7,3,Device,D-VPLC,R18,changes,![Devices tab of the Toradex Ivy orchestrator showing two vPLC cards (vPLC 02 +platform/orchestrators/orchestrator-detail.md,7,34,orchestrator,O-ENTITY,R05,changes,"![Devices tab of the Toradex Ivy orchestrator showing two vPLC cards (vPLC 02 and plc1, both Stopped) plus the New" +platform/orchestrators/orchestrator-detail.md,7,116,Device,D-VPLC,R18,changes,"showing two vPLC cards (vPLC 02 and plc1, both Stopped) plus the New Device tile](images/orchestrator-detail-devices.png)" +platform/orchestrators/orchestrator-detail.md,7,136,orchestrator,O-PATH,R02,changes,"rds (vPLC 02 and plc1, both Stopped) plus the New Device tile](images/orchestrator-detail-devices.png)" +platform/orchestrators/orchestrator-detail.md,7,156,device,D-PATH,R11,changes,"1, both Stopped) plus the New Device tile](images/orchestrator-detail-devices.png)" +platform/orchestrators/orchestrator-detail.md,9,5,device,D-VPLC,R18,changes,The devices tab is a grid of every vPLC running (or stopped) on this orchestrato +platform/orchestrators/orchestrator-detail.md,9,70,orchestrator,O-ENTITY,R05,changes,"The devices tab is a grid of every vPLC running (or stopped) on this orchestrator, plus a **+ New Device** tile to add another." +platform/orchestrators/orchestrator-detail.md,9,99,Device,D-VPLC,R18,changes,"every vPLC running (or stopped) on this orchestrator, plus a **+ New Device** tile to add another." +platform/orchestrators/orchestrator-detail.md,11,6,device,D-VPLC,H01,changes,Each device card shows: +platform/orchestrators/orchestrator-detail.md,16,53,device,D-VPLC,H01,changes,| **Name** | The name you gave when you created the device. | +platform/orchestrators/orchestrator-detail.md,19,24,device,D-VPLC,H01,changes,"| **3-dot menu** | Per-device actions: start, stop, restart, edit, delete. |" +platform/orchestrators/orchestrator-detail.md,25,13,Device,D-VPLC,R18,changes,The **+ New Device** tile launches the **[Add Device wizard](../vplcs/creating-a-vplc)** +platform/orchestrators/orchestrator-detail.md,25,47,Device,D-VPLC,R18,changes,The **+ New Device** tile launches the **[Add Device wizard](../vplcs/creating-a-vplc)**. +platform/orchestrators/orchestrator-detail.md,27,4,Orchestrator,O-ENTITY,R05,changes,## Orchestrator tab +platform/orchestrators/orchestrator-detail.md,29,11,Orchestrator,O-ENTITY,R05,changes,"![SLM-RP4 Orchestrator tab: OS Linux 6.12.35-rt10-v8+, 4 CPU cores, 1.80 GB memory, 14 disk" +platform/orchestrators/orchestrator-detail.md,29,184,orchestrator,O-PATH,R02,changes,"8.2.4, agent version v1.3.3, plus CPU and Memory Usage charts](images/orchestrator-info.png)" +platform/orchestrators/orchestrator-detail.md,31,5,Orchestrator,O-ENTITY,R05,changes,The Orchestrator tab is a read-only view of the edge device's specs and current resour +platform/orchestrators/orchestrator-detail.md,31,54,device,D-HOST,R15,stays,The Orchestrator tab is a read-only view of the edge device's specs and current resource usage. +platform/orchestrators/orchestrator-detail.md,35,5,Orchestrator,O-ENTITY,R05,changes,- **Orchestrator name** and status badge (Inactive / Active). +platform/orchestrators/orchestrator-detail.md,38,96,orchestrator,O-ENTITY,R05,changes,'s first heartbeat and are refreshed periodically. On an **Inactive** orchestrator they show `-` because no data has been reported yet. +platform/orchestrators/orchestrator-detail.md,42,171,orchestrator,O-ENTITY,R05,changes,u change the window: 15m / 1h / 6h / 24h / 7d. The chart is empty for orchestrators that haven't been connected long enough to accumulate data. +platform/orchestrators/orchestrator-detail.md,52,32,orchestrator,O-ENTITY,R05,changes,The tabs are sticky inside the orchestrator detail page. Refreshing the page keeps you on the same tab thanks to +platform/orchestrators/orchestrator-detail.md,56,46,Orchestrator,O-ENTITY,R05,changes,"At the top of the page, a breadcrumb shows **Orchestrators → {orchestrator name}** so you can jump back to the **[list](orchest" +platform/orchestrators/orchestrator-detail.md,56,63,orchestrator,O-ENTITY,R05,changes,"At the top of the page, a breadcrumb shows **Orchestrators → {orchestrator name}** so you can jump back to the **[list](orchestrators-list)** wi" +platform/orchestrators/orchestrator-detail.md,56,121,orchestrator,O-PATH,R02,changes,strators → {orchestrator name}** so you can jump back to the **[list](orchestrators-list)** with one click. +platform/orchestrators/orchestrator-detail.md,60,19,device,D-VPLC,R18,changes,"- **Add or manage devices** → **[Creating a vPLC](../vplcs/creating-a-vplc)**, **[vPLC detail]" +platform/orchestrators/orchestrator-detail.md,61,47,orchestrator,O-ENTITY,R05,changes,- **Rename / delete / re-pair** → **[Managing orchestrators](managing-orchestrators)**. +platform/orchestrators/orchestrator-detail.md,61,71,orchestrator,O-PATH,R02,changes,- **Rename / delete / re-pair** → **[Managing orchestrators](managing-orchestrators)**. +platform/orchestrators/orchestrator-detail.md,62,13,device,D-VPLC,R18,changes,- **Inspect device-level network info** → **[Network modes](../vplcs/network-modes)**. +platform/orchestrators/orchestrators-list.md,1,3,Orchestrator,O-ENTITY,R05,changes,# Orchestrators list +platform/orchestrators/orchestrators-list.md,3,5,Orchestrator,O-ENTITY,R05,changes,"The Orchestrators list shows every orchestrator under the current workspace, one card" +platform/orchestrators/orchestrators-list.md,3,36,orchestrator,O-ENTITY,R05,changes,"The Orchestrators list shows every orchestrator under the current workspace, one card per orchestrator with live stat" +platform/orchestrators/orchestrators-list.md,3,91,orchestrator,O-ENTITY,R05,changes,"st shows every orchestrator under the current workspace, one card per orchestrator with live stats. Open it from the dashboard by clicking **Manage orch" +platform/orchestrators/orchestrators-list.md,3,169,orchestrator,O-ENTITY,R05,changes,ator with live stats. Open it from the dashboard by clicking **Manage orchestrators** on the **Orchestrators** card. +platform/orchestrators/orchestrators-list.md,3,194,Orchestrator,O-ENTITY,R05,changes,n it from the dashboard by clicking **Manage orchestrators** on the **Orchestrators** card. +platform/orchestrators/orchestrators-list.md,5,3,Orchestrator,O-ENTITY,R05,changes,"![Orchestrators list showing two orchestrators (SLM-RP4 active with 1 device, Torade" +platform/orchestrators/orchestrators-list.md,5,34,orchestrator,O-ENTITY,R05,changes,"![Orchestrators list showing two orchestrators (SLM-RP4 active with 1 device, Toradex Ivy inactive with 2 devices)" +platform/orchestrators/orchestrators-list.md,5,71,device,D-VPLC,H01,changes,"![Orchestrators list showing two orchestrators (SLM-RP4 active with 1 device, Toradex Ivy inactive with 2 devices) plus the New Orchestrator tile" +platform/orchestrators/orchestrators-list.md,5,107,device,D-VPLC,H01,changes,"hestrators (SLM-RP4 active with 1 device, Toradex Ivy inactive with 2 devices) plus the New Orchestrator tile on the right](images/orchestrators-l" +platform/orchestrators/orchestrators-list.md,5,129,Orchestrator,O-ENTITY,R05,changes,"tive with 1 device, Toradex Ivy inactive with 2 devices) plus the New Orchestrator tile on the right](images/orchestrators-list.png)" +platform/orchestrators/orchestrators-list.md,5,168,orchestrator,O-PATH,R02,changes,e with 2 devices) plus the New Orchestrator tile on the right](images/orchestrators-list.png) +platform/orchestrators/orchestrators-list.md,9,33,orchestrator,O-ENTITY,R05,changes,- **Search…**: filters cards by orchestrator name as you type. +platform/orchestrators/orchestrators-list.md,10,16,Orchestrator,O-ENTITY,R05,changes,- **What is an Orchestrator?** floating button (bottom right): opens a short explainer modal. Sam +platform/orchestrators/orchestrators-list.md,12,4,Orchestrator,O-ENTITY,R05,changes,## Orchestrator card +platform/orchestrators/orchestrators-list.md,21,24,orchestrator,O-ENTITY,R05,changes,"| **3-dot menu** | Per-orchestrator actions: rename, regenerate registration ID, delete. See **[Managing" +platform/orchestrators/orchestrators-list.md,21,106,orchestrator,O-ENTITY,R05,changes,"actions: rename, regenerate registration ID, delete. See **[Managing orchestrators](managing-orchestrators)**. |" +platform/orchestrators/orchestrators-list.md,21,130,orchestrator,O-PATH,R02,changes,"rate registration ID, delete. See **[Managing orchestrators](managing-orchestrators)**. |" +platform/orchestrators/orchestrators-list.md,22,35,device,D-HOST,R15,stays,"| **CPU** | Live CPU usage on the device, in cores (load average) or percent. |" +platform/orchestrators/orchestrators-list.md,25,7,device,D-VPLC,R18,changes,| **N devices** (expandable) | Number of vPLC devices attached to this orchestrato +platform/orchestrators/orchestrators-list.md,25,47,device,D-VPLC,R18,changes,| **N devices** (expandable) | Number of vPLC devices attached to this orchestrator. Click to expand and see the list inli +platform/orchestrators/orchestrators-list.md,25,72,orchestrator,O-ENTITY,R05,changes,**N devices** (expandable) | Number of vPLC devices attached to this orchestrator. Click to expand and see the list inline. | +platform/orchestrators/orchestrators-list.md,27,44,orchestrator,O-ENTITY,R05,changes,Stats are blank or zero on an **Inactive** orchestrator because the agent isn't reporting anything. +platform/orchestrators/orchestrators-list.md,29,18,device,D-VPLC,H01,changes,## Expanding the devices list +platform/orchestrators/orchestrators-list.md,31,15,device,D-VPLC,H01,changes,Click the **N devices** row at the bottom of any card to expand it inline: +platform/orchestrators/orchestrators-list.md,33,97,orchestrator,O-PATH,R02,changes,"line, showing vPLC 01 with 90h 49m uptime and a success badge](images/orchestrators-devices-expanded.png)" +platform/orchestrators/orchestrators-list.md,33,111,device,D-PATH,R11,changes,vPLC 01 with 90h 49m uptime and a success badge](images/orchestrators-devices-expanded.png) +platform/orchestrators/orchestrators-list.md,35,6,device,D-VPLC,H01,changes,Each device row shows: +platform/orchestrators/orchestrators-list.md,37,3,Device,D-VPLC,H01,changes,- Device icon. +platform/orchestrators/orchestrators-list.md,38,3,Device,D-VPLC,R18,changes,"- Device name (e.g. *vPLC 01*, *plc1*)." +platform/orchestrators/orchestrators-list.md,43,54,device,D-VPLC,H01,changes,"This is a quick way to see what's running on a given device without leaving the list. To see a single device's details, click its" +platform/orchestrators/orchestrators-list.md,43,103,device,D-VPLC,R18,changes,"s running on a given device without leaving the list. To see a single device's details, click its row, you'll land on the **[vPLC detail](../vplcs" +platform/orchestrators/orchestrators-list.md,45,16,orchestrator,O-ENTITY,R05,changes,## Adding more orchestrators +platform/orchestrators/orchestrators-list.md,47,20,Orchestrator,O-ENTITY,R05,changes,The dashed **+ New Orchestrator** tile to the right of your existing cards opens the **[install wizar +platform/orchestrators/orchestrators-list.md,47,144,orchestrator,O-ENTITY,R05,changes,"s opens the **[install wizard](installing-the-agent)**. The number of orchestrators you can have at once depends on your plan, see **[Plan limits](../.." +platform/orchestrators/orchestrators-list.md,51,45,orchestrator,O-ENTITY,R05,changes,"Cards are listed in creation order. As more orchestrators are added, the search bar at the top is the fastest way to find one." +platform/orchestrators/orchestrators-list.md,55,30,Orchestrator,O-ENTITY,R05,changes,- **Click into a card** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/orchestrators-list.md,55,51,orchestrator,O-PATH,R02,changes,- **Click into a card** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/orchestrators-list.md,56,17,orchestrator,O-ENTITY,R05,changes,- **Add another orchestrator** → **[Installing the agent](installing-the-agent)**. +platform/orchestrators/orchestrators-list.md,57,42,orchestrator,O-ENTITY,R05,changes,- **Rename or delete one** → **[Managing orchestrators](managing-orchestrators)**. +platform/orchestrators/orchestrators-list.md,57,66,orchestrator,O-PATH,R02,changes,- **Rename or delete one** → **[Managing orchestrators](managing-orchestrators)**. +platform/orchestrators/overview.md,1,3,Orchestrator,O-ENTITY,R05,changes,# Orchestrators +platform/orchestrators/overview.md,3,6,orchestrator,O-ENTITY,R05,changes,An **orchestrator** is the cloud-side representation of a small piece of software (the +platform/orchestrators/overview.md,3,89,orchestrator,O-AGENT,R03,changes,* is the cloud-side representation of a small piece of software (the *orchestrator agent*) that you run on your edge hardware. The agent's job is to man +platform/orchestrators/overview.md,5,23,orchestrator,O-ENTITY,R05,changes,"You need at least one orchestrator before you can deploy a project. The agent runs on Linux only, typica" +platform/orchestrators/overview.md,11,140,device,D-HOST,R15,stays,redictable timing. Running the runtime container directly on the edge device (rather than in the cloud) keeps latency to the I/O hardware low. +platform/orchestrators/overview.md,13,239,device,D-PLAIN,R14,stays,"dalone PLC would. Sensors, drives, and HMIs see vPLCs as just another device on the wire." +platform/orchestrators/overview.md,15,38,orchestrator,O-ENTITY,R05,changes,"## What you get when you ""create"" an orchestrator" +platform/orchestrators/overview.md,17,13,orchestrator,O-ENTITY,R05,changes,Creating an orchestrator in the web app: +platform/orchestrators/overview.md,19,22,orchestrator,O-ENTITY,R05,changes,1. Reserves a unique orchestrator entity in the cloud with the name and ID you give it. +platform/orchestrators/overview.md,21,52,device,D-HOST,R15,stays,3. Waits for the agent to call home from your edge device and complete the pairing. +platform/orchestrators/overview.md,23,20,orchestrator,O-ENTITY,R05,changes,"After pairing, the orchestrator's status moves from **Inactive** to **Active** (or **Connected**) and" +platform/orchestrators/overview.md,23,129,device,D-VPLC,R18,changes,tive** to **Active** (or **Connected**) and you can start adding vPLC devices to it. +platform/orchestrators/overview.md,30,99,orchestrator,O-ENTITY,R05,changes,"with CPU, memory, disk, and uptime metrics: the values you see on the orchestrator card." +platform/orchestrators/overview.md,36,125,orchestrator,O-LITERAL,R01,stays,"on lives in its [GitHub repository](https://github.com/Autonomy-Logic/orchestrator-agent). Users don't normally need to read it, installation is one com" +platform/orchestrators/overview.md,40,28,device,D-HOST,H05,stays,- **Install the agent on a device** → **[Installing the agent](installing-the-agent)**. +platform/orchestrators/overview.md,41,14,orchestrator,O-ENTITY,R05,changes,- **See your orchestrators in the web app** → **[Orchestrators list](orchestrators-list)**. +platform/orchestrators/overview.md,41,50,Orchestrator,O-ENTITY,R05,changes,- **See your orchestrators in the web app** → **[Orchestrators list](orchestrators-list)**. +platform/orchestrators/overview.md,41,70,orchestrator,O-PATH,R02,changes,- **See your orchestrators in the web app** → **[Orchestrators list](orchestrators-list)**. +platform/orchestrators/overview.md,42,22,orchestrator,O-ENTITY,R05,changes,- **Inspect a single orchestrator** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/overview.md,42,42,Orchestrator,O-ENTITY,R05,changes,- **Inspect a single orchestrator** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/overview.md,42,63,orchestrator,O-PATH,R02,changes,- **Inspect a single orchestrator** → **[Orchestrator detail](orchestrator-detail)**. +platform/orchestrators/overview.md,43,35,orchestrator,O-ENTITY,R05,changes,"- **Rename, delete, or replace an orchestrator** → **[Managing orchestrators](managing-orchestrators)**." +platform/orchestrators/overview.md,43,64,orchestrator,O-ENTITY,R05,changes,"- **Rename, delete, or replace an orchestrator** → **[Managing orchestrators](managing-orchestrators)**." +platform/orchestrators/overview.md,43,88,orchestrator,O-PATH,R02,changes,"e, or replace an orchestrator** → **[Managing orchestrators](managing-orchestrators)**." +platform/orchestrators/overview.md,44,22,orchestrator,O-ENTITY,R05,changes,- **Add a vPLC to an orchestrator** → **[Creating a vPLC](../vplcs/creating-a-vplc)**. +platform/forum/overview.md,11,21,orchestrator,O-ENTITY,R05,changes,"Unlike projects and orchestrators, the forum is not workspace-scoped. There's one forum for everyone," +troubleshooting/orchestrator-not-connecting.md,1,3,Orchestrator,O-ENTITY,R05,changes,# Orchestrator not connecting +troubleshooting/orchestrator-not-connecting.md,5,7,orchestrator,O-ENTITY,R05,changes,- The orchestrator card shows **Inactive** indefinitely. +troubleshooting/orchestrator-not-connecting.md,7,62,Orchestrator,O-ENTITY,R05,changes,- You just ran the install command but the wizard's **Create Orchestrator** button never finds the agent. +troubleshooting/orchestrator-not-connecting.md,9,3,Orchestrator,O-ENTITY,R05,changes,![Orchestrator card in Inactive state](images/orchestrator-inactive.png) +troubleshooting/orchestrator-not-connecting.md,9,47,orchestrator,O-PATH,R02,changes,![Orchestrator card in Inactive state](images/orchestrator-inactive.png) +troubleshooting/orchestrator-not-connecting.md,15,35,device,D-HOST,R15,stays,Re-check the terminal on the edge device. The installer should have ended with a banner showing the **Orchestr +troubleshooting/orchestrator-not-connecting.md,15,103,Orchestrator,O-ENTITY,R05,changes,"e device. The installer should have ended with a banner showing the **Orchestrator ID**. If it didn't, the install crashed mid-way." +troubleshooting/orchestrator-not-connecting.md,22,101,orchestrator,O-LITERAL,R01,stays,installer downloads the agent container from `ghcr.io/autonomy-logic/orchestrator-agent`. Confirm with `docker pull hello-world` to test general Docker +troubleshooting/orchestrator-not-connecting.md,24,49,Orchestrator,O-ENTITY,R05,changes,"Once the install finishes cleanly and prints an Orchestrator ID, return to the wizard and paste it." +troubleshooting/orchestrator-not-connecting.md,26,15,Orchestrator,O-ENTITY,R05,changes,## 2. Did the Orchestrator ID expire? +troubleshooting/orchestrator-not-connecting.md,30,53,device,D-HOST,R15,stays,Fix: re-run `curl https://getedge.me | bash` on the device. It prints a fresh ID. Paste it into a *new* wizard (close any expire +troubleshooting/orchestrator-not-connecting.md,38,69,device,D-HOST,R15,stays,"- **DNS**: verify with `getent hosts edge.autonomylogic.com` on the device. If it fails, check `/etc/resolv.conf`." +troubleshooting/orchestrator-not-connecting.md,50,8,device,D-HOST,R15,stays,On the device: +troubleshooting/orchestrator-not-connecting.md,53,18,orchestrator,O-LITERAL,R01,stays,docker ps | grep orchestrator-agent +troubleshooting/orchestrator-not-connecting.md,59,14,orchestrator,O-LITERAL,R01,stays,docker start orchestrator-agent +troubleshooting/orchestrator-not-connecting.md,65,24,orchestrator,O-LITERAL,R01,stays,docker logs --tail 100 orchestrator-agent +troubleshooting/orchestrator-not-connecting.md,71,40,device,D-HOST,H05,stays,- `Certificate validation failed`: the device's clock is wrong. Run `ntpdate -u pool.ntp.org` or `timedatectl set-n +troubleshooting/orchestrator-not-connecting.md,72,23,orchestrator,O-ENTITY,R05,changes,"- `Unauthorized`: the orchestrator was deleted in the cloud. Re-pair from the wizard, or run `curl https" +troubleshooting/orchestrator-not-connecting.md,74,31,orchestrator,O-ENTITY,R05,changes,## 5. Did somebody delete the orchestrator in the cloud? +troubleshooting/orchestrator-not-connecting.md,76,154,orchestrator,O-LITERAL,R01,stays,"he cloud rejects it. The agent's logs show ""Unauthorized"" or ""Unknown orchestrator""." +troubleshooting/orchestrator-not-connecting.md,78,19,orchestrator,O-ENTITY,R05,changes,Fix: create a new orchestrator in the wizard. Run the install command on the device again to get a f +troubleshooting/orchestrator-not-connecting.md,78,78,device,D-HOST,R15,stays,eate a new orchestrator in the wizard. Run the install command on the device again to get a fresh ID and pair the new orchestrator. +troubleshooting/orchestrator-not-connecting.md,78,126,orchestrator,O-ENTITY,R05,changes,nstall command on the device again to get a fresh ID and pair the new orchestrator. +troubleshooting/orchestrator-not-connecting.md,82,8,device,D-HOST,H05,stays,"If the device moved networks (different LAN, new ISP), the agent's network-monitor" +troubleshooting/orchestrator-not-connecting.md,85,16,orchestrator,O-LITERAL,R01,stays,docker restart orchestrator-agent +troubleshooting/orchestrator-not-connecting.md,106,20,orchestrator,O-LITERAL,R01,stays,- Run `docker logs orchestrator-agent` and copy the last 100 lines. +troubleshooting/orchestrator-not-connecting.md,115,78,orchestrator,O-PATH,R02,changes,tall or re-install the agent** → **[Installing the agent](../platform/orchestrators/installing-the-agent)**. +troubleshooting/orchestrator-not-connecting.md,116,12,orchestrator,O-ENTITY,R05,changes,- **Manage orchestrators in the cloud** → **[Managing orchestrators](../platform/orchestrator +troubleshooting/orchestrator-not-connecting.md,116,55,orchestrator,O-ENTITY,R05,changes,- **Manage orchestrators in the cloud** → **[Managing orchestrators](../platform/orchestrators/managing-orchestrators)**. +troubleshooting/orchestrator-not-connecting.md,116,82,orchestrator,O-PATH,R02,changes,orchestrators in the cloud** → **[Managing orchestrators](../platform/orchestrators/managing-orchestrators)**. +troubleshooting/orchestrator-not-connecting.md,116,105,orchestrator,O-PATH,R02,changes,oud** → **[Managing orchestrators](../platform/orchestrators/managing-orchestrators)**. +troubleshooting/orchestrator-not-connecting.md,117,22,orchestrator,O-ENTITY,R05,changes,- **vPLC stuck after orchestrator becomes Active** → **[vPLC stuck in Stopped](vplc-stuck-stopped)**. +troubleshooting/plan-limit-reached.md,5,23,Orchestrator,O-ENTITY,R05,changes,"![Plan limit reached, Orchestrator limit reached (1/1) on plan Community](images/plan-limit-modal.png)" +troubleshooting/plan-limit-reached.md,17,4,Orchestrator,O-ENTITY,R05,changes,| *Orchestrator limit reached* | Trying to add an orchestrator beyond your plan cap. +troubleshooting/plan-limit-reached.md,17,51,orchestrator,O-ENTITY,R05,changes,| *Orchestrator limit reached* | Trying to add an orchestrator beyond your plan cap. Community allows 1. | +troubleshooting/plan-limit-reached.md,18,4,Device,D-VPLC,R18,changes,| *Device limit reached* | Trying to add a vPLC beyond the cap (across all your +troubleshooting/plan-limit-reached.md,18,81,orchestrator,O-ENTITY,R05,changes,limit reached* | Trying to add a vPLC beyond the cap (across all your orchestrators). Community allows 2. | +troubleshooting/plan-limit-reached.md,29,5,Orchestrator,O-ENTITY,R05,changes,- **Orchestrators**: delete an orchestrator you don't use. **[Managing orchestrators]( +troubleshooting/plan-limit-reached.md,29,32,orchestrator,O-ENTITY,R05,changes,- **Orchestrators**: delete an orchestrator you don't use. **[Managing orchestrators](../platform/orchestrators/m +troubleshooting/plan-limit-reached.md,29,72,orchestrator,O-ENTITY,R05,changes,**Orchestrators**: delete an orchestrator you don't use. **[Managing orchestrators](../platform/orchestrators/managing-orchestrators)**. +troubleshooting/plan-limit-reached.md,29,99,orchestrator,O-PATH,R02,changes,an orchestrator you don't use. **[Managing orchestrators](../platform/orchestrators/managing-orchestrators)**. +troubleshooting/plan-limit-reached.md,29,122,orchestrator,O-PATH,R02,changes,'t use. **[Managing orchestrators](../platform/orchestrators/managing-orchestrators)**. +troubleshooting/plan-limit-reached.md,30,5,Device,D-HOST,R15,stays,- **Devices**: delete vPLCs you're not running. 3-dot menu on the device card → +troubleshooting/plan-limit-reached.md,30,67,device,D-HOST,R15,stays,- **Devices**: delete vPLCs you're not running. 3-dot menu on the device card → **Delete**. +troubleshooting/plan-limit-reached.md,51,3,Orchestrator,O-ENTITY,R05,changes,- Orchestrators used / allowed. +troubleshooting/plan-limit-reached.md,52,3,Device,D-VPLC,H01,changes,- Devices used / allowed. +troubleshooting/vplc-stuck-stopped.md,10,21,orchestrator,O-ENTITY,R05,changes,## 1. Is the parent orchestrator Active? +troubleshooting/vplc-stuck-stopped.md,12,10,orchestrator,O-ENTITY,R05,changes,Open the orchestrator that owns this vPLC. Status badge should be **Active** (or **Connecte +troubleshooting/vplc-stuck-stopped.md,14,8,orchestrator,O-ENTITY,R05,changes,"If the orchestrator is **Inactive**, the agent can't act on your start request. Fix the o" +troubleshooting/vplc-stuck-stopped.md,14,89,orchestrator,O-ENTITY,R05,changes,"r is **Inactive**, the agent can't act on your start request. Fix the orchestrator first → **[Orchestrator not connecting](orchestrator-not-connecting)*" +troubleshooting/vplc-stuck-stopped.md,14,113,Orchestrator,O-ENTITY,R05,changes,gent can't act on your start request. Fix the orchestrator first → **[Orchestrator not connecting](orchestrator-not-connecting)**. +troubleshooting/vplc-stuck-stopped.md,14,142,orchestrator,O-PATH,R02,changes,request. Fix the orchestrator first → **[Orchestrator not connecting](orchestrator-not-connecting)**. +troubleshooting/vplc-stuck-stopped.md,18,10,orchestrator,O-ENTITY,R05,changes,"From the orchestrator's Devices tab, click the vPLC card's **3-dot menu → Start**. Wait 10–" +troubleshooting/vplc-stuck-stopped.md,18,25,Device,D-VPLC,R18,changes,"From the orchestrator's Devices tab, click the vPLC card's **3-dot menu → Start**. Wait 10–30 second" +troubleshooting/vplc-stuck-stopped.md,22,13,device,D-HOST,H05,stays,## 3. Check device-side logs +troubleshooting/vplc-stuck-stopped.md,24,13,device,D-HOST,R15,stays,On the edge device: +troubleshooting/vplc-stuck-stopped.md,27,22,device,D-VPLC,H10,changes,docker ps -a | grep +troubleshooting/vplc-stuck-stopped.md,39,79,device,D-PLAIN,H02,stays,ss already in use`: the MAC or IP you assigned conflicts with another device. Free it up or switch to DHCP + auto MAC. +troubleshooting/vplc-stuck-stopped.md,40,11,device,D-LITERAL,R10,stays,- `parent device 'eth0' is in use`: another container or process is monopolizing the i +troubleshooting/vplc-stuck-stopped.md,48,44,device,D-PLAIN,H02,stays,- The IP isn't already assigned to another device. +troubleshooting/vplc-stuck-stopped.md,56,5,device,D-PLAIN,H02,stays,Two devices with the same MAC on one LAN confuse switches. If you set a manual M +troubleshooting/vplc-stuck-stopped.md,64,22,device,D-HOST,R15,stays,Test manually on the device: +troubleshooting/vplc-stuck-stopped.md,70,26,device,D-HOST,R15,stays,"If that fails, your edge device can't reach the registry. Check firewall and DNS." +troubleshooting/vplc-stuck-stopped.md,78,21,device,D-PLAIN,H02,stays,- A required serial device disconnected. +troubleshooting/vplc-stuck-stopped.md,88,18,Device,D-VPLC,R18,changes,3. Click **+ New Device** and follow **[Creating a vPLC](../platform/vplcs/creating-a-vplc)** +troubleshooting/vplc-stuck-stopped.md,94,22,orchestrator,O-ENTITY,R05,changes,- **Check the parent orchestrator** → **[Orchestrator not connecting](orchestrator-not-connecting)**. +troubleshooting/vplc-stuck-stopped.md,94,42,Orchestrator,O-ENTITY,R05,changes,- **Check the parent orchestrator** → **[Orchestrator not connecting](orchestrator-not-connecting)**. +troubleshooting/vplc-stuck-stopped.md,94,71,orchestrator,O-PATH,R02,changes,- **Check the parent orchestrator** → **[Orchestrator not connecting](orchestrator-not-connecting)**. +troubleshooting/vplc-stuck-stopped.md,96,18,device,D-VPLC,R18,changes,- **Recreate the device** → **[Creating a vPLC](../platform/vplcs/creating-a-vplc)**. +exploration/DOCUMENTATION-PLAN-EDITOR.md,4,176,orchestrator,X-HIST,R00,stays,"URCE-INVENTORY.md](./EDITOR-SOURCE-INVENTORY.md), online vPLC `01` on orchestrator `SLM-RP4`." +exploration/DOCUMENTATION-PLAN-EDITOR.md,32,57,Orchestrator,X-HIST,R00,stays,- **Connecting to Runtimes** — current docs predate the Orchestrators screen. Now it's: click an Orchestrator → expand → click a vPLC → lo +exploration/DOCUMENTATION-PLAN-EDITOR.md,32,98,Orchestrator,X-HIST,R00,stays,* — current docs predate the Orchestrators screen. Now it's: click an Orchestrator → expand → click a vPLC → login. +exploration/DOCUMENTATION-PLAN-EDITOR.md,36,12,Device,X-HIST,R00,stays,"- **Remote Devices** (Modbus master, EtherCAT master). No current section." +exploration/DOCUMENTATION-PLAN-EDITOR.md,52,88,Orchestrator,X-HIST,R00,stays,a vPLC* (replaces Installation + Connecting to Runtimes; new flow via Orchestrators) +exploration/DOCUMENTATION-PLAN-EDITOR.md,57,84,Device,X-HIST,R00,stays,ee* (Functions / Function Blocks / Programs / Data Types / Resource / Device / Servers; tree-header `+` popover) +exploration/DOCUMENTATION-PLAN-EDITOR.md,114,19,device,X-HIST,R00,stays,"- Modbus remote device (master) — I/O groups, function codes, TCP vs RTU transport" +exploration/DOCUMENTATION-PLAN-EDITOR.md,123,57,Orchestrator,X-HIST,R00,stays,- *Deployment to a vPLC* (runtime targets connected via Orchestrators) +exploration/DOCUMENTATION-PLAN-EDITOR.md,169,22,device,X-HIST,R00,stays,| 24 | Modbus remote device — I/O Groups | Tabbed table | +exploration/DOCUMENTATION-PLAN-EDITOR.md,183,29,Device,X-HIST,R00,stays,| 38 | EtherCAT — per-slave Devices tab | Tab | +exploration/DOCUMENTATION-PLAN-EDITOR.md,195,8,Orchestrator,X-HIST,R00,stays,| 50 | Orchestrators screen — SLM-RP4 expanded showing vPLC 01 | Editor area | +exploration/DOCUMENTATION-PLAN-EDITOR.md,221,87,Device,X-HIST,R00,stays,"pages** (Library Manager, Search, AI Engineer, Source Control, Remote Devices, Diagram authoring)." +exploration/DOCUMENTATION-PLAN.md,3,126,orchestrator,X-HIST,R00,stays,"ylogic.com` on 2026-05-21 plus cross-reference with `autonomy-edge`, `orchestrator-agent`, `openplc-web`, and `openplc-runtime` source. The current docs" +exploration/DOCUMENTATION-PLAN.md,13,297,orchestrator,X-HIST,R00,stays,s your own slug; the dashboard's left sidebar shows your projects and orchestrators *for the slug you are on*. +exploration/DOCUMENTATION-PLAN.md,15,175,device,X-HIST,R00,stays,"commits, a file tree (`programs/`, `functions/`, `function-blocks/`, `devices/`, `project.json`), and an ""Open in editor"" button. Created via a 3-" +exploration/DOCUMENTATION-PLAN.md,17,6,Orchestrator,X-HIST,R00,stays,3. **Orchestrators + vPLCs (Devices)** — an Orchestrator is the cloud-side representati +exploration/DOCUMENTATION-PLAN.md,17,29,Device,X-HIST,R00,stays,3. **Orchestrators + vPLCs (Devices)** — an Orchestrator is the cloud-side representation of an `orchest +exploration/DOCUMENTATION-PLAN.md,17,45,Orchestrator,X-HIST,R00,stays,3. **Orchestrators + vPLCs (Devices)** — an Orchestrator is the cloud-side representation of an `orchestrator-agent` daemon on +exploration/DOCUMENTATION-PLAN.md,17,98,orchestrator,X-HIST,R00,stays,"(Devices)** — an Orchestrator is the cloud-side representation of an `orchestrator-agent` daemon on a Linux edge device, installed via `curl https://get" +exploration/DOCUMENTATION-PLAN.md,17,141,device,X-HIST,R00,stays,"side representation of an `orchestrator-agent` daemon on a Linux edge device, installed via `curl https://getedge.me | bash`. Each orchestrator ca" +exploration/DOCUMENTATION-PLAN.md,17,202,orchestrator,X-HIST,R00,stays,"nux edge device, installed via `curl https://getedge.me | bash`. Each orchestrator can host multiple vPLCs (OpenPLC runtime containers). Orchestrators h" +exploration/DOCUMENTATION-PLAN.md,17,269,Orchestrator,X-HIST,R00,stays,"ch orchestrator can host multiple vPLCs (OpenPLC runtime containers). Orchestrators have an Inactive/Active state, CPU/Memory/Uptime stats, and a Device" +exploration/DOCUMENTATION-PLAN.md,17,345,Device,X-HIST,R00,stays,"trators have an Inactive/Active state, CPU/Memory/Uptime stats, and a Devices tab listing vPLCs. Each vPLC has its own detail page with network in" +exploration/DOCUMENTATION-PLAN.md,23,61,orchestrator,X-HIST,R00,stays,"Plan limits are enforced at the UI: free Community plan = 1 orchestrator, 2 devices, 0 private projects (existing private projects are grandfa" +exploration/DOCUMENTATION-PLAN.md,23,77,device,X-HIST,R00,stays,"imits are enforced at the UI: free Community plan = 1 orchestrator, 2 devices, 0 private projects (existing private projects are grandfathered). P" +exploration/DOCUMENTATION-PLAN.md,54,9,orchestrator,X-HIST,R00,stays,│ ├── orchestrators/ +exploration/DOCUMENTATION-PLAN.md,55,55,orchestrator,X-HIST,R00,stays,"│ │ ├── overview.md # What an orchestrator is, why" +exploration/DOCUMENTATION-PLAN.md,57,13,orchestrator,X-HIST,R00,stays,"│ │ ├── orchestrators-list.md # List card view, CPU/MEM/UPTIME" +exploration/DOCUMENTATION-PLAN.md,58,13,orchestrator,X-HIST,R00,stays,│ │ ├── orchestrator-detail.md # Devices tab + Orchestrator tab (charts) +exploration/DOCUMENTATION-PLAN.md,58,47,Device,X-HIST,R00,stays,│ │ ├── orchestrator-detail.md # Devices tab + Orchestrator tab (charts) +exploration/DOCUMENTATION-PLAN.md,58,61,Orchestrator,X-HIST,R00,stays,│ │ ├── orchestrator-detail.md # Devices tab + Orchestrator tab (charts) +exploration/DOCUMENTATION-PLAN.md,59,22,orchestrator,X-HIST,R00,stays,"│ │ ├── managing-orchestrators.md # Rename, delete, three-dot menu" +exploration/DOCUMENTATION-PLAN.md,63,51,Device,X-HIST,R00,stays,"│ │ ├── creating-a-vplc.md # Add Device wizard: name, runtime version, NICs" +exploration/DOCUMENTATION-PLAN.md,106,60,orchestrator,X-HIST,R00,stays,"│ │ ├── usage.md # ACU credits, orchestrator/device/project quotas" +exploration/DOCUMENTATION-PLAN.md,106,73,device,X-HIST,R00,stays,"│ ├── usage.md # ACU credits, orchestrator/device/project quotas" +exploration/DOCUMENTATION-PLAN.md,112,47,Orchestrator,X-HIST,R00,stays,│ ├── plan-limits.md # Orchestrators/devices/projects per plan +exploration/DOCUMENTATION-PLAN.md,112,61,device,X-HIST,R00,stays,│ ├── plan-limits.md # Orchestrators/devices/projects per plan +exploration/DOCUMENTATION-PLAN.md,117,66,orchestrator,X-HIST,R00,stays,"│ ├── glossary.md # Reorient: project, orchestrator, vPLC, slug, ACU, board" +exploration/DOCUMENTATION-PLAN.md,123,9,orchestrator,X-HIST,R00,stays,│ ├── orchestrator-not-connecting.md +exploration/DOCUMENTATION-PLAN.md,137,209,device,X-HIST,R00,stays,"LC dev, IEC 61131-3 in the cloud, vPLC vs traditional PLC, Linux edge device requirement for running vPLCs, and ""you can read/post on the forum an" +exploration/DOCUMENTATION-PLAN.md,152,32,orchestrator,X-HIST,R00,stays,"- `/{slug}/projects`, `/{slug}/orchestrators`, etc. — same routes, scoped to the slug" +exploration/DOCUMENTATION-PLAN.md,163,174,device,X-HIST,R00,stays,"PRs, a file tree with `programs/`, `functions/`, `function-blocks/`, `devices/`, and a `project.json`. The ""Open in editor"" button launches the Op" +exploration/DOCUMENTATION-PLAN.md,185,15,orchestrator,X-HIST,R00,stays,### `platform/orchestrators/` and `platform/vplcs/` +exploration/DOCUMENTATION-PLAN.md,187,60,orchestrator,X-HIST,R00,stays,"Already partially documented in current `platform-features/orchestrator-management/`, but the existing copy describes flags and Docker intern" +exploration/DOCUMENTATION-PLAN.md,189,6,orchestrator,X-HIST,R00,stays,- **`orchestrators/overview.md`** — One orchestrator = one Linux edge device running th +exploration/DOCUMENTATION-PLAN.md,189,41,orchestrator,X-HIST,R00,stays,- **`orchestrators/overview.md`** — One orchestrator = one Linux edge device running the `orchestrator-agent` daemon (a Py +exploration/DOCUMENTATION-PLAN.md,189,71,device,X-HIST,R00,stays,- **`orchestrators/overview.md`** — One orchestrator = one Linux edge device running the `orchestrator-agent` daemon (a Python+Docker container). +exploration/DOCUMENTATION-PLAN.md,189,91,orchestrator,X-HIST,R00,stays,verview.md`** — One orchestrator = one Linux edge device running the `orchestrator-agent` daemon (a Python+Docker container). It maintains a persistent +exploration/DOCUMENTATION-PLAN.md,189,241,orchestrator,X-HIST,R00,stays,t mTLS WebSocket to the cloud and hosts vPLC containers. Screenshot: `orchestrators/01-orchestrators-list.png`. +exploration/DOCUMENTATION-PLAN.md,189,258,orchestrator,X-HIST,R00,stays,to the cloud and hosts vPLC containers. Screenshot: `orchestrators/01-orchestrators-list.png`. +exploration/DOCUMENTATION-PLAN.md,191,48,Orchestrator,X-HIST,R00,stays,- **`installing-the-agent.md`** — From the New Orchestrator wizard: enter name → run `curl https://getedge.me | bash` on a Linux +exploration/DOCUMENTATION-PLAN.md,191,160,Orchestrator,X-HIST,R00,stays,l https://getedge.me | bash` on a Linux machine → paste the generated Orchestrator ID back into the wizard (expires in 5 min). Quote `orchestrator-agent +exploration/DOCUMENTATION-PLAN.md,191,224,orchestrator,X-HIST,R00,stays,rated Orchestrator ID back into the wizard (expires in 5 min). Quote `orchestrator-agent/README.md` for what the agent does. *Don't* document the agent' +exploration/DOCUMENTATION-PLAN.md,193,6,orchestrator,X-HIST,R00,stays,"- **`orchestrators-list.md`** — Card layout: name, status badge (Inactive/Active), thre" +exploration/DOCUMENTATION-PLAN.md,193,137,device,X-HIST,R00,stays,"nactive/Active), three-dot menu, CPU/MEMORY/UPTIME row, expandable ""N devices"" section. ""+ New Orchestrator"" tile. Screenshots: `orchestrators/01`" +exploration/DOCUMENTATION-PLAN.md,193,162,Orchestrator,X-HIST,R00,stays,"t menu, CPU/MEMORY/UPTIME row, expandable ""N devices"" section. ""+ New Orchestrator"" tile. Screenshots: `orchestrators/01`, `02-orchestrators-devices-exp" +exploration/DOCUMENTATION-PLAN.md,193,196,orchestrator,X-HIST,R00,stays,"andable ""N devices"" section. ""+ New Orchestrator"" tile. Screenshots: `orchestrators/01`, `02-orchestrators-devices-expanded.png`, `05-orchestrator-plan-" +exploration/DOCUMENTATION-PLAN.md,193,219,orchestrator,X-HIST,R00,stays,"tion. ""+ New Orchestrator"" tile. Screenshots: `orchestrators/01`, `02-orchestrators-devices-expanded.png`, `05-orchestrator-plan-limit.png` (the plan li" +exploration/DOCUMENTATION-PLAN.md,193,233,device,X-HIST,R00,stays,"rchestrator"" tile. Screenshots: `orchestrators/01`, `02-orchestrators-devices-expanded.png`, `05-orchestrator-plan-limit.png` (the plan limit moda" +exploration/DOCUMENTATION-PLAN.md,193,260,orchestrator,X-HIST,R00,stays,"ots: `orchestrators/01`, `02-orchestrators-devices-expanded.png`, `05-orchestrator-plan-limit.png` (the plan limit modal)." +exploration/DOCUMENTATION-PLAN.md,195,6,orchestrator,X-HIST,R00,stays,- **`orchestrator-detail.md`** — Two tabs: **Devices** (default — grid of vPLC cards wi +exploration/DOCUMENTATION-PLAN.md,195,46,Device,X-HIST,R00,stays,"- **`orchestrator-detail.md`** — Two tabs: **Devices** (default — grid of vPLC cards with status, uptime, project) and **" +exploration/DOCUMENTATION-PLAN.md,195,122,Orchestrator,X-HIST,R00,stays,"s** (default — grid of vPLC cards with status, uptime, project) and **Orchestrator** (OS, CPU cores, memory, disk, network, version stats; CPU Usage and" +exploration/DOCUMENTATION-PLAN.md,195,258,orchestrator,X-HIST,R00,stays,"s; CPU Usage and Memory Usage charts with 1h selector). Screenshots: `orchestrators/03-orchestrator-detail-devices.png`, `04-orchestrator-info-tab.png`." +exploration/DOCUMENTATION-PLAN.md,195,275,orchestrator,X-HIST,R00,stays,"Memory Usage charts with 1h selector). Screenshots: `orchestrators/03-orchestrator-detail-devices.png`, `04-orchestrator-info-tab.png`." +exploration/DOCUMENTATION-PLAN.md,195,295,device,X-HIST,R00,stays,"with 1h selector). Screenshots: `orchestrators/03-orchestrator-detail-devices.png`, `04-orchestrator-info-tab.png`." +exploration/DOCUMENTATION-PLAN.md,195,313,orchestrator,X-HIST,R00,stays,"Screenshots: `orchestrators/03-orchestrator-detail-devices.png`, `04-orchestrator-info-tab.png`." +exploration/DOCUMENTATION-PLAN.md,197,50,device,X-HIST,R00,stays,"- **`vplcs/creating-a-vplc.md`** — From source (`devices/create.tsx`): name (required), runtime version (selectable from list" +exploration/DOCUMENTATION-PLAN.md,197,320,Device,X-HIST,R00,stays,"y/DNS, mac auto/manual). Serial ports are configurable too (`useSerialDevices`, `AvailableSerialDevice`). **Need new screenshots** of the Add Devi" +exploration/DOCUMENTATION-PLAN.md,197,346,Device,X-HIST,R00,stays,"erial ports are configurable too (`useSerialDevices`, `AvailableSerialDevice`). **Need new screenshots** of the Add Device wizard — couldn't open" +exploration/DOCUMENTATION-PLAN.md,197,392,Device,X-HIST,R00,stays,"vices`, `AvailableSerialDevice`). **Need new screenshots** of the Add Device wizard — couldn't open it on staging (2/2 plan limit reached, screens" +exploration/DOCUMENTATION-PLAN.md,197,487,device,X-HIST,R00,stays,"open it on staging (2/2 plan limit reached, screenshot: `vplcs/02-new-device-plan-limit.png`). Tell the user to delete a device first if at limit." +exploration/DOCUMENTATION-PLAN.md,197,538,device,X-HIST,R00,stays,hot: `vplcs/02-new-device-plan-limit.png`). Tell the user to delete a device first if at limit. +exploration/DOCUMENTATION-PLAN.md,199,41,device,X-HIST,R00,stays,"- **`vplcs/vplc-detail.md`** — `/{slug}/devices/{id}?orchestratorId={oid}`. Shows UPTIME, RESTARTS, INTERNAL IP, NET" +exploration/DOCUMENTATION-PLAN.md,199,54,orchestrator,X-HIST,R00,stays,"- **`vplcs/vplc-detail.md`** — `/{slug}/devices/{id}?orchestratorId={oid}`. Shows UPTIME, RESTARTS, INTERNAL IP, NETWORK MODE, GATEWAY," +exploration/DOCUMENTATION-PLAN.md,199,219,device,X-HIST,R00,stays,"MASK, CREATED, plus Network Interfaces section. Screenshot: `vplcs/01-device-detail-stopped.png`." +exploration/DOCUMENTATION-PLAN.md,201,229,orchestrator,X-HIST,R00,stays,as if it were a standalone PLC with its own IP and MAC. This is from `orchestrator-agent/README.md` and is the differentiator from regular Docker networ +exploration/DOCUMENTATION-PLAN.md,305,204,Orchestrator,X-HIST,R00,stays,"REDITS"" (never expire). How-it-works explainer. Below: Usage bars for Orchestrators / Devices / Private projects (color goes red at limit). Screenshot:" +exploration/DOCUMENTATION-PLAN.md,305,220,Device,X-HIST,R00,stays,xpire). How-it-works explainer. Below: Usage bars for Orchestrators / Devices / Private projects (color goes red at limit). Screenshot: `settings/ +exploration/DOCUMENTATION-PLAN.md,318,39,device,X-HIST,R00,stays,"| Community | Free | — | 1 orch · 2 devices · 0 private projects | IEC 61131-3 editor, PLC simulator, version co" +exploration/DOCUMENTATION-PLAN.md,319,53,device,X-HIST,R00,stays,"| Education | $7.50/seat/mo | 1,125 | 1 orch · 10 devices/seat | Private projects, .edu invites, Full AI Engineer |" +exploration/DOCUMENTATION-PLAN.md,320,59,device,X-HIST,R00,stays,"| Pro (recommended) | $40.83/mo | 6,125 | 20 orch · 100 devices | Private projects, Full AI Engineer, 14-day trial |" +exploration/DOCUMENTATION-PLAN.md,321,51,device,X-HIST,R00,stays,"| Teams | $82.50/seat/mo | 12,375 | 5 orch · 20 devices/seat | Private + Orgs + invites + Full AI + 14-day trial |" +exploration/DOCUMENTATION-PLAN.md,326,143,orchestrator,X-HIST,R00,stays,"your plan limit"" modal with Upgrade plan / Cancel buttons). Show both orchestrator and device limit modals. Screenshots: `orchestrators/05-orchestrator-" +exploration/DOCUMENTATION-PLAN.md,326,160,device,X-HIST,R00,stays,modal with Upgrade plan / Cancel buttons). Show both orchestrator and device limit modals. Screenshots: `orchestrators/05-orchestrator-plan-limit. +exploration/DOCUMENTATION-PLAN.md,326,195,orchestrator,X-HIST,R00,stays,"ttons). Show both orchestrator and device limit modals. Screenshots: `orchestrators/05-orchestrator-plan-limit.png`, `vplcs/02-new-device-plan-limit.png" +exploration/DOCUMENTATION-PLAN.md,326,212,orchestrator,X-HIST,R00,stays,"orchestrator and device limit modals. Screenshots: `orchestrators/05-orchestrator-plan-limit.png`, `vplcs/02-new-device-plan-limit.png`." +exploration/DOCUMENTATION-PLAN.md,326,256,device,X-HIST,R00,stays,"nshots: `orchestrators/05-orchestrator-plan-limit.png`, `vplcs/02-new-device-plan-limit.png`." +exploration/DOCUMENTATION-PLAN.md,338,96,orchestrator,X-HIST,R00,stays,"rame around UI vocabulary: *workspace, slug, project, branch, commit, orchestrator, agent, vPLC, device, NIC, MACVLAN, ACU, organization, board, thread*" +exploration/DOCUMENTATION-PLAN.md,338,123,device,X-HIST,R00,stays,"*workspace, slug, project, branch, commit, orchestrator, agent, vPLC, device, NIC, MACVLAN, ACU, organization, board, thread*. Drop IEC-specific t" +exploration/DOCUMENTATION-PLAN.md,346,14,orchestrator,X-HIST,R00,stays,- `/{slug}/orchestrators` +exploration/DOCUMENTATION-PLAN.md,347,14,orchestrator,X-HIST,R00,stays,- `/{slug}/orchestrators/{orchestratorId}` +exploration/DOCUMENTATION-PLAN.md,347,29,orchestrator,X-HIST,R00,stays,- `/{slug}/orchestrators/{orchestratorId}` +exploration/DOCUMENTATION-PLAN.md,348,14,device,X-HIST,R00,stays,- `/{slug}/devices/{deviceId}?orchestratorId={oid}` +exploration/DOCUMENTATION-PLAN.md,348,23,device,X-HIST,R00,stays,- `/{slug}/devices/{deviceId}?orchestratorId={oid}` +exploration/DOCUMENTATION-PLAN.md,348,33,orchestrator,X-HIST,R00,stays,- `/{slug}/devices/{deviceId}?orchestratorId={oid}` +exploration/DOCUMENTATION-PLAN.md,354,213,orchestrator,X-HIST,R00,stays,"s to my org?"" ""Why is the Members tab grayed out?"" ""How do I reset my orchestrator ID?"" ""What happens if I delete my account but own an org?""" +exploration/DOCUMENTATION-PLAN.md,362,6,orchestrator,X-HIST,R00,stays,"- **`orchestrator-not-connecting.md`** — Inactive status, expired install ID (5 min), a" +exploration/DOCUMENTATION-PLAN.md,364,78,orchestrator,X-HIST,R00,stays,"lc-stuck-stopped.md`** — Status ""Stopped"", ""Container unknown"". Check orchestrator connectivity first, then runtime logs." +exploration/DOCUMENTATION-PLAN.md,377,10,Device,X-HIST,R00,stays,"2. **Add Device wizard** — blocked by 2/2 plan limit. Delete a device first, or do th" +exploration/DOCUMENTATION-PLAN.md,377,64,device,X-HIST,R00,stays,"2. **Add Device wizard** — blocked by 2/2 plan limit. Delete a device first, or do this on a paid test account." +exploration/DOCUMENTATION-PLAN.md,378,13,orchestrator,X-HIST,R00,stays,3. **Active orchestrator views** — the staging orchestrator is Inactive; need a screenshot of +exploration/DOCUMENTATION-PLAN.md,378,48,orchestrator,X-HIST,R00,stays,3. **Active orchestrator views** — the staging orchestrator is Inactive; need a screenshot of CPU/memory charts with actual data +exploration/DOCUMENTATION-PLAN.md,384,27,orchestrator,X-HIST,R00,stays,9. **Three-dot menus** on orchestrator card and vPLC card — show rename/delete options. +exploration/DOCUMENTATION-PLAN.md,398,155,device,X-HIST,R00,stays,"eping; the source has a clear API surface (we saw `/organizations`, `/devices`, etc.) but the existing docs may hallucinate endpoint shapes." +exploration/DOCUMENTATION-PLAN.md,420,16,orchestrator,X-HIST,R00,stays,"4. **`platform/orchestrators/{overview, installing-the-agent, orchestrators-list}.md` + `platform" +exploration/DOCUMENTATION-PLAN.md,420,63,orchestrator,X-HIST,R00,stays,"4. **`platform/orchestrators/{overview, installing-the-agent, orchestrators-list}.md` + `platform/vplcs/overview.md`** — bridges to the existing" +exploration/EDITOR-SOURCE-INVENTORY.md,3,217,orchestrator,X-HIST,R00,stays,cture and conventions documented in the editor's `CLAUDE.md`. The web/orchestrator side at `autonomy-edge` reuses the same store + port contracts. +exploration/EDITOR-SOURCE-INVENTORY.md,19,5,device,X-HIST,R00,stays,├── devices/ +exploration/EDITOR-SOURCE-INVENTORY.md,21,42,device,X-HIST,R00,stays,│ └── pin-mapping.json # Array of devicePinSchema entries +exploration/EDITOR-SOURCE-INVENTORY.md,44,11,Device,X-HIST,R00,stays,"remoteDevices?: PLCRemoteDevice[]," +exploration/EDITOR-SOURCE-INVENTORY.md,44,30,Device,X-HIST,R00,stays,"remoteDevices?: PLCRemoteDevice[]," +exploration/EDITOR-SOURCE-INVENTORY.md,48,49,Device,X-HIST,R00,stays,"deletedPous?, deletedServers?, deletedRemoteDevices?" +exploration/EDITOR-SOURCE-INVENTORY.md,53,119,device,X-HIST,R00,stays,"unction`, `function-block`, `program`, `data-type`, `server`, `remote-device`. Library projects only expose `function`, `function-block`, `data-ty" +exploration/EDITOR-SOURCE-INVENTORY.md,53,216,device,X-HIST,R00,stays,"nly expose `function`, `function-block`, `data-type`. Server / remote-device only enabled for Runtime v4 / Simulator targets." +exploration/EDITOR-SOURCE-INVENTORY.md,157,14,device,X-HIST,R00,stays,## 7. Remote devices +exploration/EDITOR-SOURCE-INVENTORY.md,172,95,Device,X-HIST,R00,stays,"ce from `runtime.getNetworkInterfaces`, Scan via `runtime.scanEthercatDevices` (5000ms default). Matches against local ESI repository." +exploration/EDITOR-SOURCE-INVENTORY.md,331,31,Orchestrator,X-HIST,R00,stays,## 20. Connecting to a vPLC / Orchestrators +exploration/EDITOR-SOURCE-INVENTORY.md,333,9,Device,X-HIST,R00,stays,Editor `Device Orchestrators` screen lists registered orchestrators (each expandable +exploration/EDITOR-SOURCE-INVENTORY.md,333,16,Orchestrator,X-HIST,R00,stays,Editor `Device Orchestrators` screen lists registered orchestrators (each expandable to its runti +exploration/EDITOR-SOURCE-INVENTORY.md,333,55,orchestrator,X-HIST,R00,stays,Editor `Device Orchestrators` screen lists registered orchestrators (each expandable to its runtimes/devices). Click device → WebRTC han +exploration/EDITOR-SOURCE-INVENTORY.md,333,102,device,X-HIST,R00,stays,creen lists registered orchestrators (each expandable to its runtimes/devices). Click device → WebRTC handshake or HTTP connection. +exploration/EDITOR-SOURCE-INVENTORY.md,333,118,device,X-HIST,R00,stays,stered orchestrators (each expandable to its runtimes/devices). Click device → WebRTC handshake or HTTP connection. +exploration/EDITOR-SOURCE-INVENTORY.md,460,59,device,X-HIST,R00,stays,"- **Zustand store, 19 slices.** User-visible: `project`, `device`, `editor`, `tabs`, `workspace`, `ladder`, `fbd`, `console`, `library" +getting-started/account-and-signup.md,38,49,orchestrator,O-ENTITY,R05,changes,"- A **personal workspace** that holds projects, orchestrators, and devices you own." +getting-started/account-and-signup.md,38,68,device,D-VPLC,H01,changes,"- A **personal workspace** that holds projects, orchestrators, and devices you own." +getting-started/account-and-signup.md,39,85,orchestrator,O-ENTITY,R05,changes,y plan** subscription. This is the free tier and is enough to run one orchestrator with two devices. See **[Pricing](../plans-and-billing/pricing)** for +getting-started/account-and-signup.md,39,107,device,D-VPLC,H01,changes,This is the free tier and is enough to run one orchestrator with two devices. See **[Pricing](../plans-and-billing/pricing)** for what each plan +getting-started/account-and-signup.md,50,140,orchestrator,O-ENTITY,R05,changes,"ccount/settings/account)**. Deletion is permanent: personal projects, orchestrators, and devices are removed; forum posts and direct messages stay visib" +getting-started/account-and-signup.md,50,159,device,D-VPLC,H01,changes,"ount)**. Deletion is permanent: personal projects, orchestrators, and devices are removed; forum posts and direct messages stay visible, credited" +getting-started/dashboard-tour.md,3,132,orchestrator,O-ENTITY,R05,changes,"**. It's the home base for everything else on the platform: projects, orchestrators, community activity, and the user menu all start here." +getting-started/dashboard-tour.md,7,107,orchestrator,O-ENTITY,R05,changes,"orkspace the layout stays the same, with the organization's projects, orchestrators, and members in place of your personal ones." +getting-started/dashboard-tour.md,24,5,Orchestrator,O-ENTITY,R05,changes,"- **Orchestrators** card. If you have one or more orchestrators set up, the first one" +getting-started/dashboard-tour.md,24,51,orchestrator,O-ENTITY,R05,changes,"- **Orchestrators** card. If you have one or more orchestrators set up, the first one is named here. The blue **Manage orchestrator*" +getting-started/dashboard-tour.md,24,120,orchestrator,O-ENTITY,R05,changes,"orchestrators set up, the first one is named here. The blue **Manage orchestrator** button takes you to the **[orchestrators list](../platform/orchestr" +getting-started/dashboard-tour.md,24,162,orchestrator,O-ENTITY,R05,changes,med here. The blue **Manage orchestrator** button takes you to the **[orchestrators list](../platform/orchestrators/orchestrators-list)**. +getting-started/dashboard-tour.md,24,194,orchestrator,O-PATH,R02,changes,estrator** button takes you to the **[orchestrators list](../platform/orchestrators/orchestrators-list)**. +getting-started/dashboard-tour.md,24,208,orchestrator,O-PATH,R02,changes,ton takes you to the **[orchestrators list](../platform/orchestrators/orchestrators-list)**. +getting-started/dashboard-tour.md,26,98,orchestrator,O-ENTITY,R05,changes,"ization workspace, this column shows that organization's projects and orchestrators instead of yours." +getting-started/dashboard-tour.md,69,205,orchestrator,O-ENTITY,R05,changes,"rganization's dashboard, with the same layout but the org's projects, orchestrators, and members in place of your personal ones. The header, user menu," +getting-started/dashboard-tour.md,74,24,orchestrator,O-ENTITY,R05,changes,- **Install your first orchestrator** → **[Installing the agent](../platform/orchestrators/installing-the +getting-started/dashboard-tour.md,74,78,orchestrator,O-PATH,R02,changes,tall your first orchestrator** → **[Installing the agent](../platform/orchestrators/installing-the-agent)** or follow the end-to-end **[Quick Start](qui +getting-started/quick-start.md,11,112,device,D-PLAIN,H02,stays,"nsive hardware, proprietary software licenses, and physical access to devices. Autonomy Edge removes these barriers by providing:" +getting-started/quick-start.md,14,57,device,D-PLAIN,R14,stays,"- **Virtual PLCs**: Deploy automation logic to physical devices (PLCs, PACs, Industrial PCs, Servers) running in containerized runti" +getting-started/quick-start.md,15,54,device,D-HOST,H05,stays,- **Remote Management**: Deploy programs and monitor devices from anywhere with an internet connection (internet is only required +getting-started/quick-start.md,22,53,Orchestrator,O-AGENT,R03,changes,"![Autonomy Edge platform architecture: Web Browser, Orchestrator Agent, vPLC Instances, and Physical I/O stacked top to bottom](images" +getting-started/quick-start.md,24,99,device,D-VPLC,H01,changes,"The cloud-based web application where you manage projects, users, and devices. It includes the browser-based OpenPLC Editor IDE for writing automa" +getting-started/quick-start.md,26,3,Orchestrator,O-ENTITY,R05,changes,"**Orchestrator**: An agent that runs on an edge device (like a linux-based PLC, PAC," +getting-started/quick-start.md,26,49,device,D-HOST,R15,stays,"**Orchestrator**: An agent that runs on an edge device (like a linux-based PLC, PAC, industrial PC, or on-prem server) and m" +getting-started/quick-start.md,28,175,device,D-REMOTE,R13,stays,"grams. Each vPLC runs independently and can communicate with physical devices through industrial protocols like Modbus, EtherCAT, or EtherNet/IP." +getting-started/quick-start.md,30,20,Device,D-PLAIN,R14,stays,"**Physical I/O and Devices**: The sensors, actuators, remote I/O modules, HMIs, and other indus" +getting-started/quick-start.md,50,43,orchestrator,O-AGENT,R03,changes,1. **Set up infrastructure**: Install the orchestrator agent on your device and provision a vPLC instance +getting-started/quick-start.md,50,70,device,D-HOST,R15,stays,1. **Set up infrastructure**: Install the orchestrator agent on your device and provision a vPLC instance +getting-started/quick-start.md,52,89,device,D-REMOTE,R13,stays,munication**: Set up Modbus TCP/IP to expose your outputs to external devices +getting-started/quick-start.md,59,11,device,D-HOST,R15,stays,"- **Linux device**: Any Linux-based device where you have SSH or terminal access (PLC," +getting-started/quick-start.md,59,37,device,D-HOST,R15,stays,"- **Linux device**: Any Linux-based device where you have SSH or terminal access (PLC, PAC, Industrial PC, Serve" +getting-started/quick-start.md,60,18,device,D-REMOTE,R13,stays,- **Modbus slave device**: A remote I/O module or device with at least one digital output tha +getting-started/quick-start.md,60,51,device,D-REMOTE,R13,stays,- **Modbus slave device**: A remote I/O module or device with at least one digital output that supports Modbus TCP/IP. This wi +getting-started/quick-start.md,64,22,Orchestrator,O-ENTITY,R05,changes,## Step 1: Set Up an Orchestrator +getting-started/quick-start.md,66,4,orchestrator,O-ENTITY,R05,changes,An orchestrator is an edge agent that manages your vPLC devices. It runs on your phys +getting-started/quick-start.md,66,57,device,D-HOST,R15,stays,An orchestrator is an edge agent that manages your vPLC devices. It runs on your physical hardware and maintains a secure connection +getting-started/quick-start.md,68,23,Orchestrator,O-ENTITY,R05,changes,### 1.1 Start the New Orchestrator Wizard +getting-started/quick-start.md,71,18,Orchestrator,O-ENTITY,R05,changes,2. Navigate to **Orchestrators** in the left sidebar +getting-started/quick-start.md,72,20,Orchestrator,O-ENTITY,R05,changes,3. Click the **Add Orchestrator** button +getting-started/quick-start.md,74,7,Orchestrator,O-ENTITY,R05,changes,![New Orchestrator wizard - Details step](images/add-orchestrator-step1.png) +getting-started/quick-start.md,74,54,orchestrator,O-PATH,R02,changes,![New Orchestrator wizard - Details step](images/add-orchestrator-step1.png) +getting-started/quick-start.md,76,15,Orchestrator,O-ENTITY,R05,changes,### 1.2 Enter Orchestrator Details +getting-started/quick-start.md,78,26,orchestrator,O-ENTITY,R05,changes,"1. Enter a name for your orchestrator (e.g., ""QuickStartOrchestrator"")" +getting-started/quick-start.md,78,57,Orchestrator,O-ENTITY,R05,changes,"1. Enter a name for your orchestrator (e.g., ""QuickStartOrchestrator"")" +getting-started/quick-start.md,82,35,Device,D-HOST,R15,stays,### 1.3 Install the Agent on Your Device +getting-started/quick-start.md,84,51,orchestrator,O-AGENT,R03,changes,The wizard provides a curl command to install the orchestrator agent on your Linux device. +getting-started/quick-start.md,84,84,device,D-HOST,R15,stays,ovides a curl command to install the orchestrator agent on your Linux device. +getting-started/quick-start.md,86,7,Orchestrator,O-ENTITY,R05,changes,![New Orchestrator wizard - Install step](images/add-orchestrator-step2.png) +getting-started/quick-start.md,86,54,orchestrator,O-PATH,R02,changes,![New Orchestrator wizard - Install step](images/add-orchestrator-step2.png) +getting-started/quick-start.md,89,34,device,D-HOST,R15,stays,2. Open a terminal on your Linux device (via SSH or directly) +getting-started/quick-start.md,92,65,Orchestrator,O-ENTITY,R05,changes,"5. When the installation completes, the agent will display an **Orchestrator ID**" +getting-started/quick-start.md,94,18,Orchestrator,O-ENTITY,R05,changes,### 1.4 Link the Orchestrator +getting-started/quick-start.md,98,7,Orchestrator,O-ENTITY,R05,changes,![New Orchestrator wizard - Link step](images/add-orchestrator-step3.png) +getting-started/quick-start.md,98,51,orchestrator,O-PATH,R02,changes,![New Orchestrator wizard - Link step](images/add-orchestrator-step3.png) +getting-started/quick-start.md,100,15,Orchestrator,O-ENTITY,R05,changes,1. Copy the **Orchestrator ID** from your terminal +getting-started/quick-start.md,101,27,Orchestrator,O-ENTITY,R05,changes,2. Paste it into the **ID Orchestrator** field +getting-started/quick-start.md,102,19,Orchestrator,O-ENTITY,R05,changes,3. Click **Create Orchestrator** +getting-started/quick-start.md,104,17,orchestrator,O-ENTITY,R05,changes,"> **Note:** The orchestrator ID expires after 5 minutes. If it expires, run the installation comma" +getting-started/quick-start.md,106,19,orchestrator,O-ENTITY,R05,changes,"Once linked, your orchestrator will appear in the list with its connection status." +getting-started/quick-start.md,108,3,Orchestrator,O-ENTITY,R05,changes,![Orchestrators list showing connected orchestrator](images/orchestrators-list.png) +getting-started/quick-start.md,108,40,orchestrator,O-ENTITY,R05,changes,![Orchestrators list showing connected orchestrator](images/orchestrators-list.png) +getting-started/quick-start.md,108,61,orchestrator,O-PATH,R02,changes,![Orchestrators list showing connected orchestrator](images/orchestrators-list.png) +getting-started/quick-start.md,112,26,Device,D-VPLC,R18,changes,## Step 2: Create a vPLC Device +getting-started/quick-start.md,114,199,device,D-HOST,H05,stays,"ge is the ability to run multiple vPLC instances on a single physical device. Each vPLC runs in complete isolation with real-time execution, and a" +getting-started/quick-start.md,116,18,orchestrator,O-ENTITY,R05,changes,1. Click on your orchestrator to open its details +getting-started/quick-start.md,117,22,Device,D-VPLC,R18,changes,2. Navigate to the **Devices** tab +getting-started/quick-start.md,118,16,Device,D-VPLC,R18,changes,3. Click **Add Device** +getting-started/quick-start.md,120,11,Device,D-VPLC,R18,changes,![Add New Device dialog](images/add-device-modal.png) +getting-started/quick-start.md,120,37,device,D-PATH,R11,changes,![Add New Device dialog](images/add-device-modal.png) +getting-started/quick-start.md,122,12,device,D-VPLC,R18,changes,"4. Enter a device name (e.g., ""Demo vPLC"")" +getting-started/quick-start.md,130,3,Device,D-VPLC,R18,changes,![Devices list showing the created vPLC](images/devices-list-with-vplc.png) +getting-started/quick-start.md,130,49,device,D-PATH,R11,changes,![Devices list showing the created vPLC](images/devices-list-with-vplc.png) +getting-started/quick-start.md,208,45,device,D-REMOTE,R13,stays,"To connect your program outputs to external devices, we'll configure a Modbus Remote Device." +getting-started/quick-start.md,208,86,Device,D-REMOTE,R13,stays,"program outputs to external devices, we'll configure a Modbus Remote Device." +getting-started/quick-start.md,210,18,Device,D-REMOTE,R13,stays,### Add a Remote Device +getting-started/quick-start.md,213,20,Device,D-REMOTE,R13,stays,2. Select **Remote Device** from the dropdown menu +getting-started/quick-start.md,214,12,device,D-REMOTE,R13,stays,"3. Enter a device name (e.g., ""ModbusCoils"")" +getting-started/quick-start.md,218,14,Device,D-REMOTE,R13,stays,![Add Remote Device dialog](images/add-remote-device.png) +getting-started/quick-start.md,218,47,device,D-REMOTE,R11a,stays,![Add Remote Device dialog](images/add-remote-device.png) +getting-started/quick-start.md,220,12,Device,D-REMOTE,R13,stays,The Remote Device configuration panel will open: +getting-started/quick-start.md,222,10,Device,D-REMOTE,R13,stays,![Remote Device configuration panel](images/configure-remote-device.png) +getting-started/quick-start.md,222,62,device,D-EDITORNODE,R11b,stays,![Remote Device configuration panel](images/configure-remote-device.png) +getting-started/quick-start.md,226,61,device,D-REMOTE,R13,stays,"- **IP Address**: Enter the IP address of your Modbus slave device (e.g., `192.168.1.100`). The device must be accessible on the same ne" +getting-started/quick-start.md,226,97,device,D-REMOTE,R13,stays,"e IP address of your Modbus slave device (e.g., `192.168.1.100`). The device must be accessible on the same network where the vPLC was configured." +getting-started/quick-start.md,253,194,device,D-REMOTE,R13,stays,"s located at `%QX0.0`, it will be automatically written to the Modbus device whenever its value changes." +getting-started/quick-start.md,261,25,Device,D-EDITORNODE,H03,stays,"1. In the IDE, expand **Devices** in the left sidebar" +getting-started/quick-start.md,262,15,Orchestrator,O-ENTITY,R05,changes,2. Click on **Orchestrators** to open the Device Orchestrators panel +getting-started/quick-start.md,262,43,Device,O-EDGEDEV,H06,changes,2. Click on **Orchestrators** to open the Device Orchestrators panel +getting-started/quick-start.md,262,50,Orchestrator,O-ENTITY,R05,changes,2. Click on **Orchestrators** to open the Device Orchestrators panel +getting-started/quick-start.md,263,16,orchestrator,O-ENTITY,R05,changes,"3. Expand your orchestrator (e.g., ""QuickStartOrchestrator"") to see your vPLC" +getting-started/quick-start.md,263,47,Orchestrator,O-ENTITY,R05,changes,"3. Expand your orchestrator (e.g., ""QuickStartOrchestrator"") to see your vPLC" +getting-started/quick-start.md,311,47,device,D-REMOTE,R13,stays,- Check the output coils of your Modbus slave device +getting-started/quick-start.md,325,21,Device,D-PLAIN,H02,stays,### Connect to Real Devices +getting-started/quick-start.md,326,118,device,D-REMOTE,R13,stays,"/communication)** - Configure Modbus servers, clients, and OPC-UA for device integration" +getting-started/quick-start.md,330,6,Orchestrator,O-ENTITY,R05,changes,- **[Orchestrators](../platform/orchestrators/overview)** - Deploy orchestrators to edg +getting-started/quick-start.md,330,33,orchestrator,O-PATH,R02,changes,- **[Orchestrators](../platform/orchestrators/overview)** - Deploy orchestrators to edge devices across multiple s +getting-started/quick-start.md,330,68,orchestrator,O-ENTITY,R05,changes,- **[Orchestrators](../platform/orchestrators/overview)** - Deploy orchestrators to edge devices across multiple sites +getting-started/quick-start.md,330,90,device,D-HOST,R15,stays,(../platform/orchestrators/overview)** - Deploy orchestrators to edge devices across multiple sites +getting-started/quick-start.md,331,11,device,D-VPLC,R18,changes,- **[vPLC devices](../platform/vplcs/overview)** - Run multiple vPLCs on a single edge +getting-started/quick-start.md,331,88,device,D-HOST,R15,stays,](../platform/vplcs/overview)** - Run multiple vPLCs on a single edge device for workload consolidation +getting-started/quick-start.md,338,19,orchestrator,O-ENTITY,R05,changes,- Check that your orchestrator is connected (green status indicator) +getting-started/quick-start.md,339,43,orchestrator,O-ENTITY,R05,changes,- Verify network connectivity between the orchestrator and the platform +getting-started/quick-start.md,340,13,orchestrator,O-ENTITY,R05,changes,- Check the orchestrator logs for error messages +getting-started/quick-start.md,350,22,Orchestrator,O-ENTITY,R05,changes,- Try refreshing the Orchestrators panel (click the refresh icon) +getting-started/quick-start.md,352,5,Orchestrator,O-ENTITY,R05,changes,### Orchestrator ID expired +getting-started/quick-start.md,353,52,device,D-HOST,R15,stays,- Run the installation command again on your Linux device +getting-started/quick-start.md,356,63,orchestrator,O-PATH,R02,changes,"For more help, visit the [Troubleshooting](../troubleshooting/orchestrator-not-connecting) section or contact support." +getting-started/what-is-autonomy-edge.md,5,170,orchestrator,O-AGENT,R03,changes,ound manually. The only thing that runs on your hardware is a small **orchestrator agent** that talks to the cloud and starts and stops vPLC containers. +getting-started/what-is-autonomy-edge.md,10,75,device,D-HOST,H05,stays,OEMs and machine builders** who need to ship the same program to many devices and keep them in sync over the air. +getting-started/what-is-autonomy-edge.md,18,55,device,D-HOST,H05,stays,"- **Single-PLC machines.** One project, one vPLC, one device. The Quick Start walks through exactly this case." +getting-started/what-is-autonomy-edge.md,19,31,orchestrator,O-ENTITY,R05,changes,"- **Multi-PLC machines.** One orchestrator on a beefy edge device, several vPLCs each running an isolated runtim" +getting-started/what-is-autonomy-edge.md,19,60,device,D-HOST,R15,stays,"- **Multi-PLC machines.** One orchestrator on a beefy edge device, several vPLCs each running an isolated runtime, all coordinated from" +getting-started/what-is-autonomy-edge.md,20,25,device,D-HOST,H05,stays,- **Fleets of identical devices.** Push the same project to many orchestrators across sites. (Multip +getting-started/what-is-autonomy-edge.md,20,66,orchestrator,O-ENTITY,R05,changes,- **Fleets of identical devices.** Push the same project to many orchestrators across sites. (Multiple orchestrators require a paid plan; see [Pric +getting-started/what-is-autonomy-edge.md,20,104,orchestrator,O-ENTITY,R05,changes,* Push the same project to many orchestrators across sites. (Multiple orchestrators require a paid plan; see [Pricing](../plans-and-billing/pricing).) +getting-started/what-is-autonomy-edge.md,28,10,orchestrator,O-AGENT,R03,changes,"2. **The orchestrator agent.** A small Python daemon that runs on a Linux edge device (PLC," +getting-started/what-is-autonomy-edge.md,28,80,device,D-HOST,R15,stays,"orchestrator agent.** A small Python daemon that runs on a Linux edge device (PLC, PAC, industrial PC, server, Raspberry Pi). You install it with" +getting-started/what-is-autonomy-edge.md,29,74,orchestrator,O-ENTITY,R05,changes,"**vPLC containers.** When you tell the platform to create a vPLC, the orchestrator starts an OpenPLC v4 runtime in a Docker container on that device. Ea" +getting-started/what-is-autonomy-edge.md,29,146,device,D-HOST,H05,stays,chestrator starts an OpenPLC v4 runtime in a Docker container on that device. Each vPLC appears on your physical LAN with its own IP and MAC addre +getting-started/what-is-autonomy-edge.md,40,11,orchestrator,O-ENTITY,R05,changes,- Run one orchestrator with two vPLC devices. +getting-started/what-is-autonomy-edge.md,40,38,device,D-VPLC,R18,changes,- Run one orchestrator with two vPLC devices. +getting-started/what-is-autonomy-edge.md,43,30,orchestrator,O-ENTITY,R05,changes,"Private projects, additional orchestrators, more devices, and team features require a paid plan. The five plans" +getting-started/what-is-autonomy-edge.md,43,50,device,D-VPLC,H01,changes,"Private projects, additional orchestrators, more devices, and team features require a paid plan. The five plans are summarize" +account/settings/account.md,13,58,orchestrator,O-ENTITY,R05,changes,"> Deleting your account is permanent. Personal projects, orchestrators and devices will be removed. Forum posts, topics and direct messages" +account/settings/account.md,13,76,device,D-VPLC,H01,changes,"eting your account is permanent. Personal projects, orchestrators and devices will be removed. Forum posts, topics and direct messages remain visi" +account/settings/account.md,22,8,orchestrator,O-ENTITY,R05,changes,- Your orchestrators and their vPLC devices. +account/settings/account.md,22,37,device,D-VPLC,R18,changes,- Your orchestrators and their vPLC devices. +account/settings/security-email.md,28,32,device,D-PLAIN,R14,stays,- All active sessions on every device are signed out. You'll need to sign in again with the new email. +account/settings/security-password.md,17,83,device,D-PLAIN,R14,stays,nging your password will sign you out of all active sessions on every device.* +account/settings/usage.md,50,5,Orchestrator,O-ENTITY,R05,changes,- **Orchestrators**: N / M used. +account/settings/usage.md,51,5,Device,D-VPLC,H01,changes,- **Devices**: N / M used. +account/settings/usage.md,62,5,Orchestrator,O-ENTITY,R05,changes,| **Orchestrators** | The number of orchestrator entries in your workspace (Active + I +account/settings/usage.md,62,37,orchestrator,O-ENTITY,R05,changes,| **Orchestrators** | The number of orchestrator entries in your workspace (Active + Inactive). | +account/settings/usage.md,63,5,Device,D-VPLC,R18,changes,| **Devices** | The number of vPLC entries across all your orchestrators. | +account/settings/usage.md,63,60,orchestrator,O-ENTITY,R05,changes,| **Devices** | The number of vPLC entries across all your orchestrators. | +reference/faq.md,45,4,Orchestrator,O-ENTITY,R05,changes,## Orchestrators and vPLCs +reference/faq.md,47,26,orchestrator,O-AGENT,R03,changes,### How do I install the orchestrator agent? +reference/faq.md,49,49,device,D-HOST,R15,stays,Run `curl https://getedge.me | bash` on a Linux device. See **[Installing the agent](../platform/orchestrators/installing-th +reference/faq.md,49,98,orchestrator,O-PATH,R02,changes,e | bash` on a Linux device. See **[Installing the agent](../platform/orchestrators/installing-the-agent)** for the full flow. +reference/faq.md,51,9,Orchestrator,O-ENTITY,R05,changes,### The Orchestrator ID expired before I finished installing. What now? +reference/faq.md,53,38,device,D-HOST,R15,stays,Run the install command again on the device. The installer detects the existing install and prints a fresh ID. +reference/faq.md,55,15,orchestrator,O-ENTITY,R05,changes,"### Why is my orchestrator stuck ""Inactive""?" +reference/faq.md,57,35,Orchestrator,O-ENTITY,R05,changes,The agent isn't reporting. See **[Orchestrator not connecting](../troubleshooting/orchestrator-not-connecting)**. +reference/faq.md,57,83,orchestrator,O-PATH,R02,changes,n't reporting. See **[Orchestrator not connecting](../troubleshooting/orchestrator-not-connecting)**. +reference/faq.md,65,35,device,D-VPLC,R18,changes,No. Community is capped at 2 vPLC devices. Upgrade to Pro for 100 or to a per-seat plan for more. +reference/faq.md,73,104,device,D-PLAIN,H02,stays,"attached directly to your physical network with its own MAC, so other devices see it like a standalone PLC. See **[Network modes](../platform/vplc" +reference/glossary.md,13,11,Orchestrator,O-AGENT,R03,changes,## Agent (Orchestrator Agent) +reference/glossary.md,15,49,device,D-HOST,R15,stays,"The Python+Docker daemon that runs on your edge device. Pairs with the cloud via mTLS WebSocket, manages vPLC containers loc" +reference/glossary.md,35,26,orchestrator,O-ENTITY,R05,changes,"The free tier. Limits: 1 orchestrator, 2 devices, 0 private projects. AI Chat included, AI Engineer not inc" +reference/glossary.md,35,42,device,D-VPLC,H01,changes,"The free tier. Limits: 1 orchestrator, 2 devices, 0 private projects. AI Chat included, AI Engineer not included. See" +reference/glossary.md,41,4,Device,D-VPLC,R18,changes,## Device (vPLC device) +reference/glossary.md,41,17,device,D-VPLC,R18,changes,## Device (vPLC device) +reference/glossary.md,43,39,orchestrator,O-ENTITY,R05,changes,"A virtual PLC container running on an orchestrator. Has a name, runtime version, NICs. See **[vPLC overview](../platform" +reference/glossary.md,55,37,orchestrator,O-ENTITY,R05,changes,Custom-contract plan with unlimited orchestrators/devices and special terms. Contact sales. +reference/glossary.md,55,51,device,D-VPLC,H01,changes,Custom-contract plan with unlimited orchestrators/devices and special terms. Contact sales. +reference/glossary.md,71,150,device,D-PLAIN,R14,stays,"cal LAN. The mechanism behind vPLC networking, vPLCs appear as native devices to the rest of the network." +reference/glossary.md,81,4,Orchestrator,O-ENTITY,R05,changes,## Orchestrator +reference/glossary.md,83,44,device,D-HOST,R15,stays,The cloud-side entity representing an edge device. Hosts vPLCs. See **[Orchestrator overview](../platform/orchestrators +reference/glossary.md,83,72,Orchestrator,O-ENTITY,R05,changes,he cloud-side entity representing an edge device. Hosts vPLCs. See **[Orchestrator overview](../platform/orchestrators/overview)**. +reference/glossary.md,83,107,orchestrator,O-PATH,R02,changes,n edge device. Hosts vPLCs. See **[Orchestrator overview](../platform/orchestrators/overview)**. +reference/glossary.md,87,64,orchestrator,O-ENTITY,R05,changes,"A shared workspace for teams. Has its own dashboard, projects, orchestrators, and billing, separate from your personal workspace. See **[Organiza" +reference/glossary.md,107,24,orchestrator,O-ENTITY,R05,changes,"Paid personal plan. 20 orchestrators, 100 devices, private projects, full AI Engineer. Recommended for so" +reference/glossary.md,107,43,device,D-VPLC,H01,changes,"Paid personal plan. 20 orchestrators, 100 devices, private projects, full AI Engineer. Recommended for solo profession" +reference/glossary.md,151,67,orchestrator,O-ENTITY,R05,changes,Virtual PLC. A Docker container running the OpenPLC runtime on an orchestrator. Behaves on the network like a standalone PLC. See **[vPLC overview]( +reference/glossary.md,155,38,orchestrator,O-ENTITY,R05,changes,The unit of scoping for projects and orchestrators. Each user has a personal workspace; each organization is a workspac diff --git a/docs/exploration/rename-census.py b/docs/exploration/rename-census.py new file mode 100644 index 0000000..ff2c7a4 --- /dev/null +++ b/docs/exploration/rename-census.py @@ -0,0 +1,333 @@ +#!/usr/bin/env python3 +""" +EDGE-642 / EDGE-633 terminology rename: occurrence census for user-docs. + +Emits one row per occurrence of "orchestrator" or "device" across the markdown +under docs/, with a decision code and the id of the rule that assigned it. + +The point is FR17 and FR20: every occurrence of both words carries a recorded +decision, including the ones that stay unchanged. The reason for a decision is +written once per code in RENAME-DECISION-RECORD.md; a row carries the code, so +the record does not repeat a sentence 1200 times. + +Run from docs/: python3 exploration/rename-census.py +Outputs: exploration/rename-census.csv +Verification (Phase 10): + python3 exploration/rename-census.py --verify +which re-runs the census on the current tree and fails if any occurrence still +carries a code from the CHANGES set. +""" + +import csv +import os +import re +import sys + +WORD = re.compile(r"orchestrator|device", re.I) +CTX = 70 + +# This demand's own artefacts. They are full of both words by construction, and +# counting them would make the census measure itself instead of the documentation. +SELF = { + "exploration/RENAME-DECISION-RECORD.md", + "exploration/RENAME-IMAGE-MAP.md", +} + +# ---------------------------------------------------------------- legend ---- +# decision: "changes" rows must not survive the rewrite; "stays" rows must. +LEGEND = { + # ---- changes ----------------------------------------------------------- + "O-ENTITY": ("changes", "orchestrator = the parent product entity -> Device (BR01)"), + "O-AGENT": ("changes", "the orchestrator agent, the daemon -> Device Agent (BR04)"), + "O-EDGEDEV": ("changes", "the platform entity named inside the Editor docs -> Edge Device / " + "Edge Devices, because the Editor already uses Device for the PLC " + "target (BR05, FR10)"), + "O-PATH": ("changes", "path, link target or image filename carrying the old vocabulary -> " + "rewritten by the section move (FR18)"), + "D-VPLC": ("changes", "device = the child entity, the virtual PLC -> vPLC (BR02, sense 1)"), + "D-PATH": ("changes", "path, link target or image filename where device means the child " + "entity -> renamed to vplc (FR18)"), + # ---- stays ------------------------------------------------------------- + "O-LITERAL": ("stays", "a literal the software still emits or resolves: container name, " + "image reference, repository URL, or a log line quoted verbatim. " + "Changing it would print an instruction that does not work (BR09, BR13)"), + "O-SE": ("stays", "the ordinary software-engineering sense of orchestrator, not the " + "product entity (BR07)"), + "D-HOST": ("stays", "device = the machine the agent runs on, written as 'your edge " + "device'. This is the sense the new vocabulary promotes, so it gets a " + "consistency pass rather than a rename (sense 2)"), + "D-EDITORNODE": ("stays", "device = the Editor's Device node and its Device Configuration " + "screens, the PLC target being programmed. A different concept " + "(BR06, FR09, sense 3)"), + "D-TARGET": ("stays", "device = the PLC or runtime the editor is connected to. SEVENTH " + "SENSE, absent from the original framework: the target can be a vPLC " + "or physical hardware, so calling it a vPLC would make these pages " + "wrong for anyone running a real PLC"), + "D-REMOTE": ("stays", "remote device: a Modbus master or an EtherCAT bus or slave device. " + "A different concept (sense 4)"), + "D-PLAIN": ("stays", "the plain networking or hardware sense, ordinary English, including " + "'every device' meaning the reader's own browser session (sense 5)"), + "D-LICENSE": ("stays", "licensed device: the VPP licensing unit, a physical hardware unit " + "identified by a serial anchor. Neither entity (BR12, sense 6)"), + "D-LITERAL": ("stays", "a string quoted verbatim from a product interface or message, a CLI " + "subcommand, or the on-disk devices/ project directory. Quoting it " + "differently would misreport what the screen says or print a command " + "that does not work (BR09)"), + "X-HIST": ("stays", "a dated historical record: the internal planning documents under " + "docs/exploration/, and the changelog entries. These say what was " + "true, or what a release actually said, at a past date, so renaming " + "them would falsify a record"), +} +CHANGES = {k for k, v in LEGEND.items() if v[0] == "changes"} + +# --------------------------------------------------------------- helpers ---- +def code_blocks(text): + """Line numbers (1-based) that sit inside a fenced code block.""" + inside, fenced = False, set() + for n, line in enumerate(text.splitlines(), 1): + if line.lstrip().startswith("```"): + inside = not inside + fenced.add(n) + continue + if inside: + fenced.add(n) + return fenced + + +# Literals the software still emits or resolves. Never rewritten. +# Judged POSITIONALLY, on the text touching the match, never on the 140-char +# window: a window rule marks "the orchestrator goes Inactive" as a literal +# just because a docker command sits earlier on the same line. +def is_o_literal(line, start, end): + after = line[end:end + 8].lower() + before = line[max(0, start - 24):start].lower() + if after.startswith("-agent"): # orchestrator-agent, the container/image/repo + return True + if "/var/" in before: # /var/orchestrator, written on the machine + return True + if before.endswith("unknown ") or before.endswith('"unknown '): + return True # log line the agent emits + return False + + +def is_agent(line, start, end): + """True only when the match is part of the phrase 'orchestrator agent'.""" + return re.match(r"[-*_ ]{0,3}agent", line[end:end + 12], re.I) is not None + + +def in_code_span(line, col): + """True when the match sits inside a `...` inline code span.""" + return line.count("`", 0, col - 1) % 2 == 1 + +# A link target or an image filename, i.e. ](...orchestrator...) or ](...device...) +def in_link_target(line, col): + """True when the match sits inside a markdown link/image target.""" + open_paren = line.rfind("](", 0, col) + if open_paren == -1: + return False + close = line.find(")", open_paren) + return close == -1 or close > col + + +REMOTE = re.compile( + r"remote device|remote-device|modbus|ethercat|slave|bus master|coe |sdo|pdo|esi" + r"|io group|remote equipment", + re.I, +) + +EDITOR_SCREEN = re.compile( + r"orchestrators screen|orchestrators editor|orchestrators panel|orchestrators card" + r"|orchestrators tab|device orchestrators|click \*\*orchestrators\*\*" + r"|expand \*\*device\*\*|orchestrators\*\*", + re.I, +) + +# Quoted product strings that must stay byte-identical. +D_LITERAL = re.compile( + r"no coe object dictionary|coe object dictionary available|no configurable sdo" + r"|the ethercat device could not be found|no channels available for this device" + r"|`devices/|devices/servers|devices/remote|select this device for" + r"|choose a device to retrieve", + re.I, +) + +# The child entity, the vPLC, in platform / billing / account contexts. +VPLC_CTX = re.compile( + r"vplc|virtual plc|new device|add device|add new device|create device|device name" + r"|device limit|devices tab|device entries|devices\*\* tab|device detail" + r"|containerized|container", + re.I, +) + +HOST = re.compile( + r"edge device|linux device|linux-based device|your device|target linux|on the device" + r"|edge hardware|edge computer|physical hardware|industrial pc|raspberry pi", + re.I, +) + +PLAIN = re.compile( + r"every device|all your devices|physical i/o|sensors|actuators|native devices" + r"|external devices|expensive hardware|physical devices|device integration" + r"|remote i/o|hmi", + re.I, +) + + +def classify(path, line, col, word, ctx): + """Return (code, rule_id). Ordered rules; the first that matches wins.""" + w = word.lower() + top = path.split("/")[0] + + # R00 - the internal planning documents, both words. + if top == "exploration": + return "X-HIST", "R00" + + if w == "orchestrator": + # R01 - literals the software emits or resolves, judged positionally. + if is_o_literal(line, col - 1, col - 1 + len(word)) or in_code_span(line, col): + return "O-LITERAL", "R01" + # R02 - link targets and image filenames. + if in_link_target(line, col): + return "O-PATH", "R02" + # R03 - the daemon, only when the word "agent" touches the match. + if is_agent(line, col - 1, col - 1 + len(word)): + return "O-AGENT", "R03" + # R04 - inside the Editor docs the entity reads Edge Device. + if top == "openplc-editor": + return "O-EDGEDEV", "R04" + # R05 - everywhere else it is the parent entity. + return "O-ENTITY", "R05" + + # w == "device" + # R09 - the "Device" half of the Editor's screen label "Device Orchestrators", + # which becomes "Edge Devices" as one label. Both words move together, so the + # half that reads "Device" is not one of the senses that stay. + if re.match(r"[s]?[ -]orchestrator", line[col - 1 + len(word):col + 20], re.I): + return "O-EDGEDEV", "R09" + # R10 - quoted product strings and the on-disk project directory. + if D_LITERAL.search(ctx) or in_code_span(line, col): + return "D-LITERAL", "R10" + # R11 - link targets and image filenames. A path is only renamed when the + # "device" in it means the child entity; the remote-device captures and the + # Editor's device-config page keep their names, so they are excluded first. + if in_link_target(line, col): + target = line[line.rfind("](", 0, col) + 2:] + target = target[:target.find(")")] if ")" in target else target + if re.search(r"remote-device|device-from-repository|device-config", target, re.I): + return ("D-REMOTE", "R11a") if "config" not in target.lower() \ + else ("D-EDITORNODE", "R11b") + return "D-PATH", "R11" + # R12 - VPP licensing. + if re.search(r"licensed device|serial anchor|vpp licen", ctx, re.I): + return "D-LICENSE", "R12" + # R13 - remote equipment: Modbus, EtherCAT. + if REMOTE.search(ctx): + return "D-REMOTE", "R13" + # R14 - plain networking or hardware English. + if PLAIN.search(ctx): + return "D-PLAIN", "R14" + # R15 - the machine the agent runs on. + if HOST.search(ctx): + return "D-HOST", "R15" + # R16 - the connected PLC or runtime, the seventh sense. + if path.startswith("openplc-editor/building-deploying/"): + return "D-TARGET", "R16" + # R17 - the Editor's Device node and its configuration screens. + if path.startswith("openplc-editor/"): + return "D-EDITORNODE", "R17" + # R18 - the child entity, everywhere outside the Editor docs. + if VPLC_CTX.search(ctx): + return "D-VPLC", "R18" + # R19 - residual, reviewed by hand and pinned in OVERRIDES. + return "REVIEW", "R19" + + +# Rows the rules get wrong or cannot see, pinned by (path, line, col). +# Each entry was read in context before being written here. +OVERRIDES = {} + + +def load_overrides(): + p = os.path.join("exploration", "rename-census-overrides.csv") + if not os.path.exists(p): + return + for r in csv.DictReader(open(p, encoding="utf-8")): + OVERRIDES[(r["file"], int(r["line"]), int(r["col"]))] = (r["code"], r["rule"]) + + +def census(): + load_overrides() + rows = [] + for root, _dirs, files in os.walk("."): + for f in sorted(files): + if not f.endswith(".md"): + continue + p = os.path.relpath(os.path.join(root, f), ".") + if p in SELF: + continue + text = open(p, encoding="utf-8").read() + fenced = code_blocks(text) + for ln, line in enumerate(text.splitlines(), 1): + for m in WORD.finditer(line): + col = m.start() + 1 + a, b = max(0, m.start() - CTX), min(len(line), m.end() + CTX) + ctx = line[a:b].strip() + key = (p, ln, col) + if key in OVERRIDES: + code, rule = OVERRIDES[key] + else: + code, rule = classify(p, line, col, m.group(0), ctx) + # A fenced block is normally a literal. It must never be a + # way for an unclassified row to acquire a code by accident, + # so REVIEW is left standing and reported. + if (ln in fenced and code != "REVIEW" + and code not in ("O-LITERAL", "D-LITERAL", "X-HIST")): + code, rule = ("O-LITERAL" if m.group(0).lower() == "orchestrator" + else "D-LITERAL"), rule + "+fenced" + rows.append({ + "file": p, "line": ln, "col": col, "word": m.group(0), + "code": code, "rule": rule, + "decision": LEGEND[code][0] if code in LEGEND else "REVIEW", + "context": ctx, + }) + return rows + + +def main(): + rows = census() + verify = "--verify" in sys.argv + if not verify: + out = os.path.join("exploration", "rename-census.csv") + with open(out, "w", newline="", encoding="utf-8") as fh: + w = csv.DictWriter(fh, fieldnames=["file", "line", "col", "word", + "code", "rule", "decision", "context"]) + w.writeheader() + w.writerows(rows) + print(f"wrote {out}: {len(rows)} occurrences") + + from collections import Counter + by_code = Counter(r["code"] for r in rows) + print(f"\n{'code':14} {'n':>5} decision") + for code, n in sorted(by_code.items(), key=lambda kv: (-kv[1], kv[0])): + print(f"{code:14} {n:>5} {LEGEND.get(code, ('REVIEW',))[0]}") + print(f"{'TOTAL':14} {len(rows):>5}") + + todo = [r for r in rows if r["code"] == "REVIEW"] + if todo: + print(f"\n!! {len(todo)} occurrences unclassified, rule R19 fell through:") + for r in todo[:60]: + print(f" {r['file']}:{r['line']}:{r['col']} {r['context'][:110]}") + + if verify: + left = [r for r in rows if r["code"] in CHANGES] + if left: + print(f"\nFAIL: {len(left)} occurrences still carry a CHANGES code:") + for r in left[:80]: + print(f" [{r['code']}] {r['file']}:{r['line']} {r['context'][:100]}") + return 1 + print("\nPASS: every surviving occurrence carries a 'stays' code.") + return 1 if todo else 0 + + +if __name__ == "__main__": + sys.exit(main()) From 21230b336dad0ee0e8f0e9aa71958e39d6a77c78 Mon Sep 17 00:00:00 2001 From: Thiago-Pio-Autonomy Date: Tue, 8 Sep 2026 23:09:29 -0300 Subject: [PATCH 02/19] EDGE-642: move the Orchestrator section to Devices, paths only Orchestrator becomes Device and the child entity becomes vPLC, so the section that documents the parent has to live at platform/devices/ before its prose can be rewritten. Splitting the move from the rewrite is deliberate: git records these as renames, so the phase that changes the words reviews as words. Nothing but paths changed here. Masking every ](...) target makes all 21 edited markdown files byte-identical to their pre-move versions, so no prose, heading, alt text or fenced block moved with them. Four image renames had to be sequenced, because the child held a name the parent was taking: the vPLC wizard captures gave up new-device-step* and the vPLC plan limit gave up device-plan-limit.png before the parent's captures claimed those names. Verified by blob hash rather than by trusting the order, and 276 images went in and 276 came out. platform-architecture.svg is drawn by hand rather than captured, so its "Orchestrator Agent" layer is corrected here instead of waiting for the screenshot recapture. "Physical I/O and Devices" and "Runs on edge device" stay: they are the plain hardware sense and the host sense, neither of which is renamed. _config.json still points at the old paths. That is the next phase, so the navigation is knowingly broken for one commit. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01SEHN6E4oZKbi6ekw1da6A4 --- docs/getting-started/dashboard-tour.md | 4 ++-- .../images/platform-architecture.svg | 6 +++--- docs/getting-started/quick-start.md | 4 ++-- docs/index.md | 4 ++-- .../building-deploying/deployment-vplc.md | 2 +- docs/openplc-editor/connecting-to-runtimes.md | 2 +- .../images/device-plan-limit.png | Bin 43737 -> 36345 bytes .../images/orchestrator-plan-limit.png | Bin 36345 -> 0 bytes .../images/vplc-plan-limit.png | Bin 0 -> 43737 bytes docs/plans-and-billing/plan-limits.md | 4 ++-- .../device-detail.md} | 10 +++++----- .../devices-list.md} | 10 +++++----- .../images/device-3dot-menu.png} | Bin .../images/device-detail-vplcs.png} | Bin .../images/device-info.png} | Bin .../images/devices-list.png} | Bin .../images/devices-vplcs-expanded.png} | Bin .../images/new-device-step1.png} | Bin .../images/new-device-step2.png} | Bin .../images/new-device-step3.png} | Bin .../installing-the-agent.md | 14 +++++++------- .../managing-devices.md} | 8 ++++---- .../{orchestrators => devices}/overview.md | 6 +++--- .../platform/organizations/creating-an-org.md | 2 +- docs/platform/projects/overview.md | 2 +- docs/platform/vplcs/connecting-from-editor.md | 2 +- docs/platform/vplcs/creating-a-vplc.md | 12 ++++++------ ...down.png => new-vplc-runtime-dropdown.png} | Bin ...ew-device-step1.png => new-vplc-step1.png} | Bin ...network.png => new-vplc-step2-network.png} | Bin ...ed.png => new-vplc-step2-nic-expanded.png} | Bin ...3-serial.png => new-vplc-step3-serial.png} | Bin docs/platform/vplcs/vplc-detail.md | 4 ++-- docs/reference/faq.md | 4 ++-- docs/reference/glossary.md | 2 +- ...connecting.md => device-not-connecting.md} | 6 +++--- ...rator-inactive.png => device-inactive.png} | Bin docs/troubleshooting/plan-limit-reached.md | 2 +- docs/troubleshooting/vplc-stuck-stopped.md | 4 ++-- 39 files changed, 57 insertions(+), 57 deletions(-) delete mode 100644 docs/plans-and-billing/images/orchestrator-plan-limit.png create mode 100644 docs/plans-and-billing/images/vplc-plan-limit.png rename docs/platform/{orchestrators/orchestrator-detail.md => devices/device-detail.md} (86%) rename docs/platform/{orchestrators/orchestrators-list.md => devices/devices-list.md} (91%) rename docs/platform/{orchestrators/images/orchestrator-3dot-menu.png => devices/images/device-3dot-menu.png} (100%) rename docs/platform/{orchestrators/images/orchestrator-detail-devices.png => devices/images/device-detail-vplcs.png} (100%) rename docs/platform/{orchestrators/images/orchestrator-info.png => devices/images/device-info.png} (100%) rename docs/platform/{orchestrators/images/orchestrators-list.png => devices/images/devices-list.png} (100%) rename docs/platform/{orchestrators/images/orchestrators-devices-expanded.png => devices/images/devices-vplcs-expanded.png} (100%) rename docs/platform/{orchestrators/images/new-orchestrator-step1.png => devices/images/new-device-step1.png} (100%) rename docs/platform/{orchestrators/images/new-orchestrator-step2.png => devices/images/new-device-step2.png} (100%) rename docs/platform/{orchestrators/images/new-orchestrator-step3.png => devices/images/new-device-step3.png} (100%) rename docs/platform/{orchestrators => devices}/installing-the-agent.md (83%) rename docs/platform/{orchestrators/managing-orchestrators.md => devices/managing-devices.md} (92%) rename docs/platform/{orchestrators => devices}/overview.md (96%) rename docs/platform/vplcs/images/{new-device-runtime-dropdown.png => new-vplc-runtime-dropdown.png} (100%) rename docs/platform/vplcs/images/{new-device-step1.png => new-vplc-step1.png} (100%) rename docs/platform/vplcs/images/{new-device-step2-network.png => new-vplc-step2-network.png} (100%) rename docs/platform/vplcs/images/{new-device-step2-nic-expanded.png => new-vplc-step2-nic-expanded.png} (100%) rename docs/platform/vplcs/images/{new-device-step3-serial.png => new-vplc-step3-serial.png} (100%) rename docs/troubleshooting/{orchestrator-not-connecting.md => device-not-connecting.md} (95%) rename docs/troubleshooting/images/{orchestrator-inactive.png => device-inactive.png} (100%) diff --git a/docs/getting-started/dashboard-tour.md b/docs/getting-started/dashboard-tour.md index c832c60..99432b1 100644 --- a/docs/getting-started/dashboard-tour.md +++ b/docs/getting-started/dashboard-tour.md @@ -21,7 +21,7 @@ Stretching across the screen at the very top: This column lists the things that are yours in the current workspace. - **Projects** card with a **+ New** button at the top. Below it, the four most recently modified projects, with a **View all** link at the bottom that takes you to **[your projects list](../platform/projects/projects-list)**. -- **Orchestrators** card. If you have one or more orchestrators set up, the first one is named here. The blue **Manage orchestrator** button takes you to the **[orchestrators list](../platform/orchestrators/orchestrators-list)**. +- **Orchestrators** card. If you have one or more orchestrators set up, the first one is named here. The blue **Manage orchestrator** button takes you to the **[orchestrators list](../platform/devices/devices-list)**. When you switch to an organization workspace, this column shows that organization's projects and orchestrators instead of yours. @@ -71,5 +71,5 @@ To switch to an organization's workspace, click the organization's name in the * ## What's next - **Start a project** → **[Creating a project](../platform/projects/creating-a-project)**. -- **Install your first orchestrator** → **[Installing the agent](../platform/orchestrators/installing-the-agent)** or follow the end-to-end **[Quick Start](quick-start)**. +- **Install your first orchestrator** → **[Installing the agent](../platform/devices/installing-the-agent)** or follow the end-to-end **[Quick Start](quick-start)**. - **Look around the community** → **[Forum overview](../platform/forum/overview)**. diff --git a/docs/getting-started/images/platform-architecture.svg b/docs/getting-started/images/platform-architecture.svg index cb99313..844f8f3 100644 --- a/docs/getting-started/images/platform-architecture.svg +++ b/docs/getting-started/images/platform-architecture.svg @@ -1,7 +1,7 @@ Autonomy Edge Platform Architecture - A vertical stack of four layers connected by labeled arrows: Your Web Browser at the top, Orchestrator Agent below it, vPLC Instances next, and Physical I/O and Devices at the bottom. + A vertical stack of four layers connected by labeled arrows: Your Web Browser at the top, Device Agent below it, vPLC Instances next, and Physical I/O and Devices at the bottom.