ANY//DOCS
DEBack to site

Feature Overview

Product Description

AnyAutomation Studio is a powerful editor for Siemens TIA Portal developers that revolutionizes the export, import, and management of PLC program blocks. With a familiar VS Code-style workbench and advanced features like protection profiles, OPC UA / S7 online access, and AI integration, it significantly increases productivity and reduces errors in project management.


Main Features

Welcome Page

  • Welcome page — Interactive introduction with Get Started walkthrough and quick-action shortcuts, opened in the editor area.
  • Get Started walkthrough - Four steps (Connect, Project Explorer basics, Export, Choose next area) that check themselves off as you use the app
  • Eight quick-action shortcuts - Connect, New TIA Project, Open Project, Browse Export Folder, Clone Git, New SCL File, Unit Testing, Configure AI Assistant
  • Feature cards - Single-click jump to AI Chat, Git, Unit Testing, OPC UA, and the What's New changelog
  • Recent projects - Up to five newest entries, updated after every successful connection (file-open or attach); click to reconnect straight to a project, missing files are hidden automatically
  • Reopen anytime - Help → Welcome opens the page regardless of the startup setting

New Project Wizard

  • One-click entry - Welcome page → "New TIA Project…" opens a five-step wizard; no prior connection required, the matching TIA Portal instance is started on Finish
  • Project info - TIA Portal version picker (V15…V21, pre-filled from current connection if any), project name, target directory (Browse picker), optional author + comment
  • CPU selection - Search the hardware catalog, pick a CPU, name the device (PLC_1 default); F-CPUs are listed but disabled
  • Optional modules - Add I/O modules, communication processors and other rack-pluggable items with name + slot; sibling-name uniqueness enforced; module list cleared when the CPU is changed
  • Optional Ethernet network - Subnet name + interface path + IPv4 address; PROFIBUS / MPI / AS-i are not supported
  • Atomic execution - Review summary, click Create — the entire scaffold runs as one transaction in TIA Portal, rolls back on any failure, and the new project opens automatically on success

Command Palette & Quick Open

  • Command Palette (Ctrl+Shift+P) — Run any command by name from a single fuzzy-searchable picker
  • Quick Open (Ctrl+P) — Jump to any file, then narrow with the standard prefixes: > Commands · @ Symbols in the current editor · # Workspace symbols · : Go to line
  • tia project picker — In Quick Open, type tia to fuzzy-search the connected TIA project's code blocks, data blocks, UDTs, and tag tables; the same picker is reachable from the Go to Block or Item command and a Project Explorer view-title button
  • Single keystroke or click executes — Up/Down keys, Enter, and mouse click all run a result; Esc closes the picker
  • On accept — Selecting a tia result opens the block's source in the editor and reveals the matching node in the Project Explorer tree
  • Recent files — Quick Open lists your recently opened files first, so the right file is one keystroke away

Keyboard Shortcuts

  • Keyboard Shortcuts editor — Press Ctrl+K, Ctrl+S (or File → Preferences → Keyboard Shortcuts) to open a searchable, fully rebindable list of every command and its keybinding
  • Per-command rebind — Any binding can be changed, removed, or given a custom keybinding, with a when-clause that scopes it to a view or editor context
  • Activity Bar shortcuts — Open a feature's activity-bar view container with its keybinding (for example PLC Online via Ctrl+K Ctrl+G)
  • PLC Online keysCtrl+Enter Connect, Ctrl+D Disconnect, F5 Refresh, Ctrl+W Write the selected watch-table row when the PLC Online pane or its sidebar tree has focus
  • Find ReferencesCtrl+Shift+F runs Find References on the block selected in the Project Explorer

Import & Export

  • Export Selected - Export only the ticked blocks, data types, tag tables, technology objects, or software-unit items. Existing files with the same name are overwritten; other files in the export folder are kept
  • Export All - Full project export; the PLC export folder is cleared first, then all blocks, data types, tag tables, technology objects, and software units are written fresh
  • XML & SCL Support - Full support for Simatic ML and SCL files
  • S7DCL Export (V20+) - Additional text-based export format (.s7dcl) for better version control
  • Folder Structure Preservation - TIA Portal folder structure is maintained
  • Automatic Compilation - Automatically compiles and saves after import
  • Configurable Folder Names - Customize export folder names (Source, Blocks, Tags, etc.)
  • Optional Source Folder - Enable/disable the Source folder wrapper in exports
  • Import Selected - Targeted import; only the ticked files are written. Existing blocks with the same name are overwritten, the rest of the PLC is left untouched
  • Import All - Full project re-import; all existing blocks, data types and tag tables are cleared first, then everything in the Working Directory is imported. Blocks marked in the Protection Profile are preserved

HMI Export/Import

  • Screen Export - Export HMI screens as XML
  • Screen Template Export - Export reusable screen templates
  • HMI Tag Tables - Export/import HMI tag tables
  • VB Scripts - Export HMI VB scripts
  • Connections - Export HMI connection configurations
  • Text Lists & Graphic Lists - Full support for HMI lists

Hardware View

  • Device List - Complete overview of all devices (PLCs, HMIs, Drives, Switches)
  • PROFINET Names - View and edit PROFINET device names directly
  • IP Addresses - Display IP address configuration for all devices
  • Firmware Versions - Show firmware version for each device
  • Article Numbers - Display Siemens article/order numbers
  • I/O Mapping - Show input/output address ranges
  • Per-Card I/O Editing - Selecting a station shows its cards in a second grid below; edit the input or output start address of any card and Save Changes writes them back to TIA Portal
  • CSV Export - Export complete hardware list to CSV for documentation
  • WinCC Unified Support - Full support for WinCC Unified HMI panels

Hardware Export

  • Device Configuration - Export hardware configuration as XML
  • Module Configuration - Export individual module settings
  • Network Configuration - Export network/communication settings

Watch/Force Tables

  • Table Export - Export Watch Tables and Force Tables
  • Variable Lists - Export monitored variable configurations
  • Debug Support - Preserve debugging setups across projects

Multi-User Local Sessions

  • Attach to Multi-User local session - Works with .als17.als21 files the same way as with normal .apXX projects
  • Save - Persist changes to the local session storage without committing
  • Commit & Close - Send changes to the Multi-User server with a mandatory comment; revision number returned
  • Out-of-date detection - Banner warning when the local session is behind the server head, commit disabled until you pull

Project Library Management

  • Create Master Copy - Copy blocks to Project Library for reuse
  • Instantiate from Library - Create blocks from Master Copies
  • Export Type Versions - Export committed Library Type versions as XML
  • Folder Organization - Create folders in library for better structure
  • Rename Items - Rename Master Copies, Types, and folders
  • Delete Items - Remove library items with confirmation
  • Clean Up Library - Remove unused types and versions automatically

Diff Editor (Files & Source Control)

The built-in diff editor compares any two files side by side or unified, with full syntax highlighting (SCL, AWL, XML, and 60+ other languages recognised by extension). It is used throughout Source Control to review changes hunk by hunk.

  • Side-by-side or inline - Switch layout from the editor toolbar
  • Change navigation - Step between changes with the editor's next/previous-change actions
  • Diff tweaks - Ignore trailing whitespace, toggle word-wrap, render whitespace
  • Source Control diffs - Click any changed file in the Source Control view to open its working-tree-vs-HEAD diff; stage or revert individual hunks from the diff gutter

Planned — TIA block compare. A dedicated side-by-side comparison of TIA Portal blocks (project vs. last export) with selective re-import and section-by-section merge is planned; today the diff editor compares exported files and any text on disk.

Code Editor

The built-in code editor provides professional editing features for SCL and other file types.

  • Split View — Split editors horizontally or vertically, drag tabs between groups, dock and pin panels (file tree, markdown preview)
  • Drag & drop from Project Explorer — Drag one or several blocks or offline source files onto the editor area; each opens as its own editor tab
  • Offline Interface edit — Drag an SCL, STL, UDT or DB source file or a SimaticML XML export (FB / FC / OB / GlobalDB / InstanceDB / ArrayDB / UDT / PlcTagTable) onto the editor area, or right-click the file in the Explorer and choose Open in Editor — the Interface tab appears for every entry point. Rename, retype, reorder members and save back to the file with no TIA Portal connection required
  • Online Interface edit (TIA-connected) — Edit blocks of a connected TIA Portal project from the Interface tab; renames, removals and data-type changes prompt a cross-reference impact preview before upload, and a compile pass runs automatically after the upload with a click-to-jump diagnostics panel. The Enter-edit-mode toggle is disabled with a tooltip on know-how-protected, read-only or unreadable blocks
  • Tag-table edit roundtrip — PLC tag tables share the same Edit / Discard / Save / Save As / Upload toolbar as block interfaces. Rename tags, retype data types, edit logical addresses, toggle Retain and HMI flags, and edit comments inline. Toggling Accessible from HMI on a tag carries Writable and Visible with it (off → both off, on → both on); the individual flags can still be flipped without touching the others. Upload-to-TIA re-imports the edited tag table into the connected project
  • Syntax Highlighting — SCL, C#, XML, JSON, Python, and 60+ other languages
  • Code Folding — Collapse/expand code regions, IF/FOR blocks, and VAR sections
  • Auto-Completion — Type 2+ characters to see SCL keywords, data types, and functions. In the SCL editor, suggestions also include the block and data-type names from the currently open TIA Portal project
  • Search — Press Ctrl+F for find and replace with regex support
  • Code Snippets — Type if, for, while, case, fb, fc, or region and press Tab to insert templates
  • Current Line Highlight — Visual indicator for the current cursor line
  • Theme Support — Editor colors automatically adapt when switching between Dark, Light, and Midnight themes
  • Inline Chat (Ctrl+I) — Press Ctrl+I to open an AI chat directly in the code editor. Optionally select code first, then type your question or request — the AI responds and can propose changes inline. Accept with Tab, reject with Escape
  • Save active editor (Ctrl+S) — Saves the focused editor; for files this writes to disk, for TIA Portal blocks a confirmation dialog appears before the change is uploaded. Ctrl+Shift+S saves the whole TIA Portal project
  • Unsaved-change confirmation — Closing a tab or the application with unsaved changes prompts to save all, discard all, or cancel; disconnecting from TIA Portal closes TIA-sourced tabs with the same prompt
  • Block Details - Shows metadata like number, language, author
  • Inline graphical block view - LAD blocks open in a graphical pane that renders each network in the editor area; a mixed-language block shows each network in its own language (LAD as ladder rungs, SCL networks as code, others as a placeholder) with a language badge. No external viewer needed.
  • Language support beyond SCL — SCL ships with built-in syntax highlighting and editing. Support for other file types (C#, Python, and the like) is added by installing the matching language extension from the marketplace, exactly as in VS Code; the editor then provides that language's IntelliSense, go-to-definition, diagnostics, and refactorings like any VS Code editor.
  • Right-click context menu — Registry-driven menu with 14 actions across 5 groups: AI assistance (Inline Chat Ctrl+I, Markdown Preview, Add File to Chat, Explain, Review), Edit (Change All Occurrences Ctrl+F2, Rename Symbol F2 — LSP-backed cross-file rename, Format Document Shift+Alt+F, Format Selection Ctrl+K Ctrl+F — LSP-backed with SCL fallback), Navigation (Go to Definition F12, Find References — LSP-backed entries appear only when the open file's language server advertises the capability), Git (Show File History Alt+H — switches the activity bar to Source Control and reveals the file's commit history, listing every revision that touched it; files outside a repository show a brief status hint), Clipboard (Cut/Copy/Paste/Select All).
  • Visual polish — Bracket-pair colour cycle, indent guides with caret-scope highlight, selection-occurrence highlight (whole-word identifiers), auto-close brackets and quotes with selection-surround, font ligatures (Cascadia Code → Consolas fallback with notification). Each toggle is in Settings → Editor → Visual.
  • Editor — Configurable folder exclusions keep change detection focused on files you actually edit.
  • Editor — Invalid exclusion patterns show a warning listing the rejected entries; your text stays in the input box for correction.
  • Quick Navigation - Search in project tree

Keyboard Shortcuts

Shortcut Action
Ctrl+S Save the active editor (file to disk; for TIA blocks confirms before upload)
Ctrl+Shift+S Save the TIA Portal project
Ctrl+F Find and Replace
Ctrl+I Inline AI Chat (SCL Editor only)
Tab Insert snippet (when trigger word is typed)
Tab Accept AI edit
Escape Reject AI edit

Protection System (Protected Items)

  • Block Protection - Protect important blocks from accidental overwriting
  • Export Protection - Optionally exclude protected blocks from export while preserving folder structure
  • Profiles - Save and load protection configurations
  • Visual Marking - Know-how-protected blocks carry a read-only orange protection badge in the Project Explorer; the Protection column marks items with an red lock for import/export protection and bulk protect/unprotect (it does not toggle know-how protection on its own)
  • Hierarchical Protection - Protect entire folders or individual blocks

Password Vault

  • Secure Storage - AES-256-GCM encrypted vault for TIA Portal know-how protection passwords
  • Master Password - Single master password protects all vault entries (PBKDF2 key derivation)
  • Block Assignment - Assign vault passwords to blocks or folders via context menu or vault toggle checkboxes
  • Bulk Protect/Unprotect - Apply or remove know-how protection on all assigned blocks at once
  • Safety (F-) Blocks - Bulk Protect attempts F-blocks too, but Siemens refuses know-how protection for an F-block whose F-program is not fully compiled, so such blocks land under "failed" — compile in TIA Portal and re-run (see Password Vault "Protecting Safety (F-) Blocks")
  • Crash Recovery - Planned: a recovery journal that flags blocks left unprotected by an interrupted session for re-protection
  • CSV Export - Export all vault entries to CSV for backup (includes plaintext passwords, available when vault is unlocked)
  • Localized - Available in English, German, French, and Italian

Find References (Where-Used)

  • Per-block where-used - Run Find References on a block to see exactly where it is used across the open TIA project — its callers, the blocks it calls, and the data it reads and writes
  • Two ways to start - Right-click a block in the Project Explorer and choose Find References, or press Ctrl+Shift+F with a block selected in the tree
  • Results view - The TIA References view opens in the side bar grouped into Used by · callers, Uses · callees, Reads, and Writes; each row carries an access badge (R / W / RW / Call) and the reference location
  • Click to Navigate - Click or press Enter on a result to open the target as a source document; for a caller, the call line is revealed
  • Refresh / Clear - View-title actions re-run the where-used query for the last block or clear the results
  • Non-openable operands - Raw I/O or bracketed array operands that are not openable blocks show a "cannot be opened directly" notice rather than failing silently

Find Unused Blocks

  • Dead Code Detection - Finds unused blocks
  • Call-Graph Analysis - Based on actual calls, not just references
  • Safety Block Support - Also supports F-blocks (FFB, FFC, FDB, FOB)
  • Configurable Analysis Scope - Toggle inclusion of Blocks (FC/FB), Data Blocks (DB), UDTs, and Tags individually
  • Exclusion Patterns - Define wildcard patterns (e.g. FB_Test*;DB_Temp*) to exclude items from results
  • Reuse Exports - Optionally reuse previous XML exports for faster repeated analysis
  • Persistent Settings - All analysis preferences saved via gear icon in toolbar
  • Export Function - Export results as text file
  • Copy to Clipboard - Copy all results for documentation
  • Delete Function - Remove unused blocks directly

AI Integration (MCP)

  • Built-in TIA-aware chat - The bundled AI assistant reads and analyzes the open TIA project through a set of TIA tools — browse the project tree, read block source, analyze blocks, and generate or import SCL / Data Blocks / UDTs / tag tables
  • Add external MCP servers - AnyAutomation Studio is a Model Context Protocol client: add any local (Stdio) or remote (HTTP / OAuth 2.1) MCP server in the chat and its tools become available to the assistant alongside the built-in TIA tools (see AI Integration)
  • Project Context - The assistant has access to your project structure
  • Code Generation - Generate SCL source code for blocks
  • DB Generation - Create Data Blocks with Simatic ML templates
  • UDT Generation - Create User-Defined Types
  • Tag Table Generation - Create Tag Tables
  • Auto Import - Generated code can be imported into TIA Portal after confirmation
  • Block Analysis - Read and analyze existing blocks

AI Chat

  • Agents - Choose the active TIA agent in the chat agent picker; each agent carries its own system prompt and a curated tool list, and is managed in the native Agent Customizations editor
  • AI Provider sign-in - A $(sparkle) AI Provider trigger in the chat input opens a sign-in picker for the shipped OAuth vendors (Anthropic Claude Pro/Max, OpenAI ChatGPT/Codex, Google Gemini) plus bring-your-own-key vendors; one row per provider with a signed-in / not-signed-in state
  • Model picker - The per-message model picker in the chat input selects the provider and model; "Manage Models…" is reachable from the picker, and the model name is reported, not rebranded
  • Tool Approvals - A Tool Approvals section in the native Agent Customizations editor sets a per-tool level — Ask Every Time / Allow in This Session / Always Allow / Always Deny — for each TIA tool
  • Context Folders - Register folders the AI can browse using file read and search tools
  • Instruction Files - Inject Markdown files into the AI's system prompt automatically at session start
  • Git Integration - AI is aware of your git repository, branch, and changes; can view status, stage files, commit, push, and pull (mutating operations require user approval)
  • Commit Templates - Define commit message templates; the AI follows the active template when generating commits
  • Skills - Place .md files in %LocalAppData%\AnyAutomation Studio\skills` to create reusable prompt commands accessible via the /` command palette in the chat input; no frontmatter required (just plain text works), optional YAML frontmatter for name, description, and icon
  • Agent Configs - Place .json files in %LocalAppData%\AnyAutomation Studio\agents\ to define AI personas with custom system prompts and tool access; three built-in agents included (General Assistant, Git Assistant, SCL Expert)
  • File Attachments - Drag and drop images (.png, .jpg, .bmp, .gif, .webp) or text files (.cs, .xml, .json, .txt, .md, .yaml, .csv, .log, .scl, .cfg) into the chat; images are resized and sent as multimodal content
  • Clipboard Paste - Press Ctrl+V to paste a screenshot from the clipboard directly into the chat; also available via the attach menu
  • Chat Sessions - Conversations are saved automatically; create new chats, switch between sessions, and resume previous conversations from the history panel
  • Session Archive - Archive old sessions to keep the session list clean; restore or permanently delete archived sessions
  • Agent Memory - Each agent has its own persistent memory store across sessions with scope isolation (Local, Project, or User); the agent automatically saves important facts and injects relevant memories into context at session start; supports memory_store, memory_search, memory_list, memory_update, and memory_delete tools; configurable embedding provider (OpenAI, Google, Ollama, LM Studio) for semantic search, with keyword fallback; Memory Settings panel to view, delete, export (JSON), import, and clean up old memories; Memory Snapshots allow pre-seeding agents with team-shared knowledge via JSON files
  • Sub-Agent Steering - Agent can dispatch sub-tasks to independent sub-agents (run_subagent); up to 5 concurrent sub-agents; manage running sub-agents via manage_subagents list/kill/steer; non-blocking mode allows the main agent to continue working while sub-tasks run in the background
  • Hooks - Configurable event hooks that run before/after AI tool calls; add custom hooks in AI Chat Settings as shell commands or HTTP callbacks; built-in hooks protect safety blocks and log TIA operations; hooks can modify tool input, block execution, or add context to results; configurable timeout per hook (default 60s)
  • Inline Tool Approvals - Approve or deny each AI tool call directly inside the tool-call message in the chat; the approval buttons are part of the scrollable content, so you can continue reading messages, scrolling history, and switching tabs while an approval is pending; four choices per call: Deny, Allow Once, Allow for Session, or Always Allow (persisted to disk); if the application is closed during an approval, the session can be resumed safely
  • Blocking inline edits - When the assistant proposes a code change, the proposal appears as an inline diff and the assistant waits for your decision before continuing; back-to-back proposals on the same tab are shown one at a time, in order
  • No surprise block exports - Block-source analyses (search, compare, cross-references, call graph, find references, block diff, DB values, UDT definition) ask before exporting blocks from TIA Portal; subsequent analyses on the same blocks reuse the export without re-touching TIA Portal
  • Tool Call Transparency - Each AI tool call in the chat shows the operation and its target at a glance (e.g. "Read (src/main.cs · lines 1-50)", "Git Status"); completed calls show a green check with a short summary, errors show a red X, and rejected approvals show an amber shield — so you always know what the assistant did without expanding the bubble
  • Permission Modes - Cycling toggle button next to the send button selects how write operations are approved: Default asks for every write, Accept Edits auto-approves file edits while still asking for shell commands and destructive operations like delete or force-push, Auto auto-approves everything except dangerous operations (PowerShell, process access, network writes); the current mode is shown with a colored icon and tooltip; Plan Mode is a separate dedicated toggle that forces the AI to submit an approved plan before any writes
  • Inline Plan Approval - When the AI submits an execution plan, the plan appears as an editable text area directly inside the chat with Approve and Reject buttons; you can modify the plan before approving; non-blocking — scroll history or switch tabs while reviewing
  • Command Queue - Send messages while the AI agent is working; messages are queued with priority levels (Now/Next/Later) and processed automatically after each turn; queue indicator shows pending message count; ESC cancels the current operation and clears the queue, or pops queued messages back into the input field when idle
  • Mid-Turn Steer (default) - A message typed while the AI is streaming is handed to the model at the next safe boundary so it can react immediately; steered messages get a "↪ steered into running response" indicator under the bubble; sub-agent and notification messages keep regular queue rules; AI Chat Settings lets you switch to "Wait for current response to finish" for the legacy queue-and-wait behaviour
  • Interrupt (Shift+Enter) - While a response is streaming, Shift+Enter cancels the current response and immediately starts a fresh turn with the message you typed — one gesture to redirect the AI when it heads in the wrong direction
  • Multi-Session - Run multiple AI chat sessions simultaneously; the Agent Sidebar (toggle via PanelLeftOpen/PanelLeftClose icon) slides out as an overlay from the left and shows all sessions grouped by status (In Progress / Completed); each session has its own chat context, canvas, and agent/provider; sub-agents are routed to their parent session automatically; unread message badges with blink animation notify you of activity in other sessions; double-click a session name to rename it; close sessions via the X button (with confirmation if still running); the canvas state is preserved per session and replayed on switch; live preview text under each session name shows incoming messages and responses from other sessions
  • Per-Session Agent - Each session remembers its agent/provider/model selection independently; switch to a different provider in one session without affecting other sessions; the agent switches automatically when you change sessions
  • Compaction Progress - When the conversation is summarized to fit the model's context window, a status banner above the input shows the active phase (running pre-compact hooks, compacting the conversation, running session-start hooks, running post-compact hooks) and disappears as soon as the work is finished
  • Cross-Session Communication - Agents can send messages to other sessions via sendagentmessage; target sessions auto-resume without manual input; the AI sees all active sessions with their provider/model in the system prompt
  • Scheduled Tasks — schedule autonomous AI agent runs on cron expressions, with read-only-tool sandboxing and 24-hour catch-up after offline periods.
  • Workspace File-System Access Control - The AI's fs tool (read/write/create/edit/delete/list/search) is gated by a 5-layer policy plus a hardcoded blocklist. The current TIA project directory and your Desktop/Documents/Temp folders are auto-allowed. Add additional folders in AI Chat Settings → Workspace to grant persistent access. Out-of-scope paths trigger an inline approval dialog with Allow Once / Allow This Session / Allow Permanently / Deny buttons; permanent grants show a warning with the exact directory that will be persisted. Vault, license, chat database, agent memory, app settings, SSH/AWS/Azure/Kubernetes credentials, Windows/Program Files/AppData internals, browser/OS lock files are always refused — even if the AI requests them via a parent folder you previously allowed. Symlinks and junctions are resolved before the blocklist check, so an attacker cannot bypass via reparse points. UNC paths, \?`, \.` device paths are rejected outright.
  • External MCP Server Plugins (Stdio + HTTP with OAuth 2.1) - Add external MCP servers to the AI Chat under AI Chat Settings → MCP Servers. Stdio (local subprocess) and HTTP (remote URL) transports are both supported. HTTP servers pick an Auth Mode: None, Static header (fixed bearer token), or OAuth 2.1 (full RFC-compliant browser-based PKCE login with auto-discovery via RFC 9728 PRM and RFC 8414 AS-Metadata, RFC 7591 Dynamic Client Registration, RFC 8707 Resource-Indicators, automatic refresh-token rotation, sign-out revokes the server-side token before clearing the local credential, Add-flow cancel rolls back tokens). For OAuth 2.1, four Client Modes cover every server style: Dynamic registration (default; the server auto-registers the client), Static (pre-registered) (server rejects automatic registration; paste a Client ID and optional secret from the server's developer portal — secret encrypted in Windows Credential Manager), Hosted client metadata document (the URL itself acts as the client identifier; uses a built-in default URL or a custom one you host), and Cross-app authorization (XAA) (one OpenID Connect identity provider — Azure AD, Okta, Auth0, Keycloak — issues a single sign-on token that several MCP servers accept; configure once via the AI Chat Settings → MCP Servers → Cross-app authorization → Configure… dialog with HTTPS-only issuer validation). Tokens are stored in Windows Credential Manager. Localized status row reports per-step failures (DiscoveryFailed, ServerOpen, DcrFailed, UserCanceled, StateMismatch, TokenExchangeFailed, NotAuthorized, StaticMisconfigured, CimdInvalidUrl, CimdNotSupported, XaaIdpNotConfigured, XaaIdpFlowFailed, Network) with actionable hints.

Source Control (Git)

AnyAutomation Studio uses the built-in Source Control view — version your TIA exports and any workspace files with the full Git workflow.

  • Source Control view - The Source Control activity-bar view lists every change in the open repository; the activity-bar icon shows a count badge for pending changes
  • Stage & commit - Stage or unstage individual files or hunks, write a commit message, and commit, amend, or push from the view header
  • Diff view - Click a changed file to open its diff (side-by-side or inline) with syntax highlighting; stage or revert hunks from the diff gutter
  • Branches & tags - Create, check out, merge, and rebase branches and push/pull tags from the Source Control menu and the status-bar branch indicator
  • Remotes - Fetch, pull, push, and manage remotes
  • Stashes - Create, apply, pop, and drop stashes
  • File history & blame - View per-file commit history and inline blame through the built-in Git surfaces and Timeline view
  • Clone & open - Clone a remote repository or open a local one from the Source Control welcome view or the Command Palette
  • GPG signing - Honour your Git signing configuration when committing
  • Git extensions - Install Git-graph, blame, or GitLens-style extensions from the marketplace to add a commit graph and richer history when you need it

OPC UA Client

  • Direct Connection - Connect to any OPC UA server by endpoint URL (e.g., opc.tcp://192.168.0.1:4840)
  • Auto-Discovery - Automatically detect PLC OPC UA endpoints from the connected TIA Portal project
  • Authentication Modes - Anonymous, Username/Password, and Certificate-based authentication
  • PLC Online pane layout - The Watch Table, Node Attributes, References, Struct Fields, Event Log, History Chart, and Server Diagnostics panels sit in the PLC Online editor pane as tabbed tool-stacks (right and bottom); the address-space tree lives in the PLC Online side-bar view. Each tool can be shown or hidden, and the splitter positions are saved
  • Address Space Browser - Browse the full OPC UA address space in a tree with per-node-kind icons
  • Node Refresh - Toolbar Refresh button re-fetches the selected node's children from the server, bypassing the local cache, for picking up server-side changes since the last expand
  • Node Search - Filter address space nodes by name to quickly locate variables
  • Node Information Panel - Selecting a node shows every OPC UA attribute including Node Id, Browse Name, Display Name, Node Class, Description, Write/User-Write Masks, and for variables Data Type, Value Rank, Array Dimensions, Access Level, User Access Level, Minimum Sampling Interval, Historizing, current Value, Status Code, and Source/Server Timestamp (matches UaExpert)
  • References Panel - Dedicated panel listing every incoming and outgoing reference of the selected node with direction, reference type, browse name, node class and target node id columns
  • Event Log Panel - Subscribe to OPC UA events from a notifier node and watch them stream into a Time / Severity / Source / Event Type / Message grid; severity range filter, CSV export with formula-injection guard, and a 5000-entry FIFO ring with bounded UI dispatch under flood
  • History Chart Panel - Load raw historical values for a variable node over a time range and plot them on a date-time scatter chart; quick 1h / 6h / 24h / 7d presets, calendar pickers for custom ranges, CSV export, and safe handling of out-of-range timestamps / non-numeric values / hostile-server payload sizes
  • Server Diagnostics Panel - Live read-out of the standard OPC UA server-object hierarchy (server status, capabilities, diagnostic counters, active subscriptions, active sessions) with a configurable 1–60 s poll interval persisted per connection; servers that do not expose the diagnostic subtree show a "Not exposed" placeholder instead of empty rows, transient outages surface in an inline error strip, and exponential back-off avoids hammering a struggling server
  • Auto-Reconnect Banner - When the keep-alive watchdog detects a lost connection, a yellow banner in the connection header counts the elapsed reconnect time live and offers a Cancel button to stop trying without waiting out the 5-minute timeout
  • Cancel a stuck OPC UA connect attempt; unreachable servers fail in 30 seconds instead of six minutes.
  • Connect to large S7-1500 controllers without waiting for the full type system — browse and read while the type system loads in the background.
  • Recent Endpoints Dropdown - The Endpoint URL field is an autocomplete of the last 10 successful connections (per installation, surviving restart); URL variants that resolve to the same scheme + host + port are merged into one entry instead of cluttering the list with duplicates
  • Keyboard Shortcuts - Ctrl+Enter Connect, Ctrl+D Disconnect, F5 Refresh, Ctrl+W Write the selected Watch Table row — active in the PLC Online pane (and its side-bar tree) and routed to the active connection
  • Copy NodeId / Copy Browse Path - Right-click any Address Space node to copy the canonical Node Id or the human-readable browse path to the clipboard
  • Show / hide tools - Per-tool toggles in the editor-title menu and the Command Palette show or hide each panel (Node Attributes, References, Struct Fields, Event Log, History Chart, Server Diagnostics) without resetting the workspace
  • Call Method Dialog - Right-click a method node in the Address Space Browser to open a modal dialog that lists input and output arguments with per-type editors (scalar text boxes, array-row editor), runs the call, and shows the returned values and status; closing the dialog cancels any call still in flight
  • Certificate Management Dialog - Review the client's own certificate plus every server certificate this client has trusted or rejected in a three-tab modal (Own / Trusted / Rejected); trust pending server certificates, reject previously trusted ones, remove obsolete entries, or regenerate the client certificate. A companion Auto-accept toggle in the OPC UA settings flyout switches between automatic trust (default) and manual per-server approval
  • Matrix Editor Dialog - Right-click a matrix-typed variable in the Address Space Browser to open a spreadsheet-style editor with row and column headers; edit cells individually, track dirty changes, and save the whole matrix back to the server in one write. Read-only matrices stay visible but disable the Save button; matrices with more than two dimensions report an honest "rank not supported" error instead of silently flattening the data
  • Struct Fields Panel - Read and edit complex struct/UDT values with nested expansion, per-index array rows and dirty-field write-back
  • Watch Table - Add variables via double-click or drag-and-drop; view Name, Node ID, Data Type, Value, Status, and Timestamp per row
  • Read Values - Read all watch table variables with a single server request, or read individual rows on demand
  • Write Values - Write values directly to PLC variables by editing watch table cells
  • Live Subscriptions - Subscribe to value changes with a configurable interval (in milliseconds); values update automatically without polling
  • Per-Variable Subscribe - Subscribe to a selection of rows independently of the full watch table
  • Save/Load Configuration - Save and restore watch table configurations (endpoint URL + variable list) as .opcua-watch JSON files
  • Workspace Persistence - The whole PLC Online workspace (panel visibility + open connections + watch table) is restored when you reopen the pane. Every open connection tab keeps its own watches, subscriptions, event filter and history range — not only the active tab. A per-tab Don't persist this connection in workspace toggle in each connection's Settings flyout lets you exclude a tab from the workspace file and the auto-restore when an endpoint must stay private. The editor-title Workspace menu offers Save Workspace As…, Load Workspace… (accepts both new .opcua-workspace and legacy .json watch files), and Reset Workspace. Passwords stay out of the workspace file — operators re-enter them on reconnect
    • Splitter positions and per-tool panel visibility survive save/load.
  • CSV Export - Export watch table data to CSV with all columns (Name, Node ID, Data Type, Value, Status, Timestamp)
  • JSON Export - Export watch table data to structured JSON with full metadata
  • MCP Integration - Unified opcua tool with 9 subcommands for AI assistants: connect, disconnect, browse, read, readcomplex, write, writecomplex, get_types, subscribe

S7 Native (S7 Comm+) — Trial + Enterprise

  • Direct S7 Comm+ connection - TLS 1.3-secured native S7 protocol access to S7-1200 (FW ≥ 4.3) and S7-1500 (FW ≥ 2.9) without OPC UA
  • Authentication - Legacy password and TLS user/password authentication via the built-in driver
  • Symbolic browsing - Browse all block types (DB/FB/FC/OB) with tag/UDT expansion; absolute addresses (I0.0, MW10, QD20) resolved via manual address dialog
  • TIA tag import - Import PLC tags from the active TIA Portal project as a "PLC Tags" tree node; IP-based PLC matching
  • Live Watch Table - Native S7 Comm+ subscriptions push value changes with configurable cycle time; the old fixed-interval polling path is gone
  • Connection status dot - A coloured dot in every PLC tab header signals the PLC state live (grey = not connected, green = running, yellow = stopped or reconnecting, red = unreachable) with a hover tooltip
  • Automatic reconnection with visible progress - A "Reconnecting…" banner surfaces under the connection bar while the app restores a lost connection; Watch Table values fade to half opacity and switch to ??? until fresh values arrive; all recovery is handled in the background
  • CPU Protection panel - A side panel in the PLC Online pane shows the current protection level (None/Read/Write/Full) and password-required flag for the active S7-1500 / S7-1500F CPU; refreshes automatically once on connect
  • Diagnostic Buffer panel - A side panel lists the most recent CPU diagnostic events (timestamp / event ID / class / priority / OB) read from SSL 0xA0; firmware-gated to V3.0+ CPUs (older CPUs see a clear unsupported-firmware message instead of a log-spam loop)
  • CPU Identity panel - A side panel shows MLFB, order number, serial number, hardware version and firmware version read from the PROFINET I&M0 record; works on V2.x and V3.0+
  • Memory Usage panel - A side panel shows live load/work/retain memory utilization (used vs. total in megabytes plus 0–100 % progress bars); refreshes automatically once on connect

Unit Testing (Enterprise)

Integrated unit test framework for TIA blocks — write, run and evaluate tests without TIA Portal Test Suite. Requires PLCSIM Advanced V3.0+.

  • Test Explorer — Tree of all test suites in the project's .tia-tests/ folder, auto-detects new/deleted/modified files via FileSystemWatcher (500 ms debounce)
  • Live status icons — Each test case shows its current status during and after execution: ✓ Pass, ✗ Fail, ⊘ Skipped, ⚠ Error
  • Persistent results — Latest test results are stored in SQLite and reappear automatically in the Explorer on next app start
  • Suite context menu — Run Suite, Open (as document tab)
  • Test case context menu — Run Test (single-case execution via TestCaseFilter — remaining cases are marked Skipped)
  • Double-click on suite — Opens the suite as a document tab in the editor
  • Run All / Run Selected — Sequential batch execution of multiple suites (PLCSIM single-instance limitation)
  • Search filter — Live text search across suite and test case names (case-insensitive substring match)
  • Failed-only toggle✗ Failed button hides all passing suites and shows only those with Fail/Error cases — useful for large test histories
  • Live progress — While a test is running, phase, current test case and completed/total counters update in real time
  • Result detail grid — For each test case, all assertions are shown with variable, operator, expected, actual and pass/fail marker
  • Stop mid-run — Active test execution can be cancelled at any time
  • Automatic block analysis — Interface, boundary values and dependencies are extracted from the TIA project with a single click
  • Multi-phase test steps — Optional act.steps array authors write / wait / assert sequences directly in the case (e.g. reset → wait 500 ms → start → wait 2 s → check). Visual editor exposes per-step + Write / + Wait / + Assert buttons plus per-step ↑ / ↓ reorder and remove. Per-step assertion failure aborts the case immediately with a Step <N> (assert): … message; top-level assertions[] still runs as a final gate
  • Run History — Second tab in the right results panel listing every persisted run with status, counts, suite, PLC, hostname and TIA version. Right-click for Open Results · Compare To · Delete · Export HTML · Open Manifest. Project paths are stored as SHA-256 hashes only — never plain text
  • Real-PLC test execution — New "Real PLC (no PLCSim)" preparation mode runs tests directly against live S7-1200 / S7-1500 hardware via the S7 Native transport. The PLCSim lifecycle is bypassed entirely. Each run is gated by an acknowledgement dialog with a defense-in-depth checkbox so a stray click cannot start a write sequence; safety blocks remain hard-blocked regardless of mode
  • S7 Native label parity — The S7 transport in the Connection Settings dialog is labelled "S7 Native" to match the PLC Online pane; the underlying protocol is unchanged
  • Compare Runs — Third tab opened on demand from Run History. Diffs two runs with summary pills (regressions / fixed / new / removed / stable), filter bar, Swap action, and color-coded case rows showing change-kind, message and duration delta
  • Trend — Fourth tab visualising historical pass-rate and duration as time-series scatter charts plus a per-case status heatmap. Filter by PLC, suite, case, and date range; "Last 30 days" / "Last 90 days" quick buttons. Heatmap cells use both color and glyph for accessibility
  • Block-Change badge + Run Affected Only — Test Explorer flags every suite whose underlying PLC block changed since the last test run with a small orange dot next to the suite name. A new "Run Affected Only" context-menu entry executes only those suites; status banner explains zero-affected and detection-failure outcomes instead of failing silently
  • Per-test-case Metadata pane — Each test case in the visual editor exposes an expandable Metadata section: explicit run order, comma-separated tags, priority (Low / Normal / High / Critical), free-text owner, and comma-separated requirement IDs. Schema validation issues for a specific test case are surfaced inline below the affected case, not just in the suite-level banner
  • Unit Testing layout — A Unit Testing side-bar container holds the Test Suites explorer and the Test Results view; each test suite opens as a Test Suite Editor in the editor area
  • CI/CD command-line runnertia-test-runner runs your suites on a build server with pipeline-friendly exit codes and writes JUnit XML plus a branded HTML report. Drop-in snippets for Jenkins, GitHub Actions, Azure DevOps and GitLab; opt-in CI environment capture, YAML config, proxy support, and a machine-bound / per-run-key / offline (cached, ~14-day grace) license model. No telemetry is collected

Trace / Signal Visualization

Real-time scope for OPC UA signals. Capture PLC values at a fixed cycle, see them as live graphs, and analyse stopped recordings with scope-style tools.

  • Continuous and single-trigger modes — Continuous keeps the newest samples in a rolling window (30 s to 1 h), single-trigger captures a fixed window around a rising, falling or both-edge condition with configurable pre- and post-samples
  • Auto-reconnect — If the OPC UA session drops, the trace restarts automatically with the same signals when the session comes back
  • Multi-signal plotting with scaling groups — Put signals on the main axis, one of four shared right-hand axes (A / B / C / D) or a dedicated own axis per signal
  • Dual cursors with delta — Click to place t1, click again for t2, drag either one to reposition. The time difference Δt is shown on the plot; the signal table shows Y(t1), Y(t2) and ΔY per signal in the chosen display format
  • Toolbar toggle for cursors — Show or hide both cursors with a single toolbar button. When turned on for the first time after stopping a recording, the cursors auto-place at 25 % and 75 % of the visible time. Each cursor carries a small t1 / t2 badge; the second cursor shows the live Δt and ΔY right on the line as you drag
  • Per-signal format — Decimal, Hex, Binary, Bool or Scientific, editable directly in the signal table and applied live to cursor readouts
  • Linear or stepped rendering per signal — The signal table has a Line column to pick Linear (diagonals between samples) or Step (rectangular waveform, matches how a boolean or bit-style signal actually changes). Switching a signal's format to Bool picks Step automatically
  • Computed signals from formulas — Combine source signals with +, -, *, /, parentheses, built-in math (abs, sqrt, min, max, sin, cos, log, ...) and time-aware deriv / integ; invalid formulas are flagged inline with a red cell border, the error as a tooltip, and the Start button stays disabled until every formula is valid
  • Overview minimap — Compact strip below the main plot shows the whole recording at a glance; drag the highlighted rectangle to scrub, zoom or pan the main plot — the rectangle follows
  • FFT tab after stop — Stopped recordings offer a Frequency tab with Rectangular / Hann / Hamming / Blackman windows plus optional dB and logarithmic y-axis
  • Plot interaction — Pan, rectangle zoom, step zoom in/out, 100 % reset, fit-to-current-window — all available after stop
  • CSV export — Write the full recording (source and computed signals) with ISO-8601 timestamps to disk
  • MCP integrationtia_trace tool with start / stop / status / export; AI agents can wire source and computed signals directly

Hardware Simulation (Trial + Enterprise)

Drive simulated tag values into a running PLCSim Advanced instance so PLC logic can be exercised against varying inputs without physical hardware. The activity-bar entry is visible on every plan, but the pane shows a "license required" overlay on Basic and Professional plans.

  • PLCSim Advanced connection — Pick a running PLCSim instance from the toolbar dropdown, optionally select the matching TIA Portal PLC for topology-name resolution, click Connect, then Reload topology to populate the hardware module tree from TIA Portal
  • Auto-load topology — On a successful Connect the device topology loads automatically before polling starts, no extra click needed
  • Engine + tick interval — Periodic engine runs every configured function on a tick from 10 ms to 1000 ms; Start, Pause, Stop buttons in the toolbar with status text
  • Six function types — Constant, Ramp, Sine, Square, Triangle, Random shown with per-kind waveform icons in the dropdown; right-click in the Function Editor tab to add or double-click an existing row to edit; tag picker auto-fills the data type and includes data-block variables alongside IO and marker tags
  • Force overrides — Force a tag to a fixed value independent of the engine; right-click the Override List to add; toggle active/inactive without removing
  • Watch list — Eye icon in the device tag tree adds tags to the Watch List tab; values refresh every engine tick while running; tag-table tags receive live updates the same way hardware-channel tags do
  • Linker rules — Conditionally write one tag's value to another when a boolean expression evaluates to true; dialog opens as a resizable standalone window with a Guided builder tab (up to eight conditions, AND/OR combinators, IEC operators) and an Expression text tab that stay in sync; the tag picker covers IO, marker, system and data-block variables
  • Drag-and-drop tag insertion — Drag a tag from the Linker dialog's tag picker into the source-tag, target-tag or Expression-text field; literal-value fields deliberately reject tag drops to avoid silent string-literal confusion
  • F-safety auto-acknowledge — With a hardware topology loaded, Acknowledge F-tags in the device-panel toolbar acknowledges all forced F-channels in one click; Revoke undoes it; state remembered per PLC across reconnects
  • OPC UA as hardware source — Open an OPC UA-Server connection in the PLC Online pane, then pick that connection from the OPC UA toolbar dropdown (right of the TIA PLC dropdown). The Device Panel adds an OPC UA address space subtree; right-click any variable node and choose Add to watch list to stream Symbol / NodeId / DataType / Value / Quality / Timestamp into the OPC UA Watch tool tab. Switching the OPC UA source re-binds the watch list to the new session without dropping existing rows
  • Persistent across reconnects — Watch List, Override List, Linker Rules and Function Editor contents survive Disconnect / Connect cycles

EPLAN Electric P8 (Add-on)

Optional separately licensed add-on. Connects to a local EPLAN Electric P8 installation (2025.0.3 or compatible) so EPLAN projects can be opened and exported without leaving AnyAutomation Studio.

  • Add-on gating — Activity-bar tab is hidden until the EPLAN add-on is granted to the current account; the License → Add-ons card shows whether it is active. Add-on entitlement is signed alongside the rest of the license, so flipping the flag client-side does nothing
  • Recent projects + open dialog — Workspace lists previously opened .elk files (10 visible, 50 stored) and offers an Open EPLAN Project picker. Missing files are removed from the list with a status hint
  • Variant picker — On first open with multiple installed EPLAN variants (Electric P8, ProPanel, Preplanning), a one-time picker selects which variant to use; the choice is remembered between sessions
  • Bridge status + crash recovery — Header indicator shows Connected / Connecting… / Disconnected; if the EPLAN bridge crashes mid-session, a banner appears with a Reconnect button that re-spawns the bridge and re-opens the previous project
  • Project Explorer (Pages + Functions) — Right pane lists every drawing page (identifier / document type / description) and every main function (tag, parent page, article number) in two top-level categories with substring filter and live match counts
  • Page preview — Double-click a page to open it in the preview tab; mouse-wheel zoom, middle-click pan, and a crosshair cursor follow the pointer across the page, which renders on a white sheet so the page border stays visible at any zoom level
  • Export to PXF or PDF — Toolbar Export… dialog writes either a lossless EPLAN exchange file or a flat PDF of all pages to a user-picked target path

Issue Reporting

Report bugs and request features without leaving the app. The Help menu's "Report Issue" entry opens a dialog where you describe the problem; the app collects system information (app version, OS, .NET runtime, active TIA Portal version, language, license tier) and recent logs, then opens GitHub in your browser with the issue pre-filled. No GitHub account login is required from inside the app — you submit on GitHub yourself.

One Window per Windows Session

Only one instance of AnyAutomation Studio runs per Windows session. Opening a file or folder from Windows Explorer while the app is already running activates the existing window and opens the item there, instead of starting a second copy. Double-clicking the application icon or launching the executable a second time also brings the running window to the front. Different Windows users (including separate RDP sessions) each get their own independent instance.


Supported TIA Portal Versions

Version Status
TIA Portal V15 Supported
TIA Portal V16 Supported
TIA Portal V17 Supported
TIA Portal V18 Fully supported
TIA Portal V19 Fully supported
TIA Portal V20 Fully supported
TIA Portal V21 Fully supported

Supported Block Types

PLC Blocks

  • OB - Organization Blocks (incl. F_OB)
  • FB - Function Blocks (incl. F_FB)
  • FC - Functions (incl. F_FC)
  • DB - Data Blocks (Global, Instance, Array, incl. F_DB)
  • UDT - User-Defined Data Types
  • Tag Tables - Variable Tables
  • Technology Objects - Motion Control, PID Controllers, Counters, etc.
  • Software Units - V18+ Software Unit containers

HMI Elements

  • Screens - HMI screens and popups
  • Screen Templates - Reusable screen templates
  • HMI Tag Tables - HMI-specific tag tables
  • VB Scripts - VB script functions
  • Connections - PLC/HMI connections
  • Text Lists - Multi-language text lists
  • Graphic Lists - Graphic/symbol lists

Hardware

  • Device Configuration - Hardware setup as AML/XML

License Options

Basic (FREE)

  • Free forever - No trial period, no expiration
  • 1 file export/import per operation
  • Block Compare
  • Code Editor
  • Hardware Overview

Professional (CHF 9.99/month or CHF 99.99/year)

  • 1,000 files export/import per operation
  • Annual plan saves 17% (2 months free)
  • Everything in Basic, plus:
  • Find Unused Blocks
  • Safety Block Support (FFB, FFC, FDB, FOB)
  • Protection Profiles
  • MCP Server Integration
  • AI Chat
  • Project Library Operations
  • Priority Support

Enterprise (CHF 29.99/month or CHF 299.99/year)

  • Unlimited files
  • Annual plan saves 17% (2 months free)
  • Everything in Professional, plus:
  • Password Vault
  • Unit Testing
  • Dedicated support
  • Volume discounts

Volume Pro / Volume Enterprise (Organization License)

  • Multi-seat subscription for 2-200 seats, based on Pro or Enterprise tier
  • Owner-managed web dashboard at https://www.anyautomation.ch/profile/org — invite seats, release seats, central billing
  • Magic-link invitations to colleagues, no shared password
  • Org-anchor binding signed into the license; each seat is bound to a single email address
  • Organization-wide EPLAN add-on as optional org extension — every member inherits access

EPLAN Add-on (CHF 19.99/month or CHF 199.99/year)

  • Separately licensed add-on for Pro / Enterprise / Trial accounts and Volume org subscriptions
  • EPLAN Electric P8 integration (see EPLAN Electric P8 section)
  • ECDSA-signed slot in the license canonical — client-side tampering has no effect

Trial Period

  • 30-day free trial with all Enterprise-level features
  • No credit card required
  • After 30 days, falls back to Basic (free)

Activation

Online Activation

  1. Purchase subscription at: https://www.anyautomation.ch
  2. Receive activation code via email
  3. Enter code in the program under Settings (Ctrl+,) → Manage License
  4. License is bound to your hardware

Manage Subscription

  • Click "Manage Subscription" in the License dialog
  • Opens Stripe portal for payments, invoices, and cancellation

Account

  • Email-bound license - Each license and trial is bound to your account email; no shared accounts
  • Magic-code sign-in - Receive a 6-digit code by email; no password to manage or leak
  • Hardware bind - License activates on the current machine and is locked to its hardware ID
  • Machine switch limit - Move your license to up to 3 different machines within any 30-day window
  • Single trial per account - Trials are bound to your account; new machines reuse the existing trial state
  • Sign in / Sign out - Manage the active session from Settings (Ctrl+,) → Manage License (Account section at the top of the License window)

  • Multi-language - German, English, French, Italian

Disclaimer

The software is provided "as is". The provider assumes no liability for damages caused by use. The user bears full responsibility for reviewing all generated content. See EULA at https://www.anyautomation.ch


Contact: For questions, contact us at contact@anyautomation.ch

© 2025-2026 AnyAutomation. All rights reserved.