Skip to content

Release testing plan

Paul Nechifor edited this page May 8, 2026 · 3 revisions

This is the test plan for future releases.

Tests

git checkout main
CYCLONEDDS_HOME=/opt/cyclonedds uv sync --all-extras

# Fast tests
uv run pytest

# Entire suite (fast, slow, mujoco). Everything should work. Make sure your env is set up.
uv run pytest -m 'not tool'

New Ubuntu install

git clone https://github.com/dimensionalOS/dimos.git
cd dimos
uv sync --all-extras --no-extra dds --no-extra unitree-dds
uv run mypy dimos
uv run pytest
uv run pytest -m 'not (tool or mujoco)'

Test launching multiple blueprints

uv run dimos run unitree-go2 keyboard-teleop

You should get the Keyboard Teleop window and be able to control the robot from there.

When you Ctrl+C dimos, the robot should lay down.

Commanding the robot from rerun

uv run dimos run unitree-go2
  • Click on a point on the 3D view in the Rerun window. The robot should travel there.
  • Control the robot with WASD. (This is a bit finicky.)

Commanding the robot from command-center

Agentic movement skills

uv run dimos run unitree-go2-agentic
uv run humancli

And tell it to "move forward 2 meters" and then "move back 3 meters"

dimos agent-send

uv run dimos run unitree-go2-agentic
# Should show up in humancli too
uv run dimos agent-send "move forward 4 meters"

# You should hear it speak in the computer's speakers.
uv run dimos agent-send "say hello"

Audio commands

uv run dimos run unitree-go2-agentic
  • Go to http://localhost:5555/
  • Click on the microphone and say "please rotate 180 degrees" and watch it turn back. You should also see the command displayed in humancli.

Python API

export $(grep -v '^#' .env | xargs)
uv run python

...in the Python REPL:

from dimos import Dimos

app = Dimos(n_workers=8)

# Run a blueprint by name.
app.run("unitree-go2-agentic")

# Call skills.
app.skills.relative_move(forward=2.0)

# List all available skills.
print(app.skills)

# Access a module directly.
app.ReplanningAStarPlanner

# Access a private variable.
print(app.ReplanningAStarPlanner._planner._safe_goal_clearance)

# Add another module dynamically.
from dimos.robot.unitree.keyboard_teleop import KeyboardTeleop
app.run(KeyboardTeleop)

# Stop everything.
app.stop()

Close that and start a connect REPL.

Start the blueprint outside:

uv run dimos run unitree-go2-agentic
from dimos import Dimos
app = Dimos.connect()
app.skills.relative_move(forward=2.0)

# Grab the image.
img = app.peek_stream("color_image", 1.0)

# Display it in a window.
import cv2, numpy as np
cv2.imshow("color_image", np.array(img.data))
cv2.waitKey(0)

app.stop()

Follow person

uv run dimos run unitree-go2-agentic
sleep 10; uv run dimos agent-send "follow the person wearing ..."

Sport commands

uv run dimos run unitree-go2-agentic
uv run dimos agent-send "show the heart symbol"

CLI sanity

uv run dimos list
uv run dimos show-config
uv run dimos run unitree-go2 --help
  • Each prints sensible output, no tracebacks.

Replay mode (no hardware)

uv run dimos --replay run unitree-go2
uv run dimos --replay --replay-db go2_bigoffice run unitree-go2-memory

MuJoCo simulation

uv run dimos --simulation run unitree-go2
uv run dimos --simulation run unitree-go2-agentic
uv run dimos --simulation run unitree-g1-sim

demo-camera

uv run dimos run demo-camera
  • Webcam feed appears in rerun.

Daemon lifecycle

uv run dimos run unitree-go2-agentic --daemon
uv run dimos status
uv run dimos log -n 50
uv run dimos log -f   # Ctrl+C
uv run dimos agent-send "say hello"
uv run dimos restart
uv run dimos stop

MCP CLI

uv run dimos run unitree-go2-agentic --daemon
uv run dimos mcp list-tools
uv run dimos mcp call relative_move --arg forward=0.3
uv run dimos mcp call observe
uv run dimos mcp status
uv run dimos mcp modules
uv run dimos stop

lcmspy

Run any blueprint, then in another terminal:

uv run lcmspy

dtop

uv run dimos --dtop run unitree-go2
uv run dtop

Clone this wiki locally