Metadata-Version: 2.1
Name: iams
Version: 0.7.2
Summary: An industial agent management system aiming to control agents for manufacturing units.
Home-page: https://github.com/glomium/industrial-ams
Author: Sebastian Braun
Author-email: sebastian.braun@fh-aachen.de
Project-URL: Documentation, https://github.com/glomium/industrial-ams
Project-URL: Source, https://github.com/glomium/industrial-ams
Project-URL: Tracker, https://github.com/glomium/industrial-ams
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: PyYAML (==6.0)
Requires-Dist: aiohttp[speedups] (==3.8.3)
Requires-Dist: cryptography (==39.0.0)
Requires-Dist: docker (==6.0.1)
Requires-Dist: grpcio-tools (==1.51.1)
Requires-Dist: grpcio (==1.51.1)
Requires-Dist: protobuf (==4.21.12)
Requires-Dist: python-arango (==7.5.5)
Requires-Dist: sentry-sdk (==1.13.0)
Requires-Dist: influxdb-client[ciso] (==1.35.0)

Industrial Agent Management System
==================================

Agent-management system designed for industrial applications.
This repository represents a scalable solution for orchestration and deployment of industrial agents.
It follows the hybrid integration patterns for industrial agents and concists of a server part and client libraries that are used to develop clients.

IAMS Server
-----------

The server needs docker swarm available (on premise) and orchestrates mircoservice applications (the agents) in the cluster.
It used docker images, which can be globally distributed by vendors, to deploy a service managing every machine on the shop floor.
Furthermore, it provides provisioning capabilities, allowing the agents to consume cloud-wide services, like log aggregation or databases.
The agents can request the provisioning via docker labels attached to the image.
The IAMS server will generate neccecary configurations and credentials and provide the agents with the access.

The IAMS server runs with a mandatory certificate authority (CFSSL), which is used to provide every agent with its own client certificate.
All internal cloud communication can be encrypted automatically, and agents could use a access control lists (ACLs) to verify requests.
The idea is to use a graph database (arango-db) to store relationships between agents and use them as ACLs, however an example configuration and implementation is not yet provided.

IAMS Clients
------------

Clients use gRPC for their internal communications. gRPC has some advantages in comparision to OPC-UA - it uses TLS, which ensures smaller response times for persistent connections (after the handshake), and it supports Server Name Indication (SNI) which enables the usage of 3rd party proxy servers (nginx, envoy) to securely expose the service to external applications.

As gRPC is used, the client programming language can be specified by the developing team. However, this project only focusses on python as a programming language and provides only for this lanuage a client implementation and libraries that help developing clients.

Typically an agents connects via a TCP-based communication (OPC-UA, HTTP, Sockets) to a machine and used the machine-specific communication protocol to receive staus updates from the machine.
The status updates are processed by the agent, which then updates it's connected agents with it's changed state.
In addition to agents, that are connected to a physical devices, coordination agents can be used to aggregate and group agents.

Example implementations can be found in the ``examples`` folder of this repository

Contributions
--------------

Feel free to contribute to this repository.

Use the ``Makefile`` (``make build``) to generate a docker image. The build process includes basic software tests.

Help and Support
-----------------

Use github tickes for support.
