OctoMY API Reference

Ready-to-run robot software for hobby robotics.

Welcome to the OctoMY API documentation. This reference covers the C++ classes and interfaces that make up the OctoMY robotics platform.

Overview

OctoMY is an open-source robotics platform built on Qt that enables communication between robots (Agents), controllers (Remotes), coordination servers (Hubs), and cloud discovery services (Zoo).

Node Types

OctoMY uses four node types that communicate over encrypted channels:

  • Agent - Robot node with actuators and sensors
  • Remote - Thin client for remote control (phone/tablet)
  • Hub - Coordination server with LLM services
  • Zoo - Cloud services for NAT traversal and discovery

Foundation Layer

Core infrastructure libraries that everything depends on.

libutil - Core Utilities

Namespace-based utility functions for common operations.

  • Namespaces: utility::time, utility::string, utility::file, utility::network, utility::color, utility::random, utility::graphics, utility::data, utility::ui, utility::concurrent

libuptime - Runtime Safety

Entry-point guards and debugging utilities.

  • MethodGate - Detects dangling pointer access in methods
  • FunctionGate - Entry-point guard for free functions
  • OC_ASSERT - Soft assertion macro

libapp - Application Framework

Application lifecycle, configuration, and platform integration.

libid - Identity Management

Node identity, key management, and visual representation.

Identity Core

Identity Widgets

Name Generators

liblog - Logging

Application logging framework.

librng - Random Numbers

Random number generation with multiple algorithms.

libparser - Parsing Utilities

Configuration file parsing.

Security Layer

Cryptographic security and key management.

libsec - Security Framework

Core security constants and utilities.

  • OCTOMY_KEY_BITS - Default RSA key size (4096 bits)
  • OCTOMY_KEY_HASH - Default hash algorithm (SHA-256)
  • KeyStore - Cryptographic key storage

libqpolarssl - Cryptography

Qt wrapper for mbedTLS cryptography.

  • qpolarssl::Hash - Cryptographic hash functions (MD5, SHA, HMAC)
  • qpolarssl::Cipher - Symmetric encryption/decryption (AES, etc.)
  • qpolarssl::Pki - Public key infrastructure (RSA/EC)
  • qpolarssl::Random - CTR-DRBG random generator

Communication Layer

Node-to-node communication and discovery.

libcomms - Core Communications

Communication Management

Transport Carriers

Addresses

Protocol

Couriers

Courier Sets

Blob Transfer

BlobCourier does all blob transfer. It cuts a blob into chunks, acknowledges and retransmits them, and verifies the signature of the complete blob. It keeps the send and receive state of each transfer internally, and identifies a transfer by the blob ID that sendBlob() returns. The former Blob, SendingBlob, ReceivingBlob, chunk handle and BlobFuture classes were removed with the legacy blob courier.

Sync

Messages

  • SensorsMessage - Sensor data message
  • MessageType - Protocol message type enum
  • AgentMode - Robot operating mode enum

Utilities

libpair - Discovery and Pairing

Address Book

Discovery

Pairing UI

Delivery Activities

Connection

libzooclient - Zoo Client

Client for Zoo cloud discovery services.

Node Infrastructure

Common node base classes and client management.

libnode - Base Node

  • Node - Base class for all OctoMY nodes
  • NodeWindow - Base window for node UIs
  • NodeRole - Node communication role (Agent/Control)
  • NodeType - Node type enumeration
  • IContextProvider - Context provider interface

libclient - Client Management

libservice - Service Lifecycle

Service wrapper templates for managing subsystem lifecycles.

Node Implementations

The four main node types.

libagent - Agent Node

Robot node that controls actuators and sensors.

libremote - Remote Node

Thin client for controlling agents.

libhub - Hub Node

Coordination server with LLM services.

libzoo - Zoo Server

Cloud discovery and NAT traversal services.

Client Libraries

libagentclient

  • AgentClient - Client for connecting to Agent nodes
  • AgentClientWidget - Agent client control UI
  • AgentConnectionWidget - Connection status display

libremoteclient

  • RemoteClient - Client for connecting to Remote nodes
  • RemoteClientWidget - Remote client control UI

libhubclient

UI Framework

User interface widgets and activities.

libwidgets - Core Widgets

Activity Framework

Activities

Trust & Verification

Peer & Network

Input Widgets

Visual Widgets

Layout & Navigation

Node Control

Flight Instruments (HUD)

Hex Editor

libstyle - Styling

Custom Qt styling.

  • OctoStyle - Custom Qt style based on Fusion
  • OctoStylePlugin - Style plugin loader

libsplash - Splash Screen

Startup splash screen.

libsplitter - Split Panes

Split-pane interface framework.

libscreen - Screen Management

Multi-monitor display management.

libres - Resources

Qt resource management.

libdebug - Debug Widgets

Development debugging widgets.

Hardware Layer

Robot hardware control and sensors.

libhardware - Hardware Abstraction

Core

Controllers

  • Controller - The single robot controller (libfixo); it replaced the controller factory and the IController interface
  • Agent - Controller lifecycle management, which ControllerHandler did before

Controller UI

Templates

Actuators

Serial Ports

Lobes - Locomotion

A lobe changes control intent into actuator output. The liblobe library and its per-type lobe and widget classes were removed. A lobe is now a firmware component in libfixo, and the Controller compiles the lobes of a Preset into the firmware.

  • Lobe - A lobe that a preset lists by type and name
  • FixoLobeTypeRegistry - Registry of the available lobe types; it replaced LobeFactory
  • LobeManager - Fixo studio page that lists and edits lobe types
  • DifferentialDriveLobe - Wheeled and tracked drive
  • SteeringThrottleLobe - Steering servo and throttle (RC car)
  • LeggedGaitLobe - Trot gait for four-leg and six-leg robots

libnumex - Controller Serial Protocol

The serial protocol between the host and the controller firmware. It replaced the ArduMY protocol, and the libardumy library was removed. The host does not send the actuator configuration at run time: the Controller compiles it into the firmware. Only actuator values travel on the link, each batch led by its actuator enable bits.

Board Pins

Protocol

libpuppet - Robot Animation

Robot animation and pose control.

Poses

Name Mapping

Gait Control

Expression

Stanza

Sensing & Perception

Camera, audio, and sensor processing.

libvideo - Video/Camera

Camera and media handling.

libaudio - Audio

Audio synthesis and utilities.

  • DelayLine - Template delay buffer for reverb effects
  • Dribble - Warbling tone generator
  • Noise - Smoothed random value generator

libvoice - Voice

Text-to-speech synthesis.

libgps - GPS

GPS encoding and location services.

  • TetraGPSEncoder - Tetrahedral GPS coordinate encoding
  • GPSPosition - GPS coordinate with timestamp

libhaar - Face Detection

Haar cascade object detection.

libqr - QR Codes

QR code generation.

  • qrcodegen::QrCode - Complete QR code generation
  • qrcodegen::QrSegment - Data segment with encoding mode
  • qrcodegen::BitBuffer - Bit buffer for data accumulation

libzbar - Barcode Scanning

Barcode scanning support.

  • QtIconv - Qt-based iconv character encoding replacement

Behavior & Planning

Robot behavior scripting and automation.

libplan - OPAL Language

Robot behavior plans.

Core

Editor

Book

libeval - Expression Evaluation

Mathematical expression evaluator.

  • ExpressionEvaluator - High-level evaluation API
  • CompiledExpression - Compiled expression
  • ExpressionContext - Variable and function context
  • FunctionRegistry - Registry of callable functions
  • ASTBuilder, ASTNode - Abstract syntax tree
  • Tokenizer, Token - Lexical analysis

libtrigger - Event System

Event-driven automation system.

Core

Conditions

Actions

A trigger has no action classes. When its conditions hold, it runs its TaskPlan (libopal). The former action hierarchy, with its action factory and action context, was removed, and a stored action list is changed into an equivalent task plan when it loads.

Testing & Automation

Testing infrastructure and UI automation.

libuiautomation - UI Automation

UI automation and testing tools.

Core

Targets

Snapshots

UI

UI Scripts

libmocknode - Mock Testing

Mock node testing infrastructure.

Core

Personalities

Constellations

libtest - Test Utilities

Testing utilities and mock objects.

Communication Testing

Stress Testing

  • Stress - CPU/memory stress coordinator
  • CPUBurner - Adaptive CPU load generator
  • MEMTrasher - Memory pressure generator
  • GLStressWidget - OpenGL stress test widget

Mock Objects

Graphics & Visualization

3D rendering and visualization tools.

libglt - OpenGL Tools

OpenGL utilities.

  • GLContext - OpenGL context and surface wrapper
  • GLErrors - OpenGL error handling utilities

libconstruct - 3D Rendering

3D rendering framework with Qt RHI.

  • Camera, Scene, RhiContext - Core rendering
  • ConstructWidget, ConstructShell - Qt RHI widget integration
  • Layer, CubeNode, TriNode, TexTriNode, ShapeNode - Scene nodes
  • GroundPlane, IsoSurfaceNode - Special renderers
  • InputHandler - Camera navigation
  • GeometryGenerator - Procedural mesh generation

libd3 - Node Graph Editor

3D node graph editor and isosurface visualization.

Graph

  • Graph - Node/connection graph container
  • Node (d3) - 3D graph node with physics
  • Connection - Edge between nodes
  • Tri - Triangle connecting three nodes
  • NodeView - OpenGL graph renderer and editor

Isosurface

  • MarchingCubesWidget - Marching cubes renderer
  • ChunkWidget - Compute shader marching cubes
  • Chunk - Voxel chunk with GPU buffers
  • HeightMap, HeightWidget - Height field visualization
  • Blobs, Bars, Pond, Birth, Shape - Density fields

libmarkdown - Markdown

Markdown editing and rendering.

libmap - Geographic Maps

Geographic map display (QMapControl).

Core

Adapters

Geometries

Storage & Persistence

Data storage and persistence.

libstore - Data Storage

Data persistence backends.

  • DataStore - Legacy transactional file storage
  • JsonAsyncBackend - JSON file storage backend
  • StorageEvent - Async operation with completion tracking

Web & Networking

HTTP client/server and web services.

libweb - HTTP

HTTP client/server and templating.

libclt - OpenCL

OpenCL compute with OpenGL interop.

  • CLWorker - OpenCL compute worker base class
  • CLWorkerFactory - Factory for CLWorker instances
  • CLThreadManager - Multi-device worker thread management
  • CLGLView - OpenGL widget with OpenCL rendering
  • CLGLViewRenderer - Abstract renderer interface

Miscellaneous

Additional utilities.

libgibber - Text Generation

Placeholder text generation.

  • Gibber - Placeholder text generation

libcommand - Commands

Command-line interface framework.

Getting Started

See the OctoMY Documentation for tutorials and guides.

Project Information

In this section