Skip to content

implement rerun bridge DIM-1125#3066

Open
bogwi wants to merge 5 commits into
mainfrom
danvi/feat/rerun-bridge
Open

implement rerun bridge DIM-1125#3066
bogwi wants to merge 5 commits into
mainfrom
danvi/feat/rerun-bridge

Conversation

@bogwi

@bogwi bogwi commented Jul 20, 2026

Copy link
Copy Markdown
Member

Contribution path

  • Small, safe change that does not need a tracking issue
  • Linked issue or discussion: DIM-XXX / #XXX / URL

Problem

Solution

How to Test

AI assistance

Checklist

  • This PR is scoped to one issue or clearly stated problem.
  • I ran the relevant checks (uv run pytest, pre-commit) for the files I changed.
  • I have reviewed and understood every line in this PR.
  • I disclosed AI assistance above.
  • I have read and approved the CLA.

@greptile-apps

greptile-apps Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a native Rerun bridge for high-rate sensor messages. The main changes are:

  • Route Image and PointCloud2 traffic through a Rust bridge.
  • Keep selected heavy topics on the Python callback path.
  • Add LCM and Zenoh filtering, decoding, and native CI coverage.

Confidence Score: 4/5

This should be fixed before merging.

  • Custom topic_to_entity mappings can prevent configured Python heavy-topic callbacks from receiving messages.
  • Default exact and Glob routing paths are covered by the updated bridge tests.

dimos/visualization/rerun/bridge.py

Important Files Changed

Filename Overview
dimos/visualization/rerun/bridge.py Splits heavy-message handling between the native process and Python callbacks, but derives source subscriptions from entity paths.
dimos/protocol/pubsub/impl/zenohpubsub.py Adds heavy-topic namespaces and filtered all-topic subscriptions for Zenoh.
native/rust/dimos-rerun-bridge/src/main.rs Adds native latest-message processing and Rerun logging for Image and PointCloud2 traffic.

Comments Outside Diff (1)

  1. dimos/visualization/rerun/bridge.py, line 1360-1368 (link)

    P1 Custom mappings skip callbacks. The heavy allowlist is built by removing entity_prefix from override entity paths, but _get_entity_path() can instead use topic_to_entity, which may rename or restructure the source topic. For example, a mapper can turn /robot/front/image into world/cameras/front; a callback override for Glob("world/cameras/*") then subscribes Python to /cameras/*, so the transport filter excludes /robot/front/image as native-owned. The configured Python callback is never invoked for that Image or PointCloud2 message. Keep custom-mapped heavy topics on the Python path, or provide an equivalent source-topic mapping to both bridge filters.

Reviews (3): Last reviewed commit: "CI: Upload coverage from the rust job wh..." | Re-trigger Greptile

Comment thread dimos/visualization/rerun/bridge.py Outdated
Comment thread dimos/visualization/rerun/bridge.py
Comment thread dimos/visualization/rerun/bridge.py Outdated
Comment thread dimos/visualization/rerun/bridge.py
@bogwi bogwi added the backport:skip Skip creating a backport to any release branches label Jul 20, 2026
@codecov

codecov Bot commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.46093% with 41 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
dimos/protocol/pubsub/impl/zenohpubsub.py 85.07% 10 Missing ⚠️
dimos/visualization/rerun/bridge.py 86.79% 3 Missing and 4 partials ⚠️
dimos/visualization/rerun/native_bridge.py 83.33% 6 Missing ⚠️
dimos/robot/cli/topic.py 28.57% 5 Missing ⚠️
dimos/protocol/pubsub/spec.py 55.55% 4 Missing ⚠️
dimos/visualization/rerun/test_native_bridge.py 98.12% 2 Missing and 1 partial ⚠️
dimos/protocol/pubsub/impl/webrtc/webrtcpubsub.py 71.42% 1 Missing and 1 partial ⚠️
dimos/visualization/rerun/test_bridge.py 97.89% 1 Missing and 1 partial ⚠️
dimos/core/transport.py 85.71% 0 Missing and 1 partial ⚠️
dimos/protocol/pubsub/impl/lcmpubsub.py 93.33% 0 Missing and 1 partial ⚠️
@@            Coverage Diff             @@
##             main    #3066      +/-   ##
==========================================
+ Coverage   72.35%   73.16%   +0.80%     
==========================================
  Files        1024     1035      +11     
  Lines       92038    93701    +1663     
  Branches     8420     8761     +341     
==========================================
+ Hits        66598    68557    +1959     
+ Misses      23168    22810     -358     
- Partials     2272     2334      +62     
Flag Coverage Δ
OS-ubuntu-24.04-arm 66.20% <72.24%> (+0.79%) ⬆️
OS-ubuntu-latest 68.50% <72.24%> (+0.75%) ⬆️
Py-3.10 68.49% <72.24%> (+0.75%) ⬆️
Py-3.11 68.49% <72.24%> (+0.76%) ⬆️
Py-3.12 68.48% <72.24%> (+0.74%) ⬆️
Py-3.13 68.49% <72.24%> (+0.74%) ⬆️
Py-3.14 68.50% <72.24%> (+0.75%) ⬆️
Py-3.14t 68.49% <72.24%> (+0.74%) ⬆️
SelfHosted-Large 30.03% <26.47%> (-0.09%) ⬇️
SelfHosted-Linux 37.16% <29.18%> (-0.21%) ⬇️
SelfHosted-macOS 36.05% <29.66%> (-0.19%) ⬇️
native-rust 37.59% <80.87%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/conftest.py 82.08% <100.00%> (+0.88%) ⬆️
dimos/core/test_transport.py 100.00% <100.00%> (ø)
dimos/core/transport_factory.py 100.00% <100.00%> (ø)
dimos/e2e_tests/dimos_cli_call.py 57.77% <100.00%> (ø)
dimos/navigation/cmu_nav/main.py 43.42% <ø> (-0.50%) ⬇️
dimos/protocol/pubsub/encoders.py 82.60% <100.00%> (+2.12%) ⬆️
dimos/protocol/pubsub/impl/test_lcmpubsub.py 100.00% <100.00%> (ø)
dimos/protocol/pubsub/impl/test_zenohpubsub.py 98.93% <100.00%> (+0.35%) ⬆️
.../unitree/go2/blueprints/basic/unitree_go2_basic.py 66.66% <ø> (+1.66%) ⬆️
...e/go2/blueprints/navigation/unitree_go2_mls_htc.py 85.00% <ø> (+3.18%) ⬆️
... and 13 more

... and 51 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bogwi
bogwi marked this pull request as draft July 20, 2026 15:20
@bogwi
bogwi marked this pull request as ready for review July 21, 2026 12:44
@bogwi
bogwi requested a review from Dreamsorcerer as a code owner July 21, 2026 12:44
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip Skip creating a backport to any release branches ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant