@skill.
βAgent nativeβ means robot capabilities are toolized for an LLM, not that the whole OS is an agent. Skills are the product surface; the agent is one client of them. You are another: every skill can be called from the CLI with no LLM involved.
The control loop
observe() and gets an image back as a tool result. This keeps the LLM loop cheap and makes every observation explicit in the conversation history.
McpClient (dimos/agents/mcp/mcp_client.py) is a Module with exactly three streams:
human_input: In[str]- text fromdimos agent-send, the web chat, orhumancliagent: Out[BaseMessage]- the agentβs responses (text, tool calls, images)agent_idle: Out[bool]- signals when the agent is waiting for input
McpServer, lists the available tools, and exposes them to the LLM. McpServer in turn discovers every @skill-annotated method across all deployed modules via RPC.
Vocabulary
A real agentic stack
dimos run unitree-go2-agentic composes (from dimos/robot/unitree/go2/blueprints/agentic/):
dimos/agents/system_prompt.py) and, more importantly, policy matched to the skills that actually exist on this robot. A G1 stack ships a different prompt because it ships different skills.
Talking to the agent
Models
Where to go next
- Skills & MCP - the
@skillcontract and driving skills without an LLM - Tutorial: drive the Go2 with language - tag places, navigate by description
- Tutorial: add your own skill - from a Python method to a tool the agent calls
