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
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.
Activity Framework
Activities
Trust & Verification
Peer & Network
Input Widgets
Visual Widgets
Layout & Navigation
Node Control
Flight Instruments (HUD)
- HUDWidget - Tabbed flight instrument display
- WidgetSix - Classic six-pack layout
- WidgetPFD, WidgetNAV, WidgetADI
- WidgetALT, WidgetASI, WidgetHSI
- WidgetVSI, WidgetTC
- LayoutSquare - Square aspect ratio layout
- qfi_PFD, qfi_NAV, qfi_ADI
- qfi_ALT, qfi_ASI, qfi_HSI
- qfi_VSI, qfi_TC
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.
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.
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.