Skip to main content

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.

ItemValue
Product namePAIO
Version0.5.0
Executable name (Windows)PAIO
Signer (Windows)POPCORNSAR Co.,Ltd.
LicenseCommercial (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.

OSArchitectureDistribution formatArtifact name
Windowsx64NSIS installer executable, ZIPPAIO-win-x64.exe, PAIO-win-x64.zip
macOSx64, arm64 (Apple Silicon)DMG, ZIPPAIO-mac-x64.dmg, PAIO-mac-arm64.dmg, and the matching .zip files
Linuxx64DEB, tar.gzPAIO-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 .deb installs icons under /usr/share/icons/hicolor/ and creates a .desktop file.
  • The Linux .tar.gz has 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 .deb or is running in development mode.

2.3 Runtime Environment​

The values related to the runtime environment are as follows.

ItemValue
Default window size1200 x 800
Minimum window size800 x 600
Window frameFrameless (custom title bar). hiddenInset on macOS
When the window appearsAfter the screen is ready (hidden at first)
Editor tabs open at once20 at most
Per-workspace isolationuserData is separated into workspace-<first 8 characters of md5(cwd)>, plus a per-workspace single-instance lock
Storage of account, license, and machine IDA machine-wide path that is independent of the workspace
Screen before sign-inThe 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.

AxisValueDescription
Output schema releaseFixed 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 XSDR25-11 (AUTOSAR_00054.xsd), R20-11 (AUTOSAR_00049.xsd)schemas/autosar/VERSIONS.json, default R25-11
AUTOSAR feature version axis4.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:schemaLocation and records it.

Supported Protocols​

The scope of support per protocol is as follows.

ProtocolIVC topologySignal editor
CAN / CAN FDConnectors, controllers, and clusters can all be addedEdit frames on the CAN tab
LINConnectors, controllers (LIN Master / LIN Slave), and clusters can be addedEdit frames on the LIN tab
EthernetConnectors, controllers, clusters, and switches (Coupling Element) can be addedNo dedicated tab
FlexRayNo 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.

DirectionFormatEntry point and notes
ImportARXMLRight-click the project node ▸ Import. Multiple selection is possible. ECUC Module Definition and Configuration are extracted in the same flow
ImportDBCCan 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)
ImportECUC Configuration ARXMLRight-click the Module ▸ Configuration node ▸ Import ECUC Configuration
ExportARXML (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
ExportARXML (ECU/Machine Extract)On the IVC canvas, right-click an ECU node ▸ Extract ECU, or right-click an HPC node ▸ Extract Machine
ExportDBCNot 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.

FileContentsCreation condition
<Project>_System.arxmlSystem, ECU Instance, Machine Design, clusters, NM, TP, Global Time, and so onWhen the System model can be read (a new project always has one, so in practice always)
<Project>_SWC.arxmlSWC, composition, MachineWhen at least one SWC, composition, or Machine exists
<Project>_Interface.arxmlPort interfacesWhen an interface exists
<Project>_IDS.arxmlIDSM (intrusion detection) security event definitionsWhen an IDS model exists and is valid
<Project>_COM.arxmlIVC topology plus frames, PDUs, and signalsAlways (it is written even with no communication data)
<Project>_DataType.arxmlData types, SW-BASE-TYPE, CompuMethod, Unit, DataConstrAlways (if there is no DataType model, it is written with the built-in primitives only)
<Project>_EcucModuleDef.arxmlECUC module definitionsWhen a definition exists in design/Module/Definition/
<Project>_EcucConfVal.arxmlECUC module configuration valuesWhen a configuration exists in design/Module/Configuration/

2.6 Data Model Specification​

The values related to the data model are as follows.

ItemValue
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 import folder is created but does not appear in the Explorer. When you create a project, all 6 folders are created on disk, but import is missing from the list of fixed folders that the Explorer tree draws. You can see the import folder 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 nameMethodDefault configuration
Claude [OPUS]Runs the local CLI as a subprocessRequires the Claude CLI to be installed and signed in
Claude [GLM]HTTP APIEndpoint https://api.z.ai/api/paas/v4, model glm-5.1, API key required
GeminiRuns the local CLI as a subprocessRequires the Gemini CLI to be installed and signed in
CodexRuns the local CLI as a subprocessRequires the Codex CLI to be installed and signed in
OllamaLocal HTTPhttp://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_URL and GLM_MODEL. The API key is entered inside the application and stored encrypted, and the environment variables GLM_API_KEY and ZHIPUAI_API_KEY are also accepted as an alternative.
  • The chat UI languages are Korean (ko), English (en), Japanese (ja), and Chinese (zh). The default is ko, 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.

ItemValue
Registered rules263
SeverityThe registered rules use two values, error (227 rules) and warning (36 rules). No rule uses info
Status bar badgeShows 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 runsRuns automatically as soon as you pause after an edit or a workspace change
Navigating to a resultClicking 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.

ItemValue
Plan typesnone / trial / pro / enterprise
License statestrial / active / expired / readonly
Permissions in the active stateRead, write, create, delete, export, and import are all allowed
Permissions in the expired stateRead and import only (write, create, delete, and export are blocked)
Default stateLocked (read-only) until sign-in and license validation complete
ExportRequires online validation (denied when offline, expired, or tampered with)
Authentication backendPARS (https://pars.popcornsar.com/pars-ext)

The actual message strings shown on denial are as follows.

SituationMessage
An editing operation in the expired statePLAN_EXPIRED: <operation> is not allowed
Export when the installation integrity check has failedINTEGRITY_EXPORT_DENIED: Installation integrity check failed
Export when the server cannot be reachedOFFLINE_EXPORT_DENIED: A server connection is required
Export when the server judges the license invalidPLAN_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.

ItemValue
Context isolationcontextIsolation: true, nodeIntegration: false, sandbox: false, webviewTag: true
CSPdefault-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'
NavigationDevelopment mode allows localhost only, release mode file: only. The document viewer <webview> allows file: only. External links open in the system browser
Workspace isolationA separate userData per workspace plus a per-workspace single-instance lock
Token and license cacheEncrypted 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.

ItemValue
MethodNotify-only — it checks whether a new version exists and only tells you. There is no automatic download and no automatic installation
Feedhttps://pars.popcornsar.com/pars-ext/updates/paio/latest.yml
IntervalOnce right after sign-in, then a background check every 6 hours (the repeating check is disabled in development mode)
Manual checkHelp ▸ Check for Updates
Status bar indicatorAppears only when a new version exists. It is hidden the rest of the time
Download pathThe 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.

ConstraintDetails
Number of editor tabs20 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 generationIt assumes one CAN controller (only the first CAN controller is reflected). Multi-CAN configurations are not supported
ECUC generation modules5 modules: Can, CanIf, Com, EcuC, PduR
ECUC generation prerequisiteIf 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 splitCreating 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.

ItemActual 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 selectionThere 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 tabsThese two tabs do not appear (7.2)
FlexRay in IVC Add Connector / Add ControllerThe menu items themselves do not exist. Imported FlexRay elements do not appear on screen either (see the caution in 2.5)
The project import folderIt is created on disk but is not shown in the Explorer tree (see section 2.6)
Double-clicking the design ▸ Module nodeAn 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.

BehaviorReason
ARXML export does not ask where to saveThe project structure is fixed, so it always writes to <project>/export/
Starting an import saves unsaved edits firstThe 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 gridARXML 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 layoutDiagram 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 modelThe 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 itThis 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