Early access · v0.2.0

The edge agent for
industrial IoT.

A 19 MB binary that turns your PLCs into clean REST and gRPC APIs. No GUI, no middleware, no runtime. Just one command.

$curl -fsSL https://limenedge.com/install.sh | bash
linux · arm64 · darwin — signed release, no signup
Read-only during Early Access — writes are held back on purpose.
19 MB
Binary size
< 15 MB
Runtime RSS
38 ms
Cold start
0
Dependencies
Protocols

Four protocols. All stable.

We support what we can support well. Every driver ships compiled in, tested against real hardware.

OPC UA

Stable
IEC 62541

Session discovery, subscriptions, structured types.

Modbus TCP

Stable
FC 01–04

Coils, discrete inputs, holding & input registers.

EtherNet/IP

Stable
CIP · ODVA

Rockwell native. Explicit messaging, symbol reads.

MQTT 5.0

Stable
Sparkplug B

Broker ingest with QoS 1, TLS, and topic filters.

More drivers on the roadmap. We would rather ship four solid ones than a dozen half-finished.

Lifecycle

From nothing to streaming JSON.

Five commands. About sixty seconds if the network cooperates.

01

One command

A single 19 MB binary. No runtime, no package manager.

limen — install
01
~/plant-3 $ curl -fsSL https://limenedge.com/install.sh | bash
Limen Edge — v0.2.0
→ Detecting platform
✓ linux/amd64
→ Installing to /usr/local/bin
✓ Ready. Try: limen --help
02

Scaffold a site

A versioned YAML config, ready for Git.

limen — init
02
~/plant-3 $ limen init --site plant-3
✓ site: plant-3
✓ mode: read-only
✓ transport: rest + grpc
→ next: limen discover
03

Find the controllers

Sweep the network. Tag what answers.

limen — discover
03
~/plant-3 $ limen discover --network 10.0.0.0/24
✓ 10.0.0.14 Siemens S7-1500 [OPC UA]
✓ 10.0.0.22 Allen-Bradley 1756 [EtherNet/IP]
✓ 10.0.0.41 Schneider M580 [Modbus TCP]
✓ mqtt://broker.plant/… [MQTT 5.0]
→ 4 devices written to limen.yaml
04

Bring it up

REST and gRPC endpoints, streaming telemetry.

limen — run
04
~/plant-3 $ limen run
✓ 4 devices · 148 tags loaded
✓ REST 0.0.0.0:8080
✓ gRPC 0.0.0.0:50051
· steady state — 12 ms avg poll
05

Clean JSON out

Every register, an endpoint. No SDK.

limen — consume
05
~/plant-3 $ curl localhost:8080/v1/plant-3/tags/line-2.motor.rpm
{
"tag": "line-2.motor.rpm",
"value": 1748,
"unit": "rpm",
"quality": "GOOD"
}
Why

Built for engineers.

No runtime

One statically linked binary. No JVM. No Python. Runs where the metal is.

Config as code

YAML in Git. Reviewable, diffable, reversible. Your infra tools already know how to ship it.

Safe by default

Read-only during Early Access. TLS, rate limits, and per-tag access baked in from the start.

FAQ

Questions, answered.

No. Limen Edge is a single statically linked binary. Zero dependencies, no package managers.
No — by design. Everything is a YAML file. That means Git, code review, CI/CD, and reproducible rollouts. Bring your own Grafana.
Yes. ARM64 and ARM32 are first-class. Runtime footprint stays under 15 MB of RSS on a Pi 4.
Not yet. Limen Edge is read-only during Early Access. Writing to industrial controllers is high-consequence, and we would rather ship it once — safely, with signed operator tokens — than ship it early.
Free during Early Access (v0.2.0). We collect anonymous version telemetry, nothing else.

One command. Zero regret.

Signed release. No signup. No email.