feat(cli): add interactive RPC shell - #3236
Open
TomCC7 wants to merge 30 commits into
Open
Conversation
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
TomCC7
commented
Jul 28, 2026
TomCC7
commented
Jul 28, 2026
# Conflicts: # dimos/robot/cli/dimos.py # uv.lock
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #3236 +/- ##
==========================================
+ Coverage 74.90% 75.01% +0.11%
==========================================
Files 1114 1118 +4
Lines 106086 106527 +441
Branches 9665 9690 +25
==========================================
+ Hits 79461 79910 +449
+ Misses 23816 23796 -20
- Partials 2809 2821 +12
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
TomCC7
marked this pull request as ready for review
July 28, 2026 06:45
TomCC7
requested review from
Dreamsorcerer,
leshy,
mustafab0,
paul-nechifor and
spomichter
as code owners
July 28, 2026 06:45
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contribution path
Problem
DimOS has no general interactive interface for discovering deployed modules and
calling their RPC methods. MCP only exposes skills and requires an
McpServer,which makes it a poor fit for low-level debugging.
Attaching during coordinator startup also had a race: discovery published one
ping and waited for that request. If the coordinator subscribed after the
publication, the shell could not recover when the coordinator became ready.
Solution
Shell and introspection APIs
dimos shellcommand backed by IPython.guide(),modules(),rpcs(), anddescribe()helpers, plus structured module/RPC metadata through
app.exact instance lookup when multiple modules share a class.
McpServerisrequired.
These are additive inspection APIs. RPC invocation still uses the existing path
and payload types.
Lifecycle changes
ModuleCoordinator.loop()now starts thecoordinator RPC service instead of the two
dimos runbranches.loop()isthe shared entrypoint for foreground, daemon, and direct
blueprint.build().loop()launches, so all three become attachable. Daemonstartup remains post-fork, shutdown remains in
loop()'sfinallyblock,and an
RLockkeeps explicit startup idempotent and serialized with stop.CoordinatorRPC.connect()retries ping every 250 mswithin the existing five-second budget. A pub/sub ping sent before the
coordinator subscribes is lost; retrying the request fixes that race without
adding an unbounded wait.
RPCSpec.call_sync()unsubscribes its local responsecallback on timeout. Retries otherwise leave unreachable callbacks in the
shared response map. This does not invoke or cancel the remote RPC, and the
successful-call path is unchanged.
This PR does not change MCP or skill exposure, RPC payload serialization, module
shutdown order, or RPC filtering/confirmation behavior.
How to Test
Start the test blueprint:
In another terminal:
Manual test session:
The foreground blueprint then stopped cleanly with Ctrl-C.
Automated validation after merging current
main:AI assistance
Codex with GPT-5 helped explore the existing coordinator and RPC abstractions,
draft the design, implement the change, write tests and documentation, and run
the automated and manual validation. The author reviewed the design decisions
through an interactive question-and-answer process.
Checklist