
Docs • Hardware • Installation • Agent CLI & MCP • Blueprints • dimTELE: Remote Teleop • Development
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-db go2_bigoffice run unitree-go2-memory | Quadruped temporal memory replay |
dimos --simulation run unitree-go2-agentic | Quadruped agentic + MCP server in simulation |
dimos --simulation run unitree-g1-sim | 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 --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
dimTELE is hosted teleoperation for DimOS robots: operate them remotely from any browser or Quest headset over WebRTC. The robot dials out to a hosted broker, so you don't need to open any inbound ports on the robot's network. It works behind a home router, on Wi-Fi, wired LAN, or cellular.
Open teleop.dimensionalos.com, log in, and grab an API key (API Keys → + New Key).
Run a teleop blueprint on the robot, passing the key as
TRANSPORTS__BROKER__API_KEY:# Robot dials out to the broker with your API key TRANSPORTS__BROKER__API_KEY=<your-api-key> \ dimos run teleop-hosted-go2-transport
Your robot appears under Available Robots — click Connect and drive the robot from the browser.
| Blueprint | Notes |
|---|---|
teleop-hosted-go2-transport | Browser teleop — drive + camera + minimap + click-to-nav (recommended) |
teleop-hosted-go2-multicam | Adds a second RealSense, operator-selectable, mux'd into one video track |
Full guide: dimTELE • WebRTC internals
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.coordination.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 MCP-backed LLM agent for reasoning and action execution.
fromdimos.core.coordination.blueprintsimportautoconnectfromdimos.core.transportimportLCMTransportfromdimos.msgs.sensor_msgsimportImagefromdimos.robot.unitree.go2.connectionimportgo2_connectionfromdimos.agents.mcp.mcp_clientimportMcpClientfromdimos.agents.mcp.mcp_serverimportMcpServerblueprint=autoconnect(
go2_connection(),
McpServer.blueprint(),
McpClient.blueprint(),
).transports({("color_image", Image): LCMTransport("/color_image", Image)})
# Run the blueprintif__name__=="__main__":
blueprint.build().loop()- Modules
- LCM
- Blueprints
- Transports — LCM, SHM, DDS, Zenoh, ROS 2
- Data Streams
- Configuration
- Visualization
export GIT_LFS_SKIP_SMUDGE=1
git clone https://github.com/dimensionalOS/dimos.git
cd dimos
# Run the default test suite (uv run syncs deps on demand; --all-groups# only needed for self-hosted tests / mypy — see docs/development/testing.md)
uv run pytest --numprocesses=auto dimosPython is our glue and prototyping language, but we support many languages via LCM interop.
Check our language interop examples:




