One gRPC API for
every industrial protocol.
A single Rust binary that speaks Modbus, OPC UA, EtherNet/IP, Siemens S7, DNP3, BACnet/IP, and MQTT — and exposes them all behind one typed gRPC surface. Read, write, and subscribe to tags on any PLC with one client.
The problem
Stop writing a different client for every PLC.
Every industrial protocol has its own wire format, addressing scheme, and quirks. The gateway absorbs all of that: your application talks one gRPC API and the gateway drives the device.
The same protocol logic gets re-implemented in every SCADA, HMI, and edge collector. Voltrus Gateway makes the mt-* crates — the engines powering the Voltrus explorer apps — the single canonical implementation. SCADA shrinks to SCADA concerns; protocol bugs get fixed once.
How it works
One client. Any device. Any protocol.
Point the gateway at a device and talk to it over gRPC. Connect, read or write typed tag values, then subscribe for live updates — the same three calls regardless of protocol.
Open a session
Point the gateway at a device — Modbus TCP, OPC UA endpoint, EtherNet/IP PLC, S7 CPU, DNP3 outstation, or BACnet controller. The gateway holds the connection and speaks the native wire protocol.
Typed tag values
Call ReadTags or WriteTag over gRPC. Values carry bool, int, float, double, string, and bytes plus a source type — a CIP DINT or an OPC UA string round-trips intact, never flattened to a number.
Live updates
Subscribe to tags and receive live server-streamed batches. No polling loop to maintain on the client — the gateway pushes deltas as devices change.
Features
A single binary that replaces a stack of clients.
One canonical, cross-platform implementation of every protocol your plant uses — self-hosted, type-preserving, with native streaming subscriptions.
One binary, seven protocols
Modbus TCP, OPC UA, EtherNet/IP (CIP), Siemens S7, DNP3, BACnet/IP, and MQTT — all over the same API.
Type-preserving values
Tag values carry bool, int, float, double, string, and bytes plus a source type. A CIP DINT or an OPC UA string round-trips intact, not flattened to a number.
Streaming subscriptions
Subscribe to tags and receive live server-streamed batches — no polling loop to maintain on the client.
Self-hosted & cross-platform
A single static binary for Linux, macOS, and Windows. Run it at the edge, in a container, or beside your SCADA. No per-tag licensing.
One canonical implementation
The same mt-* engines that power the Voltrus explorer apps. Protocol bugs get fixed once, everywhere.
Discover & browse
Browse tags and discover devices over the same gRPC surface — no separate tooling to map out a PLC's tag namespace.
Supported protocols
Read, write, and subscribe on every protocol below.
Full read, write, and subscribe on seven industrial protocols, all over the same gRPC surface.
# one client, any device — the full gRPC surface rpc OpenSession(ConnectRequest) -> ConnectResponse rpc ReadTags(ReadTagsRequest) -> ReadTagsResponse rpc WriteTag(WriteTagRequest) -> WriteResult rpc SubscribeTags(SubscribeRequest) -> stream TagUpdateBatch rpc Discover(DiscoverRequest) -> DiscoverResponse
Perpetual license
Stop writing a client
for every protocol.
A commercial product — not open source, not a subscription. Buy it once and run it forever. Each license covers a single host: a workstation, a server, an edge box, or a VM.
FAQ
Questions engineers ask.
Stay Updated
Get notified about gateway updates & new protocols
MQTT broker support, new protocols, and API updates land regularly. No spam, only product news.
Also from Voltrus