Dimensional is the modern operating system for generalist robotics. We are setting the next-generation SDK standard, integrating with the majority of robot manufacturers.
With a simple install and no ROS required, build physical applications entirely in python that run on any humanoid, quadruped, or drone.
Dimensional is agent native -- "vibecode" your robots in natural language and build (local & hosted) multi-agent systems that work seamlessly with your hardware. Agents run as native modules — subscribing to any embedded stream, from perception (lidar, camera) and spatial memory down to control loops and motor drivers.
![]() | ![]() |
|
SLAM, dynamic obstacle avoidance, route planning, and autonomous exploration — via both DimOS native and ROS Watch video | Detectors, 3d projections, VLMs, Audio processing |
![]() | ![]() |
|
"hey Robot, go find the kitchen" Watch video |
Spatio-temporal RAG, Dynamic memory, Object localization and permanence Watch video |
|
🟩 Unitree Go2 pro/air 🟥 Unitree B1 |
🟨 Unitree G1 |
🟨 Xarm 🟨 AgileX Piper |
🟧 MAVLink 🟧 DJI Mavic |
🟥 Force Torque Sensor |
Important
🤖 Direct your favorite Agent (OpenClaw, Claude Code, etc.) to AGENTS.md and our CLI and MCP interfaces to start building powerful Dimensional applications.
curl -fsSL https://raw.githubusercontent.com/dimensionalOS/dimos/main/scripts/install.sh | bashSee
scripts/install.sh --helpfor non-interactive and advanced options.
To set up your system dependencies, follow one of these guides:
Full system requirements, tested configs, and dependency tiers: docs/requirements.md
uv venv --python "3.12"source .venv/bin/activate
uv pip install 'dimos[base,unitree]'# Replay a recorded quadruped session (no hardware needed)# NOTE: First run will show a black rerun window while ~75 MB downloads from LFS
dimos --replay run unitree-go2# Install with simulation support
uv pip install 'dimos[base,unitree,sim]'# Run quadruped in MuJoCo simulation
dimos --simulation run unitree-go2
# Run humanoid in simulation
dimos --simulation run unitree-g1-sim# Control a real robot (Unitree quadruped over WebRTC)export ROBOT_IP=<YOUR_ROBOT_IP>
dimos run unitree-go2| Run command | What it does |
|---|---|
dimos --replay run unitree-go2 | Quadruped navigation replay — SLAM, costmap, A* planning |
dimos --replay --replay-dir unitree_go2_office_walk2 run unitree-go2-temporal-memory | Quadruped temporal memory replay |
dimos --simulation run unitree-go2-agentic-mcp | Quadruped agentic + MCP server in simulation |
dimos --simulation run unitree-g1 | Humanoid in MuJoCo simulation |
dimos --replay run drone-basic | Drone video + telemetry replay |
dimos --replay run drone-agentic | Drone + LLM agent with flight skills (replay) |
dimos run demo-camera | Webcam demo — no hardware needed |
dimos run keyboard-teleop-xarm7 | Keyboard teleop with mock xArm7 (requires dimos[manipulation] extra) |
dimos --simulation run unitree-go2-agentic-ollama | Quadruped agentic with local LLM (requires Ollama + ollama serve) |
Full blueprint docs: docs/usage/blueprints.md
The dimos CLI manages the full lifecycle — run blueprints, inspect state, interact with agents, and call skills via MCP.
dimos run unitree-go2-agentic-mcp --daemon # Start in background
dimos status # Check what's running
dimos log -f # Follow logs
dimos agent-send "explore the room"# Send agent a command
dimos mcp list-tools # List available MCP skills
dimos mcp call relative_move --arg forward=0.5 # Call a skill directly
dimos stop # Shut downFull CLI reference: docs/usage/cli.md
See below a simple robot connection module that sends streams of continuous cmd_vel to the robot and receives color_image to a simple Listener module. DimOS Modules are subsystems on a robot that communicate with other modules using standardized messages.
importthreading, time, numpyasnpfromdimos.core.blueprintsimportautoconnectfromdimos.core.coreimportrpcfromdimos.core.moduleimportModulefromdimos.core.streamimportIn, Outfromdimos.msgs.geometry_msgsimportTwistfromdimos.msgs.sensor_msgsimportImage, ImageFormatclassRobotConnection(Module):
cmd_vel: In[Twist]
color_image: Out[Image]
@rpcdefstart(self):
threading.Thread(target=self._image_loop, daemon=True).start()
def_image_loop(self):
whileTrue:
img=Image.from_numpy(
np.zeros((120, 160, 3), np.uint8),
format=ImageFormat.RGB,
frame_id="camera_optical",
)
self.color_image.publish(img)
time.sleep(0.2)
classListener(Module):
color_image: In[Image]
@rpcdefstart(self):
self.color_image.subscribe(lambdaimg: print(f"image {img.width}x{img.height}"))
if__name__=="__main__":
autoconnect(
RobotConnection.blueprint(),
Listener.blueprint(),
).build().loop()Blueprints are instructions for how to construct and wire modules. We compose them with
autoconnect(...), which connects streams by (name, type) and returns a Blueprint.
Blueprints can be composed, remapped, and have transports overridden if autoconnect() fails due to conflicting variable names or In[] and Out[] message types.
A blueprint example that connects the image stream from a robot to an LLM Agent for reasoning and action execution.
fromdimos.core.blueprintsimportautoconnectfromdimos.core.transportimportLCMTransportfromdimos.msgs.sensor_msgsimportImagefromdimos.robot.unitree.go2.connectionimportgo2_connectionfromdimos.agents.agentimportagentblueprint=autoconnect(
go2_connection(),
agent(),
).transports({("color_image", Image): LCMTransport("/color_image", Image)})
# Run the blueprintif__name__=="__main__":
blueprint.build().loop()- Modules
- LCM
- Blueprints
- Transports — LCM, SHM, DDS, ROS 2
- Data Streams
- Configuration
- Visualization
export GIT_LFS_SKIP_SMUDGE=1
git clone -b dev https://github.com/dimensionalOS/dimos.git
cd dimos
uv sync --all-extras --no-extra dds
# Run fast test suite
uv run pytest dimosPython is our glue and prototyping language, but we support many languages via LCM interop.
Check our language interop examples:





