Releases: dimensionalOS/dimos
Release list
Release v0.0.5: Pre-Launch Release
Test pre-release changelog
What's Changed
- Unitree WebRTC implementation on rebased dev by @leshy in #277
- Update ros_observable_topic timeout to 100s by @leshy in #273
- Updated README, more clear on API key requirements and updated go2_ros2_sdk remote by @spomichter in #272
- Release v0.0.4 Patch: readme changes by @spomichter in #292
- Readme patch v0.0.4 by @spomichter in #293
- Development container & CI by @leshy in #278
- env/devcontainer ruff formatting/typing by @leshy in #294
- Global reformat 100 line length by @spomichter in #300
- Global code reformat with ruff by @leshy in #295
- Position/Vector type cleanup & tests by @leshy in #297
- Linelength100 by @leshy in #301
- Auto-delivery of binary data files for testing, rewrite of dev script by @leshy in #298
- pre-commit hooks in dev container & CI, automatic LFS upload by @leshy in #303
- Removed all submodules - Testing by @spomichter in #306
- Fixed v0.0.4 Unitree ROS runfile broken by WebRTC development, Vector.py fixes by @spomichter in #307
- test/mapper by @leshy in #305
- Reduced CI cleanup frequency to PRs only into dev/main by @spomichter in #312
- DimOS Manipulation Framework, ObjectDetectionStream Changes by @spomichter in #308
- Added auto-license header to pre-commit by @spomichter in #336
- Move thread fix for alex planner by @leshy in #334
- base typing cleanup, sensor reply tests+docs by @leshy in #309
- devcontainer docs by @leshy in #338
- ci docs by @leshy in #339
- Add Cerebras Agent by @joshuajerin in #310
- Repo cleanup by @leshy in #340
- noros builds by @leshy in #341
- Update testing_stream_reply.md by @leshy in #342
- ONNX conversions for YOLOv11 and FastSAM by @mdaiter in #350
- Test cicd fake ros change by @spomichter in #361
- Reverted cleanup workflow frequency to on any PUSH due to CICD docker workflow issues by @spomichter in #360
- Trigger docker ros rerun by @spomichter in #363
- Ros CI change detection by @leshy in #364
- trigger full rebuild by @leshy in #365
- Add CLIP ONNX conversion and support, with passing vision and text tests by @mdaiter in #353
- CI fix 3 by @leshy in #367
- ONNX Support for YOLO, SAM2 + Unit tests for CLIP, YOLO, SAM2 by @spomichter in #345
- LFS moved to utils from testing by @leshy in #368
- Contact graspnet integration on pytorch and pyproject build processes setup with cuda/manipulation tags by @spomichter in #370
- data/* deletions by @leshy in #369
- Ci pre-commit and docker builds run in parallel by @leshy in #372
- Ci shared docker cache by @leshy in #371
- Unitree WebRTC integrated with full functionality, remove all ROS dependency, refactored entire robot base class and connection interface, added explore skill by @alexlin2 in #279
- Unitree WebRTC only implementation, Exploration skills [Staging --> Dev] by @spomichter in #379
- Dask lcm multiprocess by @leshy in #377
- DimOS Packaging & Build Improvements for CPU-only, CUDA, Manipulation installations by @spomichter in #394
- Multitree go2 by @leshy in #381
- better LCM system checks, fixes bin/lfs_push by @leshy in #382
- UnitreeSpeak skill over webrtc, Voice Interface added on localhost, Voice interface on mobile device on network by @spomichter in #400
- FIX: multiprocess by @leshy in #402
- Lcmspy cli by @leshy in #404
- changed position type name to pose by @alexlin2 in #358
- WIP: foxglove bridge stub by @leshy in #411
- Create running_without_devcontainer.md by @leshy in #405
- new LCM class format support by @leshy in #417
- Fixed PoseStamped ros_msgs error in dimos-lcm by @spomichter in #457
- Fixes move stream issue, Odom receive issue by @leshy in #456
- Small stream/type fixes for unitree by @leshy in #460
- Local planner, Global Planner, Explore, SpatialMemory working via LCM/Dask Multiprocess by @spomichter in #467
- Added working runfile to Unitreego2Light class by @spomichter in #474
- Point Cloud Filtering and Segmentation, Full 6DOF Object pose estimation, Grasp generation, ZED driver support, Hosted grasp integration by @spomichter in #458
- Stream fixes, Twist, Pose, Quaternion updates by @leshy in #471
- Added self-hosted runner to full CICD by @spomichter in #484
- Full Unitree (Local planner, Explore, SpatialMemory) FakeRTC/WebRTC LCM modules working in self-hosted devcontainer by @spomichter in #487
- Porting types/ LCM msgs/ new LCM types, Transform visualization by @leshy in #477
- Tracking streams lcm dask refactor by @spomichter in #488
- Pytransforms by @leshy in #491
- Fix python and dev docker builds for CICD by @spomichter in #489
- Remove PIL Image Usage by @alexlin2 in #490
- Added missing init.py's to transforms by @spomichter in #493
- Added tofix pytest tag back to addopts by @spomichter in #494
- Added module docs by @spomichter in #495
- SpatialMemory converted to Dask module, input LCM odom and video streams by @spomichter in #481
- Run modules tests only on 16gb runner by @spomichter in #499
- Trigger CI only on PR or push to main/dev by @spomichter in #500
- Added more aggressive cleanup workflows by @spomichter in #501
- Visual Servoing for Pick and Place Demo by @alexlin2 in #476
- Testing run-tests container pull fix and removed modules tests by @spomichter in #505
- Fix permissions in pre-build-cleanup by @spomichter in #508
- Moved pre-build cleanup to build template by @spomichter in #509
- dimos lcm update to main branch latest commit by @leshy in #498
- RPC Kwargs by @leshy in #503
- Transform system, stream convinience features, type checking by @leshy in #504
- Dimoslcm bump by @leshy in #510
- Testing UV builds in docker by @spomichter in #513
- OccupancyGrid, Path types by @leshy in #511
- subscribing to transports/streams from main loop by @leshy in #524
- Alex Lin's version of ROS Nav2 by @alexlin2 in #514
- Agent refactor conversation history by @spomichter in #541
- Exposed optional memory_limit param in dimos core by @spomichter in #540
- Agent refactor by @spomichter in #535
- Validating transforms with ros examples by @leshy in https://github.com/dimensionalOS/dim...
Release v0.0.4: ClaudeAgent thinking models with new physical RobotSkills, vector SpatialMemory for emergent world reasoning, major new RobotSkills
🚀 The Dimensional Framework v0.0.4
The universal framework for AI-native generalist robotics
🧠 Core Enhancement Details
🗺️ Spatial Memory System
SpatialMemory gives robots an emergent understanding of the physical world via a rich embedding and associated metadata. This includes temporality, world geometry, object semantics, physical characteristics, and more.
Key Files and Classes:
/dimos/types/robot_location.py- New structuredRobotLocationtype/dimos/agents/memory/spatial_vector_db.py- Vector database implementation for spatial memory/dimos/agents/memory/image_embedding.py- CLIP-based visual embedding for image similarity/dimos/perception/spatial_perception.py- Semantic spatial perception implementation
Notable Changes:
- Extracted SpatialMemory as a standalone class with modular architecture (PR #264)
- Implemented multi-modal querying by text, image, or location with semantic matching
- Added chromaDB persistence with support for existing memory loading and new memory creation
- Introduced frame filtering based on distance and time thresholds for improved memory quality
- Added rotation vector support as VectorDB metadata for more accurate retrieval (PR #216)
- Implemented RobotLocation tracking to associate names with coordinates
- Created reactive stream processing API for continuous memory building from video
- Added support for semantic text queries for spatial navigation (e.g., "where is the kitchen")
💭 Claude Agent Thinking
Implemented ClaudeAgent with support for continuous thinking blocks with real-time visualization and parallel tool execution. Claude 3.7 thinking models now allow for incredible performance in general spatial reasoning and planning of Robot Skill action primitives, enabling sophisticated skill orchestration, planning, and reasoning capabilities.
Key Files and Classes:
/dimos/agents/claude_agent.py- Streaming API integration for continuous thinking blocks/assets/agent/prompt.txt- Master dimOS prompt for Claude agent
Notable Changes:
- Implemented streaming architecture with real-time thinking block visualization (PR #200)
- Added thinking_budget_tokens parameter for controlling Claude's reasoning depth
- Developed continuous writing to memory.txt as thinking and response chunks arrive
- Created ResponseMessage class with support for thinking_blocks and tool_calls
- Built event handling for streaming API responses
- Parallel/Concurrent tool calling supported with lock on
conversation_history
👁️ Object Detection Stream
Added unified object detection streaming with support for both YOLO and Detic backends, enabling real-time perception integration with LLM agents.
Key Files and Classes:
/dimos/perception/object_detection_stream.py- Main ObjectDetectionStream implementation/dimos/models/Detic/- Added Detic object detection model/dimos/perception/detection2d/detic_2d_det.py- Detic detector implementation/dimos/perception/detection2d/yolo_2d_det.py- YOLO detector implementation/tests/test_object_detection_stream.py- Test file for object detection stream
Notable Changes:
- Added Detic and YOLO support to ObjectDetectionStream (PR #243, PR #239)
- Implemented get_formatted_stream() for easier agent interpretation (PR #261)
- Added integration with LLMAgent via input_data_stream parameter to allow for Agent
Implementation:
object_detector = ObjectDetectionStream(
camera_intrinsics=robot.camera_intrinsics,
min_confidence=min_confidence,
class_filter=class_filter,
transform_to_map=robot.ros_control.transform_pose,
detector=detector,
video_stream=video_stream
)
object_stream = object_detector.get_stream()Agent Integration:
agent = LLMAgent(
input_data_stream=object_detection_stream,
# other parameters...
)🧩 Skills Architecture
Major skills refactoring with standardized interfaces for movement, perception, and navigation.
Key Files and Classes:
/dimos/skills/- New centralized skills directory/dimos/skills/navigation.py- Navigation skills implementation/dimos/skills/kill_skill.py- Skill to terminate running skills/dimos/skills/observe_stream.py- Stream observation skill/dimos/skills/speak.py- Text-to-speech skill/dimos/skills/visual_navigation_skills.py- Visual navigation skills/dimos/skills/rest/rest.py- REST API integration skills
Notable Changes:
- Skills refactor (PR #154) with standardized interface
- Added GenericRestSkill for Basic GET/POST Requests (PR #225)
- Added Speak() skill with enhanced TTS (PR #233)
- Created ObserveStream and KillSkills for Claude thinking agent (PR #183)
🤖 New RobotSkills
🧭 Navigation Skills
- NavigateWithText (
/dimos/skills/navigation.py): General semantic navigation command, uses both SpatialMemory and - NavigateToGoal (
/dimos/skills/navigation.py): Navigates to specific coordinates - GetPose (
/dimos/skills/navigation.py): Gets current robot pose
🏃♂️ Movement Skills
- Move (
/dimos/robot/unitree/unitree_skills.py): Forward movement using velocity commands - Reverse (
/dimos/robot/unitree/unitree_skills.py): Backward movement using velocity commands - SpinLeft (
/dimos/robot/unitree/unitree_skills.py): Rotation using degree commands - SpinRight (
/dimos/robot/unitree/unitree_skills.py): Rotation using degree commands - Wait (
/dimos/robot/unitree/unitree_skills.py): Pauses execution for specified time
👁️ Perception Skills
- ObserveStream (
/dimos/skills/observe_stream.py): Streams observations to agent - FollowHuman (
/dimos/skills/visual_navigation_skills.py): Person tracking and following
🛑 Management Skills
- KillSkill (
/dimos/skills/kill_skill.py): Terminates running skills safely
🔌 API Integration
- GenericRestSkill (
/dimos/skills/rest/rest.py): GET/POST requests to external APIs
🗣️ Interaction
- Speak (
/dimos/skills/speak.py): Text-to-speech with enhanced TTS support
🧭 Navigation & Planning Details
🛣️ Symbolic Navigation
Integrated global and local planners with path tracking and goal orientation, featuring visual navigation to any object and native 2D mapping.
Key Files and Classes:
/dimos/robot/global_planner/- Global path planning implementation/dimos/robot/local_planner/- Local path planning with VFH algorithm/dimos/robot/local_planner/local_planner.py- Base local planner class/dimos/robot/local_planner/vfh_local_planner.py- VFH local planner implementation/dimos/types/costmap.py- Costmap implementation for planning/dimos/types/path.py- Path representation types/dimos/types/vector.py- Native vector type implementation
Notable Changes:
- Improved A* implementation with more conservative parameters (PR #226)
- Introduced navigate to anything in camera view, using Qwen as backbone, falling back to memory map if no object found in frame
- Integrated VFH+ for obstacle avoidance with pure pursuit controller for path tracking
- Implemented dimOS native 2D mapping and global planning (moving away from ROS/Nav2)
- Created dimOS native typing for common data structures (Vector, Costmap, etc.)
🔍 Semantic Navigation
Navigate to named locations or objects using natural language queries.
Key Files and Classes:
/dimos/skills/navigation.py- Implemented BuildSemanticMap and Navigate skills/dimos/skills/visual_navigation_skills.py- Visual navigation implementation
Notable Changes:
- Added NavigateWithText skill (formerly Navigate) for language-based navigation
- Added GetPose and NavigateToGoal skills (PR #229)
- Fixed goal theta orientation for Navigation (PR #227)
- Added Use metric3d for distance estimate for navigate to object skill (PR #235)
⚙️ Hardware & Performance Details
🖥️ Jetson Support
Added compatibility for NVIDIA Jetson with Jetpack 6.2 and CUDA 12.6.
Key Files and Classes:
/docker/jetson/- Jetson-specific Docker configuration/docker/jetson/huggingface_local/- HuggingFace models on Jetson/tests/test_agent_huggingface_local_jetson.py- Jetson-specific tests
Notable Changes:
- Added working Jetson Pytorch/torchvision wheels for CUDA 12.6
- Created Jetson-specific Dockerfile and Docker Compose files
- Added fix_jetson.sh script for ARM/import issues
💾 Model Persistence
Added Docker volume caching for ML models to prevent repeated downloads.
Key Files and Classes:
/docker/unitree/agents_interface/docker-compose.yml- Volume configuration
Notable Changes:
- Added three persistent volumes:
- torch-hub-cache: For PyTorch Hub models (Metric3D)
- iopath-cache: For Detic models
- ultralytics-cache: For YOLO models
- Mounted to respective cache directories to persist downloaded models
🛠️ Developer Experience Details
📊 Visualization
Improved real-time visualization for robot position and planning.
Key Files and Classes:
/dimos/web/websocket_vis/- WebSocket visualization implementation/dimos/web/websocket_vis/server.py- Visualization server
Notable Changes:
- Added WebSocket visualization system (PR #198)
- Improved visualization API to be realtime (PR #207)
- Cleaner global planner API with faster rendering (PR #210)
Released on May 8, 2025
What's Changed
- Update supervisord.conf to output dimos logs to regular terminal by @lukasapaukstys in #153
- Feature: SentenceTransformers implemented as local embedding model for AgentMemory by @spomichter in #166
- DIM-136: Jetson support for running local Agents, models on Jetpack 6.2, CUDA ...
Release v0.0.3: Local Models via CTransformers (GGUF) and HF + Object tracking and Semantic Segmentation with YOLO, Qwen2.5-VL, Metric3D, OpenCV + TTS/STT Support
Enable Local & Remote Hugging Face and GGUF Ctransformer Agents (GPU-Ready)
Introduces Two New Agent Classes:
By @lukasapaukstys
HuggingFaceLocalAgent: Provides local inference capabilities using Hugging Face models. Supports GPU acceleration and is optimized for execution within Docker environments.
Fully tested with:./run.sh hf-localHuggingFaceRemoteAgent: Enables remote inference via the Hugging Face API. Functionality is endpoint-dependent.
Fully tested with:./run.sh hf-remoteCTransformersGGUFAgent: Enables local inference via the CTransformers.
Fully tested with:./run.sh gguf
Running the Agents Locally
To run the agents in a Docker container with GPU (CUDA) support:
-
Comment out all lines in
dimos/robot/__init__.pyto disable default initialization. -
(HuggingFace Local) From the project root, run:
./run.sh hf-local
(GGUF Local) From the project root, run:
./run.sh gguf
Other Changes
- Added licensing headers to newly created files and any existing files that were missing them.
- Added a sample video to the assets folder:
assets/trimmed_video_office.mov - Added a convenience
run.shshell script to the root directory.
Object tracking and Semantic Segmentation with YOLO, Qwen2.5-VL, Metric3D, OpenCV
By @alexlin2
Changes:
- Introduces person following and semantic segmentation in
dimos/perception - Integrates semantic segmentation, monocular depth, rich labels to Agent stack as observable streams
TTS/STT Audio Integrations to Agent stack
By @leshy
Changes
- Created audio stack in
stream/audiowith OpenAI whisper powered TTS/STT - Text streaming out as Observable for consumption by agents or other processes
- Modular pipeline
def stt():
# Create microphone source, recorder, and audio output
mic = SounddeviceAudioSource()
normalizer = AudioNormalizer()
recorder = KeyRecorder(always_subscribe=True)
whisper_node = WhisperNode() # Assign to global variable
# Connect audio processing pipeline
normalizer.consume_audio(mic.emit_audio())
recorder.consume_audio(normalizer.emit_audio())
monitor(recorder.emit_audio())
whisper_node.consume_audio(recorder.emit_recording())
user_text_printer = TextPrinterNode(prefix="USER: ")
user_text_printer.consume_text(whisper_node.emit_text())
return whisper_node
def tts():
tts_node = OpenAITTSNode()
agent_text_printer = TextPrinterNode(prefix="AGENT: ")
agent_text_printer.consume_text(tts_node.emit_text())
response_output = SounddeviceAudioOutput(sample_rate=24000)
response_output.consume_audio(tts_node.emit_audio())
return tts_nodeFull Changelog: https://github.com/dimensionalOS/dimos/commits/v0.0.3
Release v0.0.2: ClaudeAgent, Genesis Docker, Logging, and Direct Movement Velocity Support Updates
Release v0.0.2: ClaudeAgent, Genesis Docker, Logging, and Direct Movement Velocity Support Updates
Version Updates
- pyproject.toml: 0.0.1 -> 0.0.2
ClaudeAgent
- Implemented Claude Agent with input query streaming and system query support. Image support WIP.
- Added skills/tool calling capabilities with thinking model integration
- Introduced
run_observable_query()helper method in base LLMAgent - Enhanced web interface integration for input queries
- Improved handling of Pydantic generic classes in observable query
- Streamlined text streaming for Agents using FastAPIServer
- Fixed system query handling and initialization
Robot Control & Skills Framework
- Re-implemented direct movement velocity controls in ROSControl
- Added new Robot skill for
move_vel()functionality
Logging & Infrastructure
- Standardized logging system with
DIMOS_LOG_LEVELenvironment variable - Fixed debug message handling and logger configuration
- Cleaned up terminal output and removed redundant logging
- Added standardized test file headers
Docker & Simulation
- Added support for Genesis simulator alongside Isaac
- Created separate folders for simulation docker files
- Updated Docker configurations for both simulators
- Changed web server interface address from localhost to 0.0.0.0