pkg.soopen package index

brew / rank 8892

Install libplctag with Homebrew, Nix

Portable and simple API for accessing AB PLC data over Ethernet. Version 2.7.0 via Homebrew; verified from local package data. Also installable with nix: nix profile install nixpkgs#libplctag.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install libplctag

local Homebrew formula metadata

Linux

Nixverified · 92%
nix profile install nixpkgs#libplctag

nixpkgs package indexes · pkgs/by-name/li/libplctag/package.nix · source: api.github.com

overview

Package summary

Portable and simple API for accessing AB PLC data over Ethernet

Commands and aliases

  • modbus_server
  • tag_rw2

history

Project history and usage

libplctag is an open-source C library for reading and writing programmable-logic-controller tags over EtherNet/IP and Modbus TCP. It targets industrial automation users who need a small portable API instead of a broad OPC stack.

Project history

The upstream history page says the project began because the maintainers wanted the practical PLC access they needed without the cost, size, Windows/OLE dependency, and licensing constraints they associated with OPC implementations. They evaluated older PCCC libraries and TuxEIP, found licensing, portability, maintainability, and API-shape problems, then wrote their own library without copying TuxEIP code.

The README states that libplctag has been in production use since early 2012. Over time the project kept a C core, a deliberately small API, and examples/wrappers for higher-level languages.

Adoption history

Upstream describes production use across radio telescopes, manufacturing, fitness equipment, food handling, and other industrial settings. That adoption pattern is narrower than a general developer library but unusually practical: it is used where software talks to physical PLC-controlled systems.

The project also grew a wrapper ecosystem, including .NET, Go, Java, Julia, C++, Python, and Pascal bindings or examples. That made the C library a common native core for language-specific automation clients.

How it is used

Developers use libplctag to read and write PLC tag values, list tags, handle callbacks, and build small command-line or service tools around Allen-Bradley/Rockwell and Modbus TCP devices.

Package users see helper executables such as `tag_rw2` and examples, but the package's main role is as a native library dependency for industrial-control applications.

Why package nerds care

libplctag is notable because it packages industrial automation access as a normal open-source C dependency. That is unusual territory for package managers: real machinery, proprietary protocol history, cross-platform binaries, and wrappers all meet in one modest library.

The dual MPL-2.0/LGPL-2.0-or-later licensing also matters for integrators who need something less restrictive than GPL-only PLC code.

Timeline

  • 2012: The README states that libplctag has been in production use since early 2012.
  • 2022: The API wiki history records updates for 2.4.0 and 2.5.0 API changes.
  • 2026: The README lists tier-one platform testing across Linux, macOS, and Windows combinations.

Related projects

  • TuxEIP/TuxPLC is the abandoned earlier EtherNet/IP-related codebase discussed in libplctag's origin story.
  • libplctag.NET, goplctag, libplctag4j, and PLCTag.jl are related wrappers that expose the C core to other language ecosystems.
  • OPC is the larger industrial-automation integration family that libplctag's maintainers explicitly wanted to avoid for their narrower use case.

security posture

Risk level: blue

broad file, network, media, or database tool signal.

Risk classifier

blue risk · medium confidence · tool

Why

  • broad file, network, media, or database tool signal

Signals

  • text:server

Install behavior

  • No Homebrew post-install hook is recorded in formula metadata.
  • Homebrew bottle metadata is available for 6 platform targets.
  • Build metadata lists 1 build dependencies.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
modbus_servercliglobal executable
tag_rw2cliglobal executable

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-08-04
manager version2.7.0
manager updated
local dataok
upstreamcurrent
latest detectedv2.7.0

https://github.com/libplctag/libplctag

  • infoNo package-manager update timestamp was available.low confidence

install metadata

Package metadata

Package keybrew:libplctag
Version2.7.0
Package managerHomebrew
Package manager pagehttps://formulae.brew.sh/formula/libplctag
Homepagehttps://github.com/libplctag/libplctag
Repositoryhttps://github.com/libplctag/libplctag
LicenseLGPL-2.0-or-later OR MPL-2.0
Source archivehttps://github.com/libplctag/libplctag/archive/refs/tags/v2.7.0.tar.gz
Build dependenciescmake
Bottleavailable (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux)
Homebrew post-installnot defined
Servicenone declared

registry facts

Source database details

Source DatabaseHomebrew formula API
Taphomebrew/core
Full Namelibplctag
Version Scheme0
Revision0
Bottle Stable Root URLhttps://ghcr.io/v2/homebrew/core
Deprecatedno
Disabledno
Keg Onlyno
URL Keys
  • stable

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Nix95%

libplctag

nix profile install nixpkgs#libplctag
  • normalized package name match
  • Matched by: Libplctag
nixpkgs package indexes · api.github.com · nixpkgs package indexes: pkgs/by-name/li/libplctag/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • cross-ecosystem install command graph
  • curated package history
  • external package-manager database matches
  • package relationship graph
  • package version freshness
  • package-page enrichment
  • pkg.so package database
  • pkgdb category and tag curation