Skip to main content

macOS Install (12.6 or newer)

skip
# install homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# install dependencies
brew install gnu-sed gcc portaudio git-lfs libjpeg-turbo python pre-commit

# install uv
curl -LsSf https://astral.sh/uv/install.sh | sh && export PATH="$HOME/.local/bin:$PATH"

Using DimOS as a library

skip
mkdir myproject && cd myproject

uv venv --python 3.12
source .venv/bin/activate

# install everything (depending on your use case you might not need all extras,
# check your respective platform guides)
uv pip install 'dimos[misc,sim,visualization,agents,web,perception,unitree,manipulation,cpu]'

Developing on DimOS

skip
# this allows getting large files on-demand (and not pulling all immediately)
export GIT_LFS_SKIP_SMUDGE=1
git clone https://github.com/dimensionalOS/dimos.git
cd dimos

# Install all dependency groups (tests, lint, …) so mypy + pytest are
# both available. For self-hosted tests, see docs/development/testing.md.
uv sync --all-groups

# type check
uv run mypy dimos

# tests (around a minute to run)
uv run pytest --numprocesses=auto dimos

Transport note for macOS

LCM over UDP can be unreliable on macOS for large or high-rate replay workloads. DimOS defaults the global stream transport to Zenoh on macOS, so you usually do not need --transport=zenoh. Use --transport=lcm if you need to force the legacy multicast path. See the Zenoh quickstart for install, Linux versus macOS defaults, and DIMOS_TRANSPORT.
skip
dimos --dtop --replay --replay-db=go2_bigoffice run unitree-go2
If you are developing on the repository, prefer syncing the full environment with the checked-in lockfile:
skip
uv sync --extra all --frozen