The Uli SDK infrastructure organizes all computing resources into a clear hierarchical structure of subsystems, nodes, and components. A subsystem serves as a logical grouping of one or more nodes, where each node represents a physical or virtual computing device. In turn, each node hosts the components (applications) that provide services. All communication between these services is conducted through a robust, message-based interaction model.

To facilitate seamless communication, every entity within this hierarchy—subsystems, nodes, and components—is assigned a unique identifier. Messages are then addressed using a tuple in the format (Subsystem ID, Node ID, Comp ID), which precisely specifies both the source and destination. This ID assignment is performed dynamically, analogous to a DHCP server assigning IP addresses. The SDK’s Id Allocator service issues unique IDs to subsystems, and once a subsystem is registered, its internal Subsystem Manager service allocates unique IDs to the nodes within its domain.

For efficiency and performance, all messages are serialized using the Cap’n Proto framework before being transmitted between clients and servers via local sockets, UDP unicast, or UDP multicast. To enable logical network segmentation, messages can be assigned to specific partitions, ensuring that only services within the same partition can communicate. This entire communication system is managed by a Node Manager service running on each node. The Node Manager dynamically builds a routing table by learning from the messages it processes, allowing it to forward traffic based solely on Uli identifiers. This sophisticated mechanism abstracts away the underlying network topology and removes any dependency on IP addresses for inter-service communication.

This robust infrastructure provides the foundation for the system's actual functionality, which is delivered through Services. A Service is the fundamental building block hosted within a component, and while many services perform internal or background tasks, the Uli SDK elevates two specialized concepts to represent the primary, user-facing capabilities of a robotic system: Agents and Data Topics. These constructs provide a clear and powerful abstraction for interacting with any connected asset. Agents represent the active capabilities of the system—the commands and tasks it can execute. Data Topics, in contrast, represent the passive data streams—the states, statuses, and sensor readings that provide situational awareness. The following sections will provide a detailed examination of the architecture and implementation of Services, Agents, and Data Topics.

Services

Within the Uli SDK, a service is the fundamental building block of functionality. Each service's behavior and interface are formally defined by its input/output messages, its internal events, a governing state machine, and a set of configurable parameters. To promote modularity and organization, related services are logically grouped together into a higher-level structure known as a component.

To ensure system-wide discoverability and observability, every component is required to implement two foundational services:

. Service Register: Provides a dynamic discovery mechanism, allowing other services to locate and interact with it at runtime.

. Status Reporter: Offers a standardized interface for querying the component's operational status, health, and other vital metrics.

Agents

Agents are the primary components for executing mission-critical tasks and exercising direct control over system capabilities. The Uli SDK provides a unified interface for the entire agent lifecycle, encompassing discovery, configuration, execution, and real-time status monitoring. Utilizing the subsystem's Agent Discovery service, clients can dynamically query an agent's capabilities, current configuration, and operational status, as well as request exclusive control to perform specific tasks.

This agent-based architecture is particularly vital for integrating advanced AI and Large Language Model (LLM) frameworks. In this context, agents function as the critical bridge between the AI's cognitive processes and real-world execution. They provide the essential tools for task execution, deliver the capability and mission-readiness data that support AI-driven workflow reasoning, and supply the control parameters and feedback required for AI models to learn and optimize their processes.

The unified workflow for accessing and controlling agents is outlined below.

1. The client requests control (exclusive) of the subsyste.

2. The client discovers the authorized agents.

3. The client requests exclusive control of the agent of interest.

4. The client configures the agent.

5. The client controls the agent to run, pause, and cancel.

6. The client queries the status of the agent.

Data Topics

Data Topics are the primary mechanism for categorizing and disseminating real-time data throughout the Uli SDK, operating on a robust publish-subscribe model. Services act as publishers, broadcasting information to these named channels, while clients subscribe to specific topics to receive data streams relevant to their function.

To facilitate this dynamic interaction, the Uli SDK provides a Data Topic Discovery service. This allows publishing applications to formally register their available data topics within the subsystem. Through a single, unified interface, clients can then perform both the discovery of and subscription to these topics, enabling seamless, on-the-fly integration with new data sources.

The unified workflow for discovering and accessing Data Topics is detailed below.

1. The client requests data access (none-exclusive) to the subsystem.

2. The client discovers the authorized data topics.

3. The client subscribes to data topics of interest.

4. The client receives the data topic streams.

© Open Vision Technology, LLC. 2025