dimensionalOS / dimensionalOS/dimos

PY api - Custom message types can't be passed to RPCs

Open
#1,965 0 comments 0 reactions 1 assignee View on GitHub

@paul-nechifor is already working on this.

Since May 3, 2026.

api bug
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.