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:
| Package | apt | Covers |
|---|---|---|
robotops_trace_rclcpp | ros-<distro>-robotops-trace-rclcpp | rclcpp executor callbacks + rclcpp_action goal-UUID stitching |
robotops_trace_rclpy | ros-<distro>-robotops-trace-rclpy (+ PyPI) | rclpy callbacks + actions |
robotops_trace_bt_cpp | ros-<distro>-robotops-trace-bt-cpp | BehaviorTree.CPP ticks (Nav2 + MoveIt Pro) |
robotops_trace_ros2_control | ros-<distro>-robotops-trace-ros2-control | controller / FollowJointTrajectory boundary |
robotops_trace_moveit ★ | ros-<distro>-robotops-trace-moveit | MoveIt internal-async capture/restore (carries a not-yet-upstream patch) |
robotops_trace_semconv | ros-<distro>-robotops-trace-semconv | the 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:
- Rust library on crates.io
- npm package
@robotops/rosql - CLI:
curl -fsSL https://rosql.org/install.sh | sh - WASM (browser-native REPL at rosql.org)
- gRPC server
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