Open the black box.
Decrypt, diff, validate, and cross-reference 60+ PLC and HMI platforms — from your terminal or the cloud.
60+ providers across 10 PLC and 24 HMI platforms — all normalized into one universal model.
Reads encrypted project files
Decrypts and parses proprietary formats across 60+ providers — Schneider .zdat/.project, Rockwell .ACD/.L5X, Siemens .ap19, Beckhoff .tsproj, Ignition .gwbk, and 50+ CODESYS OEM variants. Content-based identification, not just file extensions.
Normalizes to a universal model
Every vendor's proprietary format is converted into a common data model — POUs, variables, hardware, panels, alarms, recipes. Diff a Schneider project against a Siemens project using the same rules and the same output format.
Validates across system boundaries
Cross-references HMI and PLC projects with 6 built-in rules — phantom bindings, orphaned exports, type mismatches, direction conflicts, address mismatches. The bugs that live in the gap between vendor tools.
Stop merging encrypted binaries blind. Extract, diff, and lint PLC projects across Schneider, Rockwell, Siemens, and more — with git integration, call tree analysis, and SARIF output for your IDE.
Manage dozens of multi-vendor projects without opening each vendor's GUI. Validate deliverables before they ship to site — or use Glyphsix Cloud for team-wide version history, automated diffing, and audit reports.
Generate audit-ready change reports and cross-validation results for projects that were previously opaque.
No licenses to approve. No vendor portals. Python 3.10+ is all you need.
Install
One command. Works anywhere Python runs. No vendor software required.
Point
Aim at any project file — .zdat, .L5X, .ap19, .tsproj, .gwbk, .ACD, and 50+ more formats. Auto-detected, no flags needed.
See everything
POUs, variables, hardware, I/O maps, panels, alarms, call trees, dependency graphs — extracted and structured across vendors.
Extract, rebuild, lint, graph, and deploy — all from the terminal.
Decrypt encrypted PLC projects to clean .st files. Edit in your favorite editor. Rebuild back into the vendor binary. The only round-trip workflow for CODESYS projects.
Extract device trees, I/O address maps, conflict detection, and network topology. Suggest the next available address. Export to CSV for documentation.
Configure git to diff .project files natively. Run git diff on encrypted binaries and see semantic changes — added POUs, modified variables, renamed types.
Visualize POU call hierarchies with cycle detection. Export to GraphViz or Mermaid. Verify safety POU isolation — safety code shouldn't call non-safety code.
Build a dependency graph spanning HMI and PLC. Before removing a variable, see every panel, alarm, and POU that depends on it — across vendor boundaries.
Render HMI panels to HTML for visual review. Or start a live simulation server with real-time variables via WebSocket — optionally connected to a real PLC via OPC UA.
The CLI is the local-first engine. Glyphsix Cloud adds version history, team collaboration, automated diffing, fleet management, and webhook-driven CI/CD on top of it.
Drag-and-drop any project file. Get a full structural breakdown with real-time progress streaming — panels, variables, hardware, POUs, alarms.
Every upload creates an immutable version. Auto-diff on upload compares against the previous version. Manual diffs between any two versions.
Role-based access control (owner, admin, editor, viewer). Invite your team, organize projects in folders, track who uploaded what and when.
Generate audit-ready Excel and PDF reports. Push events to Slack, CI/CD pipelines, or custom integrations via HMAC-signed webhooks.
00000000 54 57 4F 46 49 53 48 00 01 00 00 00 A3 F8 2D 91 |TWOFISH.....£ø-.| 00000010 7E C4 B2 38 D1 0A 66 F5 89 AB 4C 22 0E 73 D8 A1 |~IJ8Ñ.fõ.«L".sØ¡| 00000020 3B 94 E7 50 C8 1F A0 6D F4 82 55 B9 2C 68 D3 07 |;.çPÈ. mô.U¹,hÓ.| 00000030 A6 4B 19 E2 5D 90 F1 C3 74 0B 63 87 38 DE A5 4F |¦K.â].ñÃt.c.8Þ¥O| 00000040 1C 7A B6 E8 43 9D 02 F7 65 D4 80 2E A9 51 C6 3A |.z¶èC..÷eÔ..©QÆ:| 00000050 8C 14 FB 76 28 E0 97 5C B3 6F 40 D9 15 82 AC E3 |..ûv(à.\³o@Ù..¬ã| 00000060 61 C9 34 7D F6 A2 0F 58 9E 4A D7 B1 26 70 8D C0 |aÉ4}ö¢.X.J×±&p.À| 00000070 53 1A E6 42 BD 09 F0 7C 84 6E 3D A8 C5 47 91 D6 |S.æB½.ð|.n=¨ÅG.Ö| 00000080 2A FE B8 1D 63 E4 AA 57 30 95 DB 5E 79 C2 06 EF |*.¸.cäªW0.Û^yÂ.ï| 00000090 A4 6C 11 88 F3 BE 48 D0 75 3C E1 9B 4D 8B C7 25 |¤l..ó¾HÐu<á.M.Ç%| 000000A0 FA B4 69 07 5F A1 E9 3A CD 8E 56 F8 12 C8 DA 46 |ú´i._¡é:Í.Vø.ÈÚF| 000000B0 A7 2F 93 BB 60 D5 1E 82 F2 4E 76 C1 39 E5 AD 50 |§/.»`Õ..òNvÁ9åP| 000000C0 8A 17 EB 64 B0 03 FC 7E D2 45 9F A3 6B C4 31 ED |..ëd°.ü~ÒE.£kÄ1í|
▶ Project: REACTOR7_v4 Format: Vijeo Designer 6.2 SP11 Panels: 14 │ Variables: 847 │ Alarms: 62 ▶ Panel: MainOverview Resolution: 1024×768 Objects: 38 Bindings: NUMERIC Zone1_PV ← %MW100 ✓ valid NUMERIC Zone2_PV ← %MW102 ✓ valid NUMERIC Zone3_PV ← %MW104 ✓ valid BAR Pressure ← %MW200 ✓ valid SWITCH EmergStop ← %M50.0 ✓ valid ▶ Cross-Validation ✓ 841/847 bindings resolved ⚠ 6 warnings: Zone4_SP references %MW106 — not declared in PLC Recipe_Idx references %MW300 — type mismatch (INT/REAL)
Install Glyphsix and run your first diff in under five minutes.