fix: G1 agent RPC wiring and system prompt#1518
Conversation
- Add G1ConnectionBase ABC so skill container RPC calls resolve for both G1Connection (hardware) and G1SimConnection (simulation) - Add G1-specific system prompt describing the humanoid's actual skills (move, arm gestures, mode commands)
Greptile SummaryThis PR fixes two runtime bugs in the G1 agentic simulation: it introduces Key changes:
Issues found:
Confidence Score: 3/5
Important Files Changed
Class Diagram%%{init: {'theme': 'neutral'}}%%
classDiagram
class Module {
<<framework>>
}
class ABC {
<<abstract>>
}
class G1ConnectionBase {
<<abstract>>
+move(twist, duration) None
+publish_request(topic, data) dict
}
class G1Connection {
+ip: str
+connection_type: str
+move(twist, duration) None
+publish_request(topic, data) dict
+start() None
+stop() None
}
class G1SimConnection {
+ip: str
+move(twist, duration) None
+publish_request(topic, data) dict
+start() None
+stop() None
}
class UnitreeG1SkillContainer {
+rpc_calls: ["G1ConnectionBase.move", "G1ConnectionBase.publish_request"]
+move(x, y, yaw, duration) str
+execute_arm_command(command_name) str
+execute_mode_command(command_name) str
}
Module <|-- G1ConnectionBase
ABC <|-- G1ConnectionBase
G1ConnectionBase <|-- G1Connection
G1ConnectionBase <|-- G1SimConnection
UnitreeG1SkillContainer ..> G1ConnectionBase : RPC wiring (MRO-resolved)
|
Add speak_skill() to G1 agentic skills so the agent can use the speak tool referenced in the system prompt. Export G1ConnectionBase in __all__ since it is the public contract for sim and skill wiring.
The test_module_has_start_and_stop test requires all Module subclasses to declare start and stop methods. Add them as abstract methods on the base class to satisfy the test and enforce the contract on subclasses.
Give abstract start()/stop() methods a non-trivial body that chains to Module via super(), fixing 4 safe-super mypy errors.
Release v0.0.11 82 PRs, 10 contributors, 396 files changed. This release brings a production CLI, MCP tooling, temporal memory, and first-class support for coding agents. Dask has been removed. The entire stack now runs from `dimos run` through `dimos stop`. ### Agent-Native Development DimOS is now built to be driven by coding agents. Point OpenClaw, Claude Code, or Cursor at [AGENTS.md](AGENTS.md) and they can build, run, and debug Dimensional applications using the CLI and MCP interfaces directly. - **AGENTS.md** — comprehensive onboarding doc: architecture, CLI reference, skill rules, blueprint quick-reference. Your agent reads this and starts coding. - **MCP server** — all `@skill` methods exposed as HTTP tools. External agents call `dimos mcp call relative_move --arg forward=0.5` or connect via JSON-RPC. - **MCP CLI** — `dimos mcp list-tools`, `dimos mcp call`, `dimos mcp status`, `dimos mcp modules` - **Agent context logging** — MCP tool calls and agent messages logged to per-run JSONL for debugging and replay. ### CLI & Daemon Full process lifecycle — no more Ctrl-C in tmux. - `dimos run --daemon` — background execution with health checks and run registry - `dimos stop [--force]` — graceful shutdown with SIGTERM → SIGKILL fallback - `dimos restart` — replays the original CLI arguments - `dimos status` — PID, blueprint, uptime, MCP port - `dimos log -f` — structured per-run logs with follow, JSON output, filtering - `dimos show-config` — resolved GlobalConfig with source tracing ### Temporal-Spatial Memory Robots in physical space ingest hours of video and lidar. Temporal-spatial memory gives them a human-like understanding of the world — causal object relationships, entity tracking through time and physical space, and the ability to answer complex temporal queries: *Who spends the most time in the kitchen? What time on average do I wake up? Which set of switches toggles the main lights? Who was at the office at 9am last Thursday?* Traditional frame-level embeddings (CLIP, ViT) lose temporal context and don't scale beyond a handful of frames. Video transformers are expensive and don't operate in RGB-D. Dimensional agents work with video + lidar natively, tracking entities across hours and days. ```bash dimos --replay --replay-dir unitree_go2_office_walk2 run unitree-go2-temporal-memory ``` ### Interactive Viewer Custom Rerun fork (`dimos-viewer`) is now the default. Click-to-navigate: click a point in the 3D view → PointStamped → A* planner → robot moves. - Camera | 3D split layout on Go2, G1, and drone blueprints - Native keyboard teleop in the viewer - `--viewer rerun|rerun-web|rerun-connect|foxglove|none` ### Drone Support Drone blueprints modernized to match Go2 composition pattern. `drone-basic` and `drone-agentic` work with replay, Rerun, and the full CLI. ```bash dimos --replay run drone-basic dimos --replay run drone-agentic ``` ### More - **Go2 fleet control** — multi-robot with `--robot-ips` (#1487) - **Replay `--replay-dir`** — select dataset, loops by default (#1519, #1494) - **Interactive install** — `curl -fsSL .../install.sh | bash` (#1395) - **Nix on non-Debian Linux** (#1472) - **Remove Dask** — native worker pool (#1365) - **Remove asyncio dependency** (#1367) - **Perceive loop** — continuous observation module for agents (#1411) - **Worker resource monitor** — `dtop` TUI (#1378) - **G1 agent wiring fix** (#1518) - **Rerun rate limiting** — prevents viewer OOM on continuous streams (#1509, #1521) - **RotatingFileHandler** — prevents unbounded log growth (#1492) - **Test coverage** (#1397), draft PR CI skip (#1398), manipulation test fixes (#1522) ### Breaking Changes - `--viewer-backend` renamed to `--viewer` - Dask removed — blueprints using Dask workers need migration to native worker pool - Default viewer changed from `rerun-web` to `rerun` (native dimos-viewer) ### Contributors @spomichter, @PaulNechifor, @ruthwikdasyam, @summeryang, @MustafaBhadsorawala, @leshy, @sambull, @JeffHykin, @RadientBrain ## Contributor License Agreement - [x] I have read and approved the [CLA](https://github.com/dimensionalOS/dimos/blob/main/CLA.md).
Problem
Two issues with the G1 agentic sim:
G1Connection.movebut the sim blueprint deploysG1SimConnection— RPC wiring silently fails, so move/gesture commands error at runtime.Solution
G1ConnectionBaseABC withmoveandpublish_request. BothG1ConnectionandG1SimConnectionnow extend it. Skill container referencesG1ConnectionBaseso the blueprint MRO-based wiring resolves regardless of which connection is deployed.Breaking Changes
None
How to Test
dimos --simulation run unitree-g1-agentic-simdimos humanclimove(x=0.5, duration=...)without RPC errorsexecute_arm_command("HighWave")Contributor License Agreement