Features

Every feature below is a sphinx-needs object. Requirements satisfy features, and every endpoint in the API Reference implements at least one of them — the build fails if an endpoint does not.

Infrastructure

Feature: Multi-PLC Support FEAT_MULTI_PLC
status: implemented
component: Infrastructure
satisfied by: REQ_SEC_PLC_ACCESS

Connect to multiple TwinCAT PLC runtimes simultaneously with configurable aliases, timeouts, and per-PLC access control.

Feature: Authentication and Authorization FEAT_AUTH
status: implemented
component: Infrastructure

Provider-agnostic OIDC/OAuth2 with hybrid RBAC (roles + scopes). Three policies: ReadAccess, WriteAccess, LifecycleAccess. Per-PLC access control via the plc_access JWT claim.

Feature: Health Probes FEAT_HEALTH
status: implemented
component: Infrastructure

Anonymous liveness and readiness probes. Readiness names each configured PLC and, when enabled, each EtherCAT master whose diagnostics cannot be read.

Feature: Rate Limiting FEAT_RATE_LIMITING
status: implemented
component: Infrastructure

Configurable per-user global rate limiter plus per-endpoint policies (variable reads/writes, batch ops, symbol browsing, file ops, notifications). Returns 429 with a Retry-After header.

Feature: Feature Flags FEAT_FLAGS
status: implemented
component: Infrastructure
satisfied by: REQ_MCP_FEATURE_GATE

Toggle feature slices on/off via configuration. Dictionary-based lookup avoids reflection overhead. Disabled slices answer 404 (501 for Alarms, Rpc, TypeMetadata).

Feature slices

Feature: Variable Read/Write FEAT_VARIABLES
status: implemented
component: Variables
feature_flag: Variables

Read and write PLC variables by symbol path. Supports structured/custom data types, batch operations (up to 100), symbol guards (allowlist/denylist), and value constraints (min/max, enum, pattern, read-only).

Feature: Symbol Browsing FEAT_SYMBOLS
status: implemented
component: Symbols
feature_flag: Symbols

Browse the PLC symbol tree with recursive traversal, path drilling, and pattern search.

Feature: Device Info FEAT_DEVICE_INFO
status: implemented
component: DeviceInfo
feature_flag: DeviceInfo

Query PLC device name, version, and ADS state.

Feature: Lifecycle Control FEAT_LIFECYCLE
status: implemented
component: Lifecycle
feature_flag: Lifecycle

Start, stop and reset the PLC runtime. Admin only, rate-limited per PLC.

Feature: Real-time Notifications FEAT_NOTIFICATIONS
status: implemented
component: Notifications
feature_flag: Notifications

Subscribe to PLC variable changes via SSE or WebSocket (SignalR). Shared subscriptions with reference counting, configurable cycle times, and per-user connection limits.

Feature: File Access FEAT_FILES
status: open
component: Files
feature_flag: Files

Read, write and list files on the PLC. Routes are in place but answer 501 until the ADS library supports the SystemService protocol.

Feature: EtherCAT Diagnostics FEAT_ETHERCAT

Monitor EtherCAT master state, slave health, error counters, port diagnostics, sync units, and topology. Real-time WebSocket notifications for state changes and CRC error thresholds.

Feature: EtherCAT CoE Object Dictionary FEAT_ETHERCAT_COE
status: implemented
component: EtherCat
feature_flag: EtherCatCoe
implemented by: API_ETHERCAT_COE_READ

Read a slave’s CANopen-over-EtherCAT object dictionary entries.

Feature: Alarm Monitoring FEAT_ALARMS
status: implemented
component: Alarms
feature_flag: Alarms

List outstanding alarms, acknowledge them, and stream alarm transitions over SSE or SignalR. An alarm stays outstanding until acknowledged, even after the fault clears.

Feature: Type Metadata FEAT_TYPE_METADATA
status: implemented
component: Types
feature_flag: TypeMetadata
implemented by: API_TYPES_ENUM_MEMBERS

Resolve a PLC type’s metadata — currently an enumeration’s members.

Feature: Method Invocation (RPC) FEAT_RPC
status: implemented
component: Rpc
feature_flag: Rpc
implemented by: API_RPC_INVOKE

Invoke methods on PLC function block or program instances, gated by a default-deny per-PLC allowlist.

Feature: Scenario Simulation FEAT_SIMULATION
status: implemented
component: Simulation
feature_flag: Simulation

Step, run, pause and reset a scenario-backed simulated target. Structurally unable to reach real hardware.

Feature: MCP Server for AI-Assisted Diagnostics FEAT_MCP
status: implemented
component: Mcp
feature_flag: Mcp

Model Context Protocol server enabling AI assistants to query, monitor, and troubleshoot PLCs through natural language. Runs inside the existing ASP.NET Core host on /mcp. Feature-gated and disabled by default.