dimensionalOS / dimensionalOS/dimos
PY api - Custom message types can't be passed to RPCs
@paul-nechifor is already working on this.
Since May 3, 2026.
- Dominant language
- Python
- Stars
- 4.5k
- Forks
- 808
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 233
Description
Calling app.GO2Connection.move(Twist([...], [...]), duration=2.0) raises:
AttributeError: cannot access 'linear'
File "rpyc/core/protocol.py", line 796, in _check_attr
raise AttributeError(f"cannot access {name!r}")
RPyC ships the Twist object to the daemon as a netref, not a pickled copy. When the daemon-side connection.move(twist, duration) does twist.linear.x, that goes back over the wire to the client. The client side of the connection (created in dimos/porcelain/remote_module_source.py) uses RPyC's default VoidService, which has allow_public_attrs=False — so the request to read linear is rejected.
Caveat: in --replay mode the bug doesn't fire because ReplayConnection.move() is a stub that returns True without touching twist.linear. The bug only surfaces when the underlying connection actually reads attributes (real UnitreeWebRTCConnection.move, MujocoConnection.move, etc.).
Synced from DIM-836 by summer
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.