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.
- LogStorage - Memory-mapped daily log file storage
- LogHandler - Qt message handler with formatting
- LogWidget - Scrollable log message view
- LogModel - Qt model for log entries
- LogDevice - QIODevice log output adapter
librng - Random Numbers
Random number generation with multiple algorithms.
- RNG - Base class for random number generators
- MersennePRNG - Mersenne Twister MT19937
- ParkMillerPRNG - Park-Miller linear congruential
- TausPRNG - Tausworthe combined LFSR
- SystemPRNG - Standard library rand() wrapper
- DevRandomRNG - /dev/random (blocking)
- DevURandomRNG - /dev/urandom (non-blocking)
libparser - Parsing Utilities
Configuration file parsing.
- OctomyParseContext - Plan/spec file parsing context
- ParseError - Parse error with location and hint
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
- LocalIdentityStore - Node identity persistence
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
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.
- ZooClient - HTTP client for Zoo discovery services
- WebRequest - HTTP request with timeout handling
- PunchPartner - NAT hole punching address data
- PunchRegistry - Punch partner registry
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.
- ServiceWrapper - Template base class for service wrappers
- LocalIdentityStoreService, AddressBookService, LocalAddressListService
- CommsService, CarrierService, KeyStoreService
- PlanBookService, AgentConfigService, DiscoveryClientService
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.
- ZooServer - HTTP server for NAT traversal
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.
- SplashScreen - Animated splash with progress
- PulsatingLabel - Pulsating animation label
libsplitter - Split Panes
Split-pane interface framework.
- SplitterWidget - Container for splitter panes
- SplitterPane - Individual draggable pane
libscreen - Screen Management
Multi-monitor display management.
- ScreenManager - Display management and window placement
- ScreenSelector - Monitor selection overlay
libres - Resources
Qt resource management.
- InternalResourceManager - Resource browser widget
- ResourceTreeModel - Resource tree data model
- ResourceTreeFilterProxyModel - Resource search filter
Development debugging widgets.
- SimpleTableDebugWidget - Base key-value table display
- CommsDebugWidget, CouriersDebugWidget, CarrierDebugWidget
- DiscoveryClientDebugWidget, PairingDebugWidget, DeliveryDebugWidget
- ServicesDebugWidget, KeyStoreDebugWidget, LocalIdentityDebugWidget
- LocalAddressesDebugWidget, RateCalculatorWidget
Hardware Layer
Robot hardware control and sensors.
libhardware - Hardware Abstraction
Core
Controllers
Controller UI
Templates
Actuators
Lobes
Serial Ports
libmotorics - Locomotion
Locomotion controllers (Lobes).
libardumy - Arduino Protocol
Arduino actuator controller (ArduMY protocol).
Core
Actuator Data
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.
- MediaDevice - Audio/video device representation
- MediaDeviceModel - Qt model for device selection
- MediaDeviceManager - Device enumeration and monitoring
- MediaDeviceSelectorWidget - Device selection combo box
- CameraList - Camera enumeration utility
- CameraWidget - Live camera preview widget
- CameraSettings - Camera parameter storage
- TestImageGenerator - Procedural test pattern generator
- StreamCodec, StreamCodecWidget - Image compression
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.
- VoiceManager - Voice synthesis manager
- SpeechControlWidget - Speech input UI
libgps - GPS
GPS encoding and location services.
- TetraGPSEncoder - Tetrahedral GPS coordinate encoding
- GPSPosition - GPS coordinate with timestamp
libhaar - Face Detection
Haar cascade object detection.
- HaarCascade, HaarStage, HaarWeakClassifier
- HaarFeature, HaarRect, HaarFeatureExtractor
- IntegralImage, HaarPreprocessor
- HaarLoaderXML, HaarSaverXML, HaarCascadeModel
- CameraProcessor - Camera feed processing widget
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
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
- MockNode - Shapeshifting test node (Agent/Remote/Hub)
- MockNodeWindow - Simple mock node window
- MockNodeAppWindow - Full testing window
- MockAppContext - Custom app context with baseDir
- PersonalityManagerWindow - Manager window for personalities
Personalities
- MockPersonality - Test personality configuration
- PersonalityManager - Personality storage and CRUD
Constellations
- Constellation - Group of nodes launched together
- ConstellationMember - Member configuration
- ConstellationManager - Constellation storage
- ConstellationLauncher - Process spawning
libtest - Test Utilities
Testing utilities and mock objects.
Communication Testing
- CommsTester - Comms integration test harness
- UDPTester - UDP send/receive utility
- CommsSignalLogger - Comms signal debug logger
- CourierTester - Courier integration testing
- TestKeys - Pre-generated RSA test keys
Stress Testing
- Stress - CPU/memory stress coordinator
- CPUBurner - Adaptive CPU load generator
- MEMTrasher - Memory pressure generator
- GLStressWidget - OpenGL stress test widget
Mock Objects
- MockCommsCarrier - In-memory transport carrier
- MockCourier - Test message courier
- MockCommsSession - Mock communication session
- MockAddressBook - Test address book
- MockAssociate - Test associate factory
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.
- Markdown - Markdown to HTML converter (Hoedown)
- MarkdownHighlighter - Markdown syntax highlighting
- HTMLHighlighter - HTML syntax highlighting
- markdown::MarkdownEditor - Three-pane Markdown editor
- markdown::CodeEditor - Code editor with completion
libmap - Geographic Maps
Geographic map display (QMapControl).
Core
- qmapcontrol::MapControl - Interactive map widget
- qmapcontrol::MapAdapter - Abstract map tile provider
- qmapcontrol::Layer, qmapcontrol::LayerManager
- qmapcontrol::ImageManager, qmapcontrol::MapNetwork
- GPSPosition - GPS coordinate
- MapLocationEditor, MapEditor - Map editing
Adapters
- qmapcontrol::TileMapAdapter, qmapcontrol::OSMMapAdapter
- qmapcontrol::GoogleMapAdapter, qmapcontrol::BingAPIMapAdapter
- qmapcontrol::WMSMapAdapter, qmapcontrol::EmptyMapAdapter
Geometries
- qmapcontrol::Point, qmapcontrol::Curve, qmapcontrol::LineString
- qmapcontrol::ImagePoint, qmapcontrol::CirclePoint
- qmapcontrol::ArrowPoint, qmapcontrol::InvisiblePoint
- qmapcontrol::FixedImageOverlay
Storage & Persistence
Data storage and persistence.
libstore - Data Storage
Data persistence backends.
- DataStore - Legacy transactional file storage
- JsonAsyncBackend - JSON file storage backend
- HashstoreRecord - Hash-based key-value storage
- HashstoreRecordState - Record state flags
- StorageEvent - Async operation with completion tracking
Web & Networking
HTTP client/server and web services.
libweb - HTTP
HTTP client/server and templating.
- qhttp::server::QHttpServer - Lightweight HTTP server
- qhttp::server::QHttpConnection, QHttpRequest, QHttpResponse
- qhttp::client::QHttpClient, QHttpRequest, QHttpResponse
- Mustache::Renderer - Mustache template renderer
- Mustache::Context - Template variable context
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.
- DockerCommand - Docker container command handler
- LsCommand - Directory listing command handler
Getting Started
See the OctoMY Documentation for tutorials and guides.