Skip to main content

Related Libraries

TraceHouse is built on several open source libraries. Here's what each one does and where to find it.


RobotOps Trace SDK​

The SDK is the source of distributed traces. It runs inside your nodes, produces deterministic in-process spans, and exports them to the agent over a local socket (OTLP/HTTP + protobuf). Three company-branded, purpose-scoped repos (the dd-trace model):

robotops-trace-cpp​

Repository: github.com/RobotOpsInc/robotops-trace-cpp

What it is: The C++17 SDK core — RAII span guard (ROBOTOPS_TRACE()), thread-local context, async capture/restore, OTLP exporter, and RobotOps::init(). Transport-agnostic and buildable without ROS (plain-CMake fallback), so instrumentation survives beyond ROS.

Distributes to: apt — ros-<distro>-robotops-trace-cpp

License: Apache-2.0

robotops-trace-python​

Repository: github.com/RobotOpsInc/robotops-trace-python

What it is: The Python ≥3.10 SDK core — @robotops.trace, with robotops.span(), contextvars propagation, async helpers, OTLP exporter, and robotops.init(). No ROS dependency.

Distributes to: PyPI (robotops-trace; import name robotops) + apt (ament_python).

:::note PyPI lane: coming soon The PyPI packages are not published yet — the PyPI org is being set up. The apt (dev channel) C++ lane is live today. Track the PyPI lane on the Instrumentation page. :::

License: Apache-2.0

robotops-trace-integrations​

Repository: github.com/RobotOpsInc/robotops-trace-integrations

What it is: A monorepo of framework hooks, each shipped as its own à-la-carte package:

PackageaptCovers
robotops_trace_rclcppros-<distro>-robotops-trace-rclcpprclcpp executor callbacks + rclcpp_action goal-UUID stitching
robotops_trace_rclpyros-<distro>-robotops-trace-rclpy (+ PyPI)rclpy callbacks + actions
robotops_trace_bt_cppros-<distro>-robotops-trace-bt-cppBehaviorTree.CPP ticks (Nav2 + MoveIt Pro)
robotops_trace_ros2_controlros-<distro>-robotops-trace-ros2-controlcontroller / FollowJointTrajectory boundary
robotops_trace_moveit ★ros-<distro>-robotops-trace-moveitMoveIt internal-async capture/restore (carries a not-yet-upstream patch)
robotops_trace_semconvros-<distro>-robotops-trace-semconvthe shared robot.* / ros.* semantic conventions

License: Apache-2.0

See Instrumentation for how to install and turn these on.


ROSQL​

Repository: rosql.org · github.com/RobotOpsInc/rosql

What it is: An open source SQL-like query language for querying ROS2 telemetry — traces, logs, and metrics — with first-class knowledge of ROS2 concepts (nodes, topics, actions, message causality). ROSQL powers the analysis and alerting features in TraceHouse.

Distributions:

License: Apache-2.0

Example query:

FROM traces
WHERE ros.node LIKE '/arm_%'
AND duration > 10ms
SINCE 1h
ORDER BY duration DESC
LIMIT 50

robotops_config​

Repository: github.com/RobotOpsInc/robotops_config

What it is: The shared configuration schema for TraceHouse, defined as Protocol Buffers. It is the source of truth for configuration consumed by robot-agent. The repo auto-generates Rust and C++ SDKs from the proto files, and publishes a documented default YAML (/etc/robotops/config.yaml).

Configuration sections: Robot Identity, Deployment Version, Authentication, Discovery, Metrics, Subscriptions, TF Monitoring, Logging.

Default config path: /etc/robotops/config.yaml (override with ROBOTOPS_CONFIG_PATH).

Install:

sudo apt install ros-jazzy-robotops-config

License: Apache-2.0


rmw_robotops (deprecated)​

:::caution Deprecated — superseded by the Trace SDK rmw_robotops was the passive tracing path: a content-hash RMW shim enabled with RMW_IMPLEMENTATION=rmw_robotops that correlated traffic at the DDS layer. It has been superseded by the RobotOps Trace SDK, which produces deterministic in-process traces and stitches action hops by goal UUID rather than best-effort content hashing.

It is frozen, not deleted — kept building until the SDK reaches demo-parity — but it is no longer installed by install.sh, no longer documented as the install path, and should not be used for new deployments. New robots should follow the Quickstart. :::

Repository: github.com/RobotOpsInc/rmw_robotops

What it was: A ROS2 RMW implementation wrapping any underlying DDS middleware to propagate trace context through DDS metadata, emitting TraceEvent messages on /robotops/trace_events. Migration path: remove RMW_IMPLEMENTATION=rmw_robotops / ROBOTOPS_UNDERLYING_RMW from your launch env and install the SDK instead.

License: Apache-2.0


robotops_msgs (deprecated)​

Repository: github.com/RobotOpsInc/robotops_msgs

What it is: The ROS2 message package (TraceEvent, TraceContextChange) for the deprecated passive pipeline above. The SDK exports OTLP directly and does not use these messages. Frozen alongside rmw_robotops.

License: Apache-2.0