Skip to content

Draft: Migrate Transport to Rust#726

Closed
Kaweees wants to merge 16 commits intodimensionalOS:devfrom
Kaweees:rust
Closed

Draft: Migrate Transport to Rust#726
Kaweees wants to merge 16 commits intodimensionalOS:devfrom
Kaweees:rust

Conversation

@Kaweees
Copy link
Member

@Kaweees Kaweees commented Nov 12, 2025

No description provided.

spomichter and others added 8 commits October 28, 2025 02:28
Release v0.0.5


## What's Changed
* Unitree WebRTC implementation on rebased dev by @leshy in dimensionalOS/dimos#277
* Update ros_observable_topic timeout to 100s by @leshy in dimensionalOS/dimos#273
* Updated README, more clear on API key requirements and updated go2_ros2_sdk remote by @spomichter in dimensionalOS/dimos#272
* Release v0.0.4 Patch: readme changes by @spomichter in dimensionalOS/dimos#292
* Readme patch v0.0.4 by @spomichter in dimensionalOS/dimos#293
* Development container & CI by @leshy in dimensionalOS/dimos#278
* env/devcontainer ruff formatting/typing by @leshy in dimensionalOS/dimos#294
* Global reformat 100 line length  by @spomichter in dimensionalOS/dimos#300
* Global code reformat with ruff by @leshy in dimensionalOS/dimos#295
* Position/Vector type cleanup & tests by @leshy in dimensionalOS/dimos#297
* Linelength100 by @leshy in dimensionalOS/dimos#301
* Auto-delivery of binary data files for testing, rewrite of dev script by @leshy in dimensionalOS/dimos#298
* pre-commit hooks in dev container & CI, automatic LFS upload by @leshy in dimensionalOS/dimos#303
* Removed all submodules - Testing by @spomichter in dimensionalOS/dimos#306
* Fixed v0.0.4 Unitree ROS runfile broken by WebRTC development, Vector.py fixes by @spomichter in dimensionalOS/dimos#307
* test/mapper by @leshy in dimensionalOS/dimos#305
* Reduced CI cleanup frequency to PRs only into dev/main by @spomichter in dimensionalOS/dimos#312
* DimOS Manipulation Framework, ObjectDetectionStream Changes by @spomichter in dimensionalOS/dimos#308
* Added auto-license header to pre-commit by @spomichter in dimensionalOS/dimos#336
* Move thread fix for alex planner by @leshy in dimensionalOS/dimos#334
* base typing cleanup, sensor reply tests+docs by @leshy in dimensionalOS/dimos#309
* devcontainer docs by @leshy in dimensionalOS/dimos#338
* ci docs by @leshy in dimensionalOS/dimos#339
* Add Cerebras Agent by @joshuajerin in dimensionalOS/dimos#310
* Repo cleanup by @leshy in dimensionalOS/dimos#340
* noros builds by @leshy in dimensionalOS/dimos#341
* Update testing_stream_reply.md by @leshy in dimensionalOS/dimos#342
* ONNX conversions for YOLOv11 and FastSAM by @mdaiter in dimensionalOS/dimos#350
* Test cicd fake ros change by @spomichter in dimensionalOS/dimos#361
* Reverted cleanup workflow frequency to on any PUSH due to CICD docker workflow issues by @spomichter in dimensionalOS/dimos#360
* Trigger docker ros rerun by @spomichter in dimensionalOS/dimos#363
* Ros CI change detection by @leshy in dimensionalOS/dimos#364
* trigger full rebuild by @leshy in dimensionalOS/dimos#365
* Add CLIP ONNX conversion and support, with passing vision and text tests by @mdaiter in dimensionalOS/dimos#353
* CI fix 3 by @leshy in dimensionalOS/dimos#367
* ONNX Support for YOLO, SAM2 + Unit tests for CLIP, YOLO, SAM2 by @spomichter in dimensionalOS/dimos#345
* LFS moved to utils from testing by @leshy in dimensionalOS/dimos#368
* Contact graspnet integration on pytorch and pyproject build processes setup with cuda/manipulation tags by @spomichter in dimensionalOS/dimos#370
* data/* deletions by @leshy in dimensionalOS/dimos#369
* Ci pre-commit and docker builds run in parallel by @leshy in dimensionalOS/dimos#372
* Ci shared docker cache by @leshy in dimensionalOS/dimos#371
* Unitree WebRTC integrated with full functionality, remove all ROS dependency, refactored entire robot base class and connection interface, added explore skill by @alexlin2 in dimensionalOS/dimos#279
* Unitree WebRTC only implementation, Exploration skills [Staging --> Dev] by @spomichter in dimensionalOS/dimos#379
* Dask lcm multiprocess by @leshy in dimensionalOS/dimos#377
* DimOS Packaging & Build Improvements for CPU-only, CUDA, Manipulation installations by @spomichter in dimensionalOS/dimos#394
* Multitree go2 by @leshy in dimensionalOS/dimos#381
* better LCM system checks, fixes bin/lfs_push by @leshy in dimensionalOS/dimos#382
* UnitreeSpeak skill over webrtc, Voice Interface added on localhost, Voice interface on mobile device on network by @spomichter in dimensionalOS/dimos#400
* FIX: multiprocess by @leshy in dimensionalOS/dimos#402
* Lcmspy cli by @leshy in dimensionalOS/dimos#404
* changed position type name to pose by @alexlin2 in dimensionalOS/dimos#358
* WIP: foxglove bridge stub by @leshy in dimensionalOS/dimos#411
* Create running_without_devcontainer.md by @leshy in dimensionalOS/dimos#405
* new LCM class format support by @leshy in dimensionalOS/dimos#417
* Fixed PoseStamped ros_msgs error in dimos-lcm by @spomichter in dimensionalOS/dimos#457
* Fixes move stream issue, Odom receive issue by @leshy in dimensionalOS/dimos#456
* Small stream/type fixes for unitree by @leshy in dimensionalOS/dimos#460
* Local planner, Global Planner, Explore, SpatialMemory working via LCM/Dask Multiprocess by @spomichter in dimensionalOS/dimos#467
* Added working runfile to Unitreego2Light class by @spomichter in dimensionalOS/dimos#474
* Point Cloud Filtering and Segmentation, Full 6DOF Object pose estimation, Grasp generation, ZED driver support, Hosted grasp integration by @spomichter in dimensionalOS/dimos#458
* Stream fixes, Twist, Pose, Quaternion updates by @leshy in dimensionalOS/dimos#471
* Added self-hosted runner to full CICD by @spomichter in dimensionalOS/dimos#484
* Full Unitree (Local planner, Explore, SpatialMemory) FakeRTC/WebRTC LCM modules working in self-hosted devcontainer  by @spomichter in dimensionalOS/dimos#487
* Porting types/ LCM msgs/ new LCM types, Transform visualization by @leshy in dimensionalOS/dimos#477
* Tracking streams lcm dask refactor by @spomichter in dimensionalOS/dimos#488
* Pytransforms by @leshy in dimensionalOS/dimos#491
* Fix python and dev docker builds for CICD by @spomichter in dimensionalOS/dimos#489
* Remove PIL Image Usage by @alexlin2 in dimensionalOS/dimos#490
* Added missing __init__.py's to transforms  by @spomichter in dimensionalOS/dimos#493
* Added tofix pytest tag back to addopts by @spomichter in dimensionalOS/dimos#494
* Added module docs by @spomichter in dimensionalOS/dimos#495
* SpatialMemory converted to Dask module, input LCM odom and video streams by @spomichter in dimensionalOS/dimos#481
* Run modules tests only on 16gb runner by @spomichter in dimensionalOS/dimos#499
* Trigger CI only on PR or push to main/dev by @spomichter in dimensionalOS/dimos#500
* Added more aggressive cleanup workflows by @spomichter in dimensionalOS/dimos#501
* Visual Servoing for Pick and Place Demo by @alexlin2 in dimensionalOS/dimos#476
* Testing run-tests container pull fix and removed modules tests by @spomichter in dimensionalOS/dimos#505
* Fix permissions in pre-build-cleanup by @spomichter in dimensionalOS/dimos#508
* Moved pre-build cleanup to build template by @spomichter in dimensionalOS/dimos#509
* dimos lcm update to main branch latest commit by @leshy in dimensionalOS/dimos#498
* RPC Kwargs by @leshy in dimensionalOS/dimos#503
* Transform system, stream convinience features, type checking by @leshy in dimensionalOS/dimos#504
* Dimoslcm bump by @leshy in dimensionalOS/dimos#510
* Testing UV builds in docker by @spomichter in dimensionalOS/dimos#513
* OccupancyGrid, Path types by @leshy in dimensionalOS/dimos#511
* subscribing to transports/streams from main loop by @leshy in dimensionalOS/dimos#524
* Alex Lin's version of ROS Nav2 by @alexlin2 in dimensionalOS/dimos#514
* Agent refactor conversation history by @spomichter in dimensionalOS/dimos#541
* Exposed optional memory_limit param in dimos core by @spomichter in dimensionalOS/dimos#540
* Agent refactor by @spomichter in dimensionalOS/dimos#535
* Validating transforms with ros examples by @leshy in dimensionalOS/dimos#538
* rpc timeout by @leshy in dimensionalOS/dimos#542
* MuJoCo Simulation by @paul-nechifor in dimensionalOS/dimos#539
* Revert "MuJoCo Simulation" by @spomichter in dimensionalOS/dimos#548
* perception refactor to be on parity with old architecture by @alexlin2 in dimensionalOS/dimos#534
* Skill coordinator by @leshy in dimensionalOS/dimos#536
* WIP Mujoco simulation by @paul-nechifor in dimensionalOS/dimos#549
* Fix event loop leak by @paul-nechifor in dimensionalOS/dimos#547
* Correct way to build package directly in non-editable mode, no manife… by @spomichter in dimensionalOS/dimos#551
* Office environment mujoco by @paul-nechifor in dimensionalOS/dimos#554
* Less bandwidth usage on LCM, bug fixed with navigation by @alexlin2 in dimensionalOS/dimos#559
* disabled old agent tests by @leshy in dimensionalOS/dimos#563
* Camera Module Refactor, added image rectification by @alexlin2 in dimensionalOS/dimos#566
* long rpc timeout by @leshy in dimensionalOS/dimos#569
* Twist message for all move command, added keyboard teleop for easy robot control in sim by @alexlin2 in dimensionalOS/dimos#570
* numerical sort for sensor replay by @leshy in dimensionalOS/dimos#564
* 2d detection module by @leshy in dimensionalOS/dimos#567
* Stream timestamp alignment by @leshy in dimensionalOS/dimos#557
* Sharpness for Images by @leshy in dimensionalOS/dimos#560
* Jetson humanoid integration by @spomichter in dimensionalOS/dimos#590
* 2d detection module + Agent2 - yolo demo by @leshy in dimensionalOS/dimos#582
* jetson.md cleanup by @spomichter in dimensionalOS/dimos#602
* Unitree b1 integration with continuous cmd_vel Twist interface, joystick control for testing, C++ UDP server for onboard B1 by @spomichter in dimensionalOS/dimos#601
* Joystick integrated g1 humanoid by @spomichter in dimensionalOS/dimos#603
* Unitree b1 manipulation pose integration by @spomichter in dimensionalOS/dimos#604
* use SHM in Foxglove by @paul-nechifor in dimensionalOS/dimos#607
* CPU isolated shared mem by @mdaiter in dimensionalOS/dimos#589
* silence unnecessary unitree go 2 tricks by @paul-nechifor in dimensionalOS/dimos#615
* Pshm to lcm by @paul-nechifor in dimensionalOS/dimos#616
* Unitree agents2 skill integration paul by @paul-nechifor in dimensionalOS/dimos#617
* Unitree go2 runfile integration tool call issues by @spomichter in dimensionalOS/dimos#605
* gstreamer camera by @paul-nechifor in dimensionalOS/dimos#613
* zed local node by @leshy in dimensionalOS/dimos#623
* ROS Bridge for Unitree G1 and B1 Navigation, Working G1 navigation by @spomichter in dimensionalOS/dimos#610
* B1 ros navigation rebase by @spomichter in dimensionalOS/dimos#626
* Added build directory to gitignore by @yashas-salankimatt in dimensionalOS/dimos#628
* 2D detection module + Pointcloud localization by @leshy in dimensionalOS/dimos#583
* Camera calibration loading by @leshy in dimensionalOS/dimos#629
* Agent2 nav skills by @paul-nechifor in dimensionalOS/dimos#630
* WIP shared mem again by @paul-nechifor in dimensionalOS/dimos#650
* Fix leaks by @paul-nechifor in dimensionalOS/dimos#649
* Fix SHM leak by @paul-nechifor in dimensionalOS/dimos#652
* Suppress echos with counter by @paul-nechifor in dimensionalOS/dimos#653
* Removing websocket vis causing crazy lag by @spomichter in dimensionalOS/dimos#656
* Suppress with UUID by @paul-nechifor in dimensionalOS/dimos#655
* Modules navigate object bbox by @spomichter in dimensionalOS/dimos#654
* Ros bridge test fix by @alexlin2 in dimensionalOS/dimos#660
* video g1 spatial mem + detection - tomerge by @leshy in dimensionalOS/dimos#651
* Update README.md by @spomichter in dimensionalOS/dimos#664
* Image upgrades! Impls for CUDA + numpy, along with an abstraction and full backwards compatibility by @mdaiter in dimensionalOS/dimos#612
* Revert "Image upgrades! Impls for CUDA + numpy, along with an abstraction and full backwards compatibility" by @leshy in dimensionalOS/dimos#665
* Detection second pass by @leshy in dimensionalOS/dimos#662
* CudaImage by @spomichter in dimensionalOS/dimos#671
* Add start/stop to all modules and other resources by @paul-nechifor in dimensionalOS/dimos#675
* forgotten context managers by @paul-nechifor in dimensionalOS/dimos#676
* CUDAImage, NumpyImage, Image implementations with robust backend tests for image operations by @spomichter in dimensionalOS/dimos#680
* CudaImage by @spomichter in dimensionalOS/dimos#677
* alibaba env var fix by @leshy in dimensionalOS/dimos#673
* Rename FakeRTC --> ReplayRTC by @spomichter in dimensionalOS/dimos#681
* Fix websocketvis performance rebase by @spomichter in dimensionalOS/dimos#682
* Alexl ros nav intergration by @alexlin2 in dimensionalOS/dimos#632
* detection pipeline rewrite, embedding, vl model standardization, reid system by @leshy in dimensionalOS/dimos#674
* cli tooling theme by @leshy in dimensionalOS/dimos#687
* Fix spatial memory bug in g1  by @spomichter in dimensionalOS/dimos#689
* Add autoconnect back2 by @paul-nechifor in dimensionalOS/dimos#684
* Add ability to remap module connections name. by @paul-nechifor in dimensionalOS/dimos#698
* Add transport which encodes images as JPEG to improve performance. by @paul-nechifor in dimensionalOS/dimos#693
* New Ruff autofixes by @paul-nechifor in dimensionalOS/dimos#694

## New Contributors
* @joshuajerin made their first contribution in dimensionalOS/dimos#310
* @mdaiter made their first contribution in dimensionalOS/dimos#350
* @yashas-salankimatt made their first contribution in dimensionalOS/dimos#628

**Full Changelog**: https://github.com/dimensionalOS/dimos/commits/v0.0.5
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@Kaweees Kaweees self-assigned this Nov 12, 2025
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there a uv.lock file here too?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stash said we should track it during a call we had. I can remove it if you would like.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah no, I was asking if we need two of them. Should dimos_rs have its own requirements or be in the root? Just asking.


[*.{py,ipynb}]
indent_size = 4
max_line_length = 120
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think these are the values we're using. For example for line-length we have 100 in pyproject.toml

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are the common practice values for each of the respective file extensions, I can change them based on the project specific configurations.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah we use ruff may be overkill to use both ruff and this editorconfig

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ruff doesn't fix the non-python files. Also the pre-commit editorconfig checker is quite fast.

Many people have their editors set to automatically remove trailing whitespace. If we allow it we'll end up with many conflicts from future contributors.

@leshy
Copy link
Contributor

leshy commented Nov 14, 2025

Just missing the rationale on my end,

Pubsub is already a light adapter layer, expecting just publish() and subscribe() from implementations which can be in any language, CPP in case of LCM

What is the expected benefit of bumping an abstraction layer a notch higher to publish() and subscribe() being in rust? Is the idea to gain speed? which computations are you expecting to speed up?

@paul-nechifor
Copy link
Contributor

Just missing the rationale on my end,

Pubsub is already a light adapter layer, expecting just publish() and subscribe() from implementations which can be in any language, CPP in case of LCM

What is the expected benefit of bumping an abstraction layer a notch higher to publish() and subscribe() being in rust? Is the idea to gain speed? which computations are you expecting to speed up?

I believe it started with this C++ rewrite bounty, which was changed to Rust, and the had its scope narrowed https://discord.com/channels/1341146487186391173/1341151189114556417/1436907807738953860

BTW, as a team, we could probably use a bit more formality. Like writing down GitHub issue or maybe liniar.app issues. And every once in a while closing issues/PRs which are unlikely to be done.

@leshy
Copy link
Contributor

leshy commented Nov 15, 2025

Just missing the rationale on my end,
Pubsub is already a light adapter layer, expecting just publish() and subscribe() from implementations which can be in any language, CPP in case of LCM
What is the expected benefit of bumping an abstraction layer a notch higher to publish() and subscribe() being in rust? Is the idea to gain speed? which computations are you expecting to speed up?

I believe it started with this C++ rewrite bounty, which was changed to Rust, and the had its scope narrowed https://discord.com/channels/1341146487186391173/1341151189114556417/1436907807738953860

I'd like to understand to what exactly was the scope narrowed and what's the rationale for above?

I'm asking becuase there is a good direction for exploration of faster language integrations but this doesn't seem to be it

Rust dimos modules could easily talk to py dimos using existing pubsub and would let us operate rust only given rust only modules are used for a particular robot. First candidate would be connection.py for go2, specifically lidar frame processing, idk why would anyone start rewriting python transport adapter layer to another language though

@paul-nechifor
Copy link
Contributor

Just missing the rationale on my end,
Pubsub is already a light adapter layer, expecting just publish() and subscribe() from implementations which can be in any language, CPP in case of LCM
What is the expected benefit of bumping an abstraction layer a notch higher to publish() and subscribe() being in rust? Is the idea to gain speed? which computations are you expecting to speed up?

I believe it started with this C++ rewrite bounty, which was changed to Rust, and the had its scope narrowed https://discord.com/channels/1341146487186391173/1341151189114556417/1436907807738953860

I'd like to understand to what exactly was the scope narrowed and what's the rationale for above?

I'm asking becuase there is a good direction for exploration of faster language integrations but this doesn't seem to be it

Rust dimos modules could easily talk to py dimos using existing pubsub and would let us operate rust only given rust only modules are used for a particular robot. First candidate would be connection.py for go2, specifically lidar frame processing, idk why would anyone start rewriting python transport adapter layer to another language though

I guess this should be discussed on Discord?

@leshy leshy closed this Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants