Interfaces & Connectivity
Integrate agents directly with your existing IT and industrial shopfloor systems through built-in support for industry-standard protocols.
Concept & Purpose
Agents cannot operate in a vacuum. To perform real-world tasks, they must pull data from sensors, query IT databases, or write setpoints to machine controllers.
YAIFA abstracts these communication paths into **Ports**. An agent's ports are structured gateways that translate external signals into internal agent Beliefs, or turn agent Actions into external system commands.
Supported Interface Protocols
YAIFA supports the most important enterprise and operational technology (OT) interfaces out of the box:
| Protocol / Interface | Primary Use Case | Description |
|---|---|---|
| OPC-UA | Industrial Automation (OT) | Read/write sensor values, machine states, and safety logs directly from PLCs. |
| MQTT | IoT & Pub/Sub Brokers | Asynchronous message streams for telemetry, status reporting, and event triggers. |
| REST API | Cloud & IT Systems | Standard HTTP integration for ERP, MES, CRM, and third-party web services. |
| SQL & MongoDB | Database Storage | Structured relational databases (PostgreSQL, MySQL) and document stores (MongoDB). |
| CSV & Python | Local Files & Scripts | Flat files for batch import/export, or direct function calls via Python scripts. |
| MAS Blackboard | Inter-Agent Exchange | Shared blackboard space enabling asynchronous coordination between agents in a flow. |
Technical Realization
Ports are configured declaratively in the agent's `agent.json` file. Each port has a specific `source_type` and its corresponding `source_config`:
// Example of an OPC-UA observer port definition
{
"id": "port_sensor_temperature",
"name": "Line 1 Temperature Sensor",
"scope": "input",
"source_type": "opcua",
"source_config": {
"endpoint_url": "opc.tcp://192.168.12.100:4840",
"node_namespace_index": 2,
"node_identifier": "Line1.TempSensor.Value",
"poll_interval_ms": 1000
}
}
During code generation, YAIFA reads this configuration and links the port to its respective transport protocol client. The developer only writes standard Python logic using the structured payload, without handling socket protocols or raw network connections.