Specifications
What This Chapter Covers
This chapter collects PAIO's fixed numbers, lists, and constraints in one place. It covers the supported operating systems and installation packages, the runtime environment, the technology stack, the scope of AUTOSAR support, input and output formats, the data model, the AI, validation, license, security, and update specifications, and the known limitations. It does not describe operating procedures. It is written for anyone evaluating PAIO and for users narrowing down a problem, and it has no prerequisites.
You can look up the meaning of the terms used in these tables in 21. Glossary.
2.1 Product Identification
The basic information that identifies the product is as follows.
| Item | Value |
|---|---|
| Product name | PAIO |
| Version | 0.5.0 |
| Executable name (Windows) | PAIO |
| Signer (Windows) | POPCORNSAR Co.,Ltd. |
| License | Commercial (PopcornSAR PAIO License) |
The Windows signer string is upper case exactly as written in the certificate, with no space after the comma (
POPCORNSAR Co.,Ltd.).
2.2 Supported Platforms and Installation Packages
The supported operating systems and distribution formats are as follows.
| OS | Architecture | Distribution format | Artifact name |
|---|---|---|---|
| Windows | x64 | NSIS installer executable, ZIP | PAIO-win-x64.exe, PAIO-win-x64.zip |
| macOS | x64, arm64 (Apple Silicon) | DMG, ZIP | PAIO-mac-x64.dmg, PAIO-mac-arm64.dmg, and the matching .zip files |
| Linux | x64 | DEB, tar.gz | PAIO-linux-x64.deb, PAIO-linux-x64.tar.gz |
Windows Installer (NSIS) Behavior
The Windows installer behaves as follows from the user's point of view.
- It runs as a wizard, not as a one-click install.
- A per-user installation is the default.
- You can change the installation path.
- The desktop shortcut is controlled by a check box on the last screen, and that check box is on by default.
- Uninstalling leaves the application data in place.
- The installer screens appear in English even on a Korean Windows system.
macOS and Linux
- The macOS build is neither code-signed nor notarized.
- The Linux
.debinstalls icons under/usr/share/icons/hicolor/and creates a.desktopfile. - The Linux
.tar.gzhas no system integration, so on first launch the application registers its own icon at~/.local/share/icons/hicolor/<size>/apps/paio.png. It skips this registration if PAIO is already installed from the.debor is running in development mode.
2.3 Runtime Environment
The values related to the runtime environment are as follows.
| Item | Value |
|---|---|
| Default window size | 1200 x 800 |
| Minimum window size | 800 x 600 |
| Window frame | Frameless (custom title bar). hiddenInset on macOS |
| When the window appears | After the screen is ready (hidden at first) |
| Editor tabs open at once | 20 at most |
| Per-workspace isolation | userData is separated into workspace-<first 8 characters of md5(cwd)>, plus a per-workspace single-instance lock |
| Storage of account, license, and machine ID | A machine-wide path that is independent of the workspace |
| Screen before sign-in | The main layout is not created at all |
If you launch PAIO twice on the same workspace (the same working directory), the second instance exits and focus moves to the existing window. Different workspaces each run as an independent instance.
2.4 Technology Stack
PAIO is an Electron-based desktop application. Code editing uses Monaco, and the terminal uses xterm.
2.5 AUTOSAR Support Specification
Schema Versions
The AUTOSAR schema version information that PAIO handles is as follows.
| Axis | Value | Description |
|---|---|---|
| Output schema release | Fixed at R25-11 (AUTOSAR_00054.xsd) | Every export is written with xmlns="http://autosar.org/schema/r4.0" and xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00054.xsd" |
| Bundled XSD | R25-11 (AUTOSAR_00054.xsd), R20-11 (AUTOSAR_00049.xsd) | schemas/autosar/VERSIONS.json, default R25-11 |
| AUTOSAR feature version axis | 4.3 / 4.4 / 4.5 / 4.6 / 4.7 (default 4.7) | A separate axis in the conversion layer. It is independent of the schema release |
- When you import an ECUC Module Definition, PAIO reads the schema number from the file's
xsi:schemaLocationand records it.
Supported Protocols
The scope of support per protocol is as follows.
| Protocol | IVC topology | Signal editor |
|---|---|---|
| CAN / CAN FD | Connectors, controllers, and clusters can all be added | Edit frames on the CAN tab |
| LIN | Connectors, controllers (LIN Master / LIN Slave), and clusters can be added | Edit frames on the LIN tab |
| Ethernet | Connectors, controllers, clusters, and switches (Coupling Element) can be added | No dedicated tab |
| FlexRay | No add menu. Imported FlexRay elements do not appear on screen either (see the caution below) | No dedicated tab |
The Signal editor has four tabs: CAN, LIN, PDU, and SIGNAL. No FlexRay or Ethernet tab appears. NM-PDUs are edited on the combined PDU tab rather than on a tab of their own.
FlexRay elements disappear in the IVC editor. The IVC editor filters out FlexRay connectors, controllers, and clusters before drawing them on screen. When you save, it rebuilds the IVC model from the diagram on screen alone, so editing and saving the IVC editor in a project that contains FlexRay elements removes those elements from the file. When you work with ARXML that contains FlexRay, it is therefore safer not to save from the IVC editor.
Input and Output Formats
The formats PAIO can exchange and the entry point for each feature are as follows.
| Direction | Format | Entry point and notes |
|---|---|---|
| Import | ARXML | Right-click the project node ▸ Import. Multiple selection is possible. ECUC Module Definition and Configuration are extracted in the same flow |
| Import | DBC | Can be selected together in the same Import dialog. The encoding is always auto (it detects only a UTF-8 BOM, and falls back to ISO-8859-1) |
| Import | ECUC Configuration ARXML | Right-click the Module ▸ Configuration node ▸ Import ECUC Configuration |
| Export | ARXML (R25-11) | Right-click the project node ▸ Export. It does not ask where to save and writes straight to <project>/export/. Up to 8 kinds of file |
| Export | ARXML (ECU/Machine Extract) | On the IVC canvas, right-click an ECU node ▸ Extract ECU, or right-click an HPC node ▸ Extract Machine |
| Export | DBC | Not provided in the current version (see 13.6) |
A project export produces at most 8 kinds of file, and all of them are placed in
<project>/export/. A file whose condition is not met is not created at all, so finding fewer than
8 files in the export folder is normal.
| File | Contents | Creation condition |
|---|---|---|
<Project>_System.arxml | System, ECU Instance, Machine Design, clusters, NM, TP, Global Time, and so on | When the System model can be read (a new project always has one, so in practice always) |
<Project>_SWC.arxml | SWC, composition, Machine | When at least one SWC, composition, or Machine exists |
<Project>_Interface.arxml | Port interfaces | When an interface exists |
<Project>_IDS.arxml | IDSM (intrusion detection) security event definitions | When an IDS model exists and is valid |
<Project>_COM.arxml | IVC topology plus frames, PDUs, and signals | Always (it is written even with no communication data) |
<Project>_DataType.arxml | Data types, SW-BASE-TYPE, CompuMethod, Unit, DataConstr | Always (if there is no DataType model, it is written with the built-in primitives only) |
<Project>_EcucModuleDef.arxml | ECUC module definitions | When a definition exists in design/Module/Definition/ |
<Project>_EcucConfVal.arxml | ECUC module configuration values | When a configuration exists in design/Module/Configuration/ |
2.6 Data Model Specification
The values related to the data model are as follows.
| Item | Value |
|---|---|
| Fixed project folders (on disk) | doc, design, code, workflow, export, import (6) |
| Fixed project folders (shown in the Explorer) | doc, design, code, workflow, export (5) |
The complete set of JSON schemas: io-model, ivc, signal, system, interface, datatype,
vfb, vfb.layout, swc, service, ids, machine, ecuc-module-def,
ecuc-module-config.
The
importfolder is created but does not appear in the Explorer. When you create a project, all 6 folders are created on disk, butimportis missing from the list of fixed folders that the Explorer tree draws. You can see theimportfolder by opening the project folder in your file manager.
The design tree of a new project is prepared with System, VFB, and IVC only. The rest appear when
you first save from the matching editor or when an import creates their contents.
For details, see 04. Workspaces and Projects.
2.7 AI Provider Specification
Five AI providers are offered, and the on-screen list follows this order.
| Display name | Method | Default configuration |
|---|---|---|
| Claude [OPUS] | Runs the local CLI as a subprocess | Requires the Claude CLI to be installed and signed in |
| Claude [GLM] | HTTP API | Endpoint https://api.z.ai/api/paas/v4, model glm-5.1, API key required |
| Gemini | Runs the local CLI as a subprocess | Requires the Gemini CLI to be installed and signed in |
| Codex | Runs the local CLI as a subprocess | Requires the Codex CLI to be installed and signed in |
| Ollama | Local HTTP | http://localhost:11434, model llama3.2:3b (installed models are detected automatically) |
Despite its name, Claude [GLM] does not call Anthropic Claude; it calls Zhipu AI's GLM API. The endpoint it actually calls is
https://api.z.ai/api/paas/v4.
- For GLM you can change the endpoint and the model through the environment variables
GLM_BASE_URLandGLM_MODEL. The API key is entered inside the application and stored encrypted, and the environment variablesGLM_API_KEYandZHIPUAI_API_KEYare also accepted as an alternative. - The chat UI languages are Korean (
ko), English (en), Japanese (ja), and Chinese (zh). The default isko, and the language you select is carried into a system prompt that forces the response language. - The QuickStart workflow templates comprise 7 domains and 24 templates (body 6, powertrain 7, adas 3, infotainment 4, chassis 2, gateway 1, diagnostics 1).
2.8 Validation Specification
The main figures for the validation feature are as follows.
| Item | Value |
|---|---|
| Registered rules | 263 |
| Severity | The registered rules use two values, error (227 rules) and warning (36 rules). No rule uses info |
| Status bar badge | Shows the total number of violations, and is hidden when the total is 0. Above 99 it shows 99+. If validation itself fails, it shows ! instead of a count |
| When it runs | Runs automatically as soon as you pause after an edit or a workspace change |
| Navigating to a result | Clicking a violation row opens the editor that owns the element. In most cases the element is also selected and highlighted, but if the element cannot be found, only the editor opens |
For what each rule checks, see AUTOSAR standard constraints, referenced in the introduction to that chapter.
2.9 License and Feature Restrictions
Permissions are turned on and off according to the license state. The procedures and screens are in 03. Installation, Login and License; this section lists only the values.
| Item | Value |
|---|---|
| Plan types | none / trial / pro / enterprise |
| License states | trial / active / expired / readonly |
| Permissions in the active state | Read, write, create, delete, export, and import are all allowed |
| Permissions in the expired state | Read and import only (write, create, delete, and export are blocked) |
| Default state | Locked (read-only) until sign-in and license validation complete |
| Export | Requires online validation (denied when offline, expired, or tampered with) |
| Authentication backend | PARS (https://pars.popcornsar.com/pars-ext) |
The actual message strings shown on denial are as follows.
| Situation | Message |
|---|---|
| An editing operation in the expired state | PLAN_EXPIRED: <operation> is not allowed |
| Export when the installation integrity check has failed | INTEGRITY_EXPORT_DENIED: Installation integrity check failed |
| Export when the server cannot be reached | OFFLINE_EXPORT_DENIED: A server connection is required |
| Export when the server judges the license invalid | PLAN_EXPIRED: Export is not permitted on this plan |
Import is always allowed, even in the expired state. The policy is to let you read and bring in existing data even with an expired license.
The license period and expiry time follow the license information issued by the server (PARS).
2.10 Security Specification
The security-related settings are as follows.
| Item | Value |
|---|---|
| Context isolation | contextIsolation: true, nodeIntegration: false, sandbox: false, webviewTag: true |
| CSP | default-src 'self' / script-src 'self' / style-src 'self' 'unsafe-inline' / img-src 'self' data: https: / font-src 'self' data: / connect-src 'self' plus three Google OAuth domains and www.plantuml.com / frame-src 'none' / object-src 'none' / base-uri 'self' |
| Navigation | Development mode allows localhost only, release mode file: only. The document viewer <webview> allows file: only. External links open in the system browser |
| Workspace isolation | A separate userData per workspace plus a per-workspace single-instance lock |
| Token and license cache | Encrypted with Electron safeStorage |
| Integrity (Windows) | The Electron asar integrity fuse plus a PAIO.exe Authenticode self-check at startup |
The Google domains allowed in connect-src are three: accounts.google.com,
oauth2.googleapis.com, and www.googleapis.com.
Integrity Check Results
On an installation whose signature is not valid (tampered with or re-signed), the editing features are locked read-only for the session. The application does not exit. The behavior for each verdict, what to do about it, and the location of the diagnostic file are in 20. Troubleshooting and FAQ, section 20.1.
For what to do when the lock appears after installation, see section 3.1.5 of 03. Installation, Login and License.
2.11 Update Notification Specification
The specification for update notifications is as follows.
| Item | Value |
|---|---|
| Method | Notify-only — it checks whether a new version exists and only tells you. There is no automatic download and no automatic installation |
| Feed | https://pars.popcornsar.com/pars-ext/updates/paio/latest.yml |
| Interval | Once right after sign-in, then a background check every 6 hours (the repeating check is disabled in development mode) |
| Manual check | Help ▸ Check for Updates |
| Status bar indicator | Appears only when a new version exists. It is hidden the rest of the time |
| Download path | The Download button in the toast opens the download page (https://autosar.io/support) |
- Version comparison looks only at the three numbers of
major.minor.patch. Pre-release tags are ignored. - If the check fails, the toast body takes the form
Update check failed: <reason>. The reason strings and their meanings are collected in 20.12. - For a description of the behavior — the indicator, the toast, and the manual check — see 3.5.
2.12 Known Limitations
This section groups the limitations you should know about in the current version into three categories: the fixed limits, the items that do not work or are not provided, and the normal behavior that is easy to misread.
Limits and Constraints
The fixed limits and scope constraints are as follows.
| Constraint | Details |
|---|---|
| Number of editor tabs | 20 at most. Once 20 are open, opening a new file does nothing and gives no message (only a console warning is left). You have to close a tab before you can open another |
| ECUC generation | It assumes one CAN controller (only the first CAN controller is reflected). Multi-CAN configurations are not supported |
| ECUC generation modules | 5 modules: Can, CanIf, Com, EcuC, PduR |
| ECUC generation prerequisite | If the target ECU has no CAN connector, both the Generate ECUC button and the module check boxes are disabled. The panel then shows No CAN connector configured. Please add a CAN connector first to enable ECUC generation. |
| Editor split | Creating or removing a group redraws the whole layout, so screen state such as scroll position and focus is not guaranteed |
Items That Do Not Work or Are Not Provided
The following items are visible on screen or might be expected, but do not work or are not provided in the current version.
| Item | Actual behavior |
|---|---|
| Export to DBC (project context menu) | Not provided in the current version. CAN information is delivered through <project>_COM.arxml from the project Export (13.6) |
| DBC import encoding selection | There is no setting for choosing the encoding; detection is always automatic. A UTF-8 file without a BOM is read as ISO-8859-1 (13.2.8) |
| Signal editor FlexRay / Ethernet tabs | These two tabs do not appear (7.2) |
| FlexRay in IVC Add Connector / Add Controller | The menu items themselves do not exist. Imported FlexRay elements do not appear on screen either (see the caution in 2.5) |
The project import folder | It is created on disk but is not shown in the Explorer tree (see section 2.6) |
Double-clicking the design ▸ Module node | An empty tab opens with a Coming Soon notice only. You have to open the Definition or Configuration node beneath it |
Other Behavior to Know About
The following is normal behavior that is easy to mistake for a problem.
| Behavior | Reason |
|---|---|
| ARXML export does not ask where to save | The project structure is fixed, so it always writes to <project>/export/ |
| Starting an import saves unsaved edits first | The import rewrites the model and open editors read it again from disk, so unsaved edits would be lost if they were not written out beforehand |
| Nodes from an import are laid out in rows on a grid | ARXML carries no coordinates, so the importer places them automatically. Once you move a node, its coordinates are kept across re-imports |
| Reading an exported ARXML elsewhere does not restore the on-screen layout | Diagram coordinates live only in the IVC model inside the project and in *.vfb.layout; they are not written to ARXML. For details, see section 1.3 of 01. Product Overview |
| The 11 built-in primitives are not in the DataType model | The primitives are built-in definitions that exist in memory only, and not storing them in a file is normal. For details, see 10. DataType Editor |
| A file changed from outside is not reloaded while you are editing it | This avoids overwriting unsaved edits. A warning appears saying the file was not reloaded, and the model on screen is kept. Once you save or revert, the change is picked up as usual |