# 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

```sh
sudo av install brew:libplctag
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install libplctag
```

  Evidence: local Homebrew formula metadata

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#libplctag
```

  Evidence: nixpkgs package indexes: pkgs/by-name/li/libplctag/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:libplctag
- **Package manager:** Homebrew
- **Version:** 2.7.0
- **Source summary:** Portable and simple API for accessing AB PLC data over Ethernet
- **Homepage:** <https://github.com/libplctag/libplctag>
- **Repository:** <https://github.com/libplctag/libplctag>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- modbus_server (alias)
- tag_rw2 (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 2.7.0
## 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.

### Sources

- <https://github.com/libplctag/libplctag>
- <https://github.com/libplctag/libplctag/wiki/API>
- <https://libplctag.github.io/>
- <https://raw.githubusercontent.com/libplctag/libplctag/master/README.md>
- <https://raw.githubusercontent.com/wiki/libplctag/libplctag/History.md>


## Security Notes

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

- **Geiger risk:** blue / medium
- broad file, network, media, or database tool signal

## Other Package-Manager Records

- Nix - libplctag: normalized package name match | nixpkgs package indexes: pkgs/by-name/li/libplctag/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1


## Combined YAML source

View the package source record on GitHub. [combined/libplctag.yml](https://github.com/mxcl/pkgdb/blob/main/combined/libplctag.yml)


## Sources

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