Skip to content

Key Concepts

Capability Packs

A capability pack adds protocol tools to the agent's tool surface. Packs are compiled into the binary and enabled per project in configuration. There is nothing to install.

Once a pack is on, its tools are called exactly like Read or Bash. The agent can open a socket to a device, read a register, and act on the value inside the same turn that wrote the code.

Available packs

PackModule keyToolsChecks
Modbusmodbus22
OPC UAopcua35
EtherCATethercat94
IEC 61131iec6113101

Fourteen protocol tools in total. Each pack also contributes conformance checks. See Conformance Checks.

Modbus

Reads and writes Modbus registers over TCP and RTU.

ToolTierWhat it does
ModbusReadSafeRead holding or input registers from a device
ModbusWriteHard stopWrite to holding registers on a device

OPC UA

Browses and accesses the address space of an OPC UA server.

ToolTierWhat it does
OpcUaBrowseSafeBrowse the address space of a server
OpcUaReadSafeRead values from specific nodes
OpcUaWriteHard stopWrite values to writable nodes

EtherCAT

Discovery, SDO access and live process-data I/O on an EtherCAT segment.

ToolTierWhat it does
EtherCatScanSafeScan a segment and report the SubDevices found
EtherCatIdentifySafeIdentify SubDevices by vendor and product code
EtherCatSdoReadSafeRead a Service Data Object from a SubDevice
EtherCatSdoWriteHard stopWrite a Service Data Object to a SubDevice
EtherCatReadIoSafeRead process data from the live I/O session
EtherCatWriteIoHard stopWrite process data, which energises physical outputs
EtherCatPulseIoHard stopPulse an output for a bounded duration
EtherCatGoOperationalHard stopBring the segment to the OP state
EtherCatStopIoMutatingStop the live I/O session and release outputs

EtherCAT tools drive physical outputs

EtherCatWriteIo, EtherCatPulseIo, EtherCatSdoWrite and EtherCatGoOperational are hard-stop tools. They prompt in every permission mode, and --skip-permissions does not waive that. See Permission Model.

The live I/O session

A live I/O session holds physical outputs energised between turns. It appears in /jobs, so you can stop it yourself without the agent's cooperation. If the model gets stuck, you are not reduced to killing the process.

Restricting which interfaces may be acquired

With the ethercat module on, acquiring a segment is already permitted and every attempt prompts. --ethercat-acquire-bus is a restriction, not a grant: pass it to put other interfaces off limits on a host with more than one fieldbus port.

bash
# Only eth1 may be acquired; every other interface is refused
oasis-agent --ethercat-acquire-bus eth1

# Repeat the flag to allow a second
oasis-agent --ethercat-acquire-bus eth1 --ethercat-acquire-bus eth2

Capabilities

EtherCAT is raw layer 2, so it needs CAP_NET_RAW to open the socket and CAP_NET_ADMIN to read the interface MTU. oasis-agent install and update grant these automatically: as root, via sudo where no password is needed, or by prompting on the terminal.

Where none of those are possible the install still succeeds and prints the setcap command to run. See Installing & Updating.

oasis-agent doctor reports whether the running process and the installed binary have them. Modbus and OPC UA are ordinary TCP and need none of this.

Device names

Vendor identification needs no configuration. The ETG's published vendor register is compiled into the binary, so EtherCatIdentify names the brand of essentially any device out of the box.

Product names are not embedded. There are tens of thousands of parts, they run to tens of megabytes, and they are revised constantly. Without configuration, product_name comes back null with a reason and a remedy, never a guess.

Point ethercat_catalogue at a directory of vendor ESI XML files and the parts get names. Those files are usually already on the engineering PC; TwinCAT keeps its library under Config/Io/EtherCAT.

IEC 61131

The IEC 61131 module ships checks and guidance, not tools. It contributes one conformance check covering Structured Text toolchain availability.

Oasis CLI is a build orchestrator, not a toolchain vendor

Structured Text is compiled by a toolchain mutexer deliberately does not carry. Rather than writing ST into a repository that cannot build it, the agent is directed to say so.

If you need ST compilation, supply the toolchain. This module tells you whether it is present and usable.

Enabling packs

Packs are opt-in. Set the modules key in ./.oasis/config.json or ~/.oasis/config.json:

json
{
  "modules": {
    "ethercat": true,
    "opcua": true
  }
}

Only keys present in the modules object are loaded. An unknown key is a hard error, not a silent no-op. A typo fails at startup rather than quietly producing a run with no tools.

A disabled pack registers nothing, contributes nothing to the prompt, and does not affect the cache key.

Confirm what a run actually loaded:

bash
oasis-agent --show-config

Pack configuration keys

Some packs need a path as well as the module toggle. These name a directory an operator sets once, so they live only in the config file. Set them with /config <key> <value> or by editing the file directly.

KeyPackPoints at
ethercat_catalogueEtherCATA directory of vendor ESI XML files, for product-name resolution
checks_catalogueAllA directory of descriptor TOML layered over the built-in check catalogue by check id

How packs affect the cache

The tool schema is part of the prompt prefix the model server caches, so the tool set is part of the cache key.

ConfigurationCache behaviour
Unchanged between runs100% prefix reuse, across turns and across processes
A pack enabled or disabledCold slot; the whole prompt is reprocessed once (~13 k tokens)

The practical rule: decide your pack configuration per project and leave it alone. Toggling packs mid-session is the one routine action that costs a full prefill.

software-defined automation