Skip to main content

ros2em - ROS2 Environment Manager

PyPI version License Platform

ros2em is a CLI tool to create and manage isolated ROS2 environments.

Whether you're a robotics developer, student, or researcher, ros2em makes it easy to:

  • 🧠 Spin up clean, persistent ROS 2 environments
  • 🐳 Use Docker based containers
  • 🖥 Access GUIs like Rviz or Gazebo via browser
  • ✅ Support both amd64 and arm64 architectures

🚀 Features

  • ⚡ One-line ROS 2 environment creation and access
  • 🖥 Web-based GUI using tiryoh/ros2-desktop-vnc
  • 🖥 GUI access using browser
  • 🔐 No system pollution – nothing touches your host machine
  • 💡 Powered by Typer (CLI) and Rich (colored output)

🔧 Prerequisites

Before using ros2em, make sure you have Docker installed on your system:

🪟 Windows

  1. Install Docker Desktop from https://www.docker.com/products/docker-desktop
  2. Ensure WSL 2 is installed and configured (Docker Desktop will guide you).
  3. After install, verify Docker is working docker version.

🍎 macOS

  1. Install Docker Desktop from https://www.docker.com/products/docker-desktop
  2. After installation, open Docker Desktop once to initialize.
  3. After install, verify Docker is working docker version.

🐧 Linux (Ubuntu/Debian)

sudo apt update
sudo apt install -y docker.io docker-compose
sudo usermod -aG docker $USER
newgrp docker

Then test it docker version.


📦 Installation

Recommended (via pipx)

pipx install ros2em

Or using pip

pip install ros2em

🛠 Commands

🐣 Create a new environment

ros2em init myenv --distro humble

Creates a .ros2em/myenv/ folder with a default docker-compose.yml, metadata, and port configuration.

⚙️ Options

You can customize it with advanced options.

Option Type Default Description
--ports list[str] None Extra port mappings in host:container format (e.g., 9000:9000)
--context str "default" Docker context to use (useful for remote or wsl contexts)

Example:

ros2em init turtlebot4 humble --ports 11311:11311 --context wsl

🚀 Start or resume the container

ros2em up myenv

Starts the container if it exists, or creates it if not.

🧹 Stop the container

ros2em stop myenv

Stops the running container but retains it, including all manually installed packages.

❌ Delete an environment

ros2em delete myenv

Stops and removes the container. As well deletes .ros2em/myenv/ folder and all metadata.

🖥 Accessing the Desktop GUI

ros2em open myenv

Click on the link that looks something like this in the output: http://localhost:6080.


🧩 Contributing

We welcome contributions, ideas, and feedback.

  • Open issues for bugs and enhancements
  • Fork and submit a pull request
  • Share your use case via Discussions

📄 License

Apache 2.0 — © 2025 Kodo Robotics

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ros2em-0.2.0.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ros2em-0.2.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file ros2em-0.2.0.tar.gz.

File metadata

  • Download URL: ros2em-0.2.0.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for ros2em-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b29a59ed023cfdfd5bf59d5a44dea087e1522bb407ae2b9b9037f49af00ec1d1
MD5 8bde5e163f6e4192b8577c255306a20e
BLAKE2b-256 3ad724ae037c45417682b7976677b173c3018a8d8c0d9c1931768afc71242632

See more details on using hashes here.

File details

Details for the file ros2em-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ros2em-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for ros2em-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 faf46ad3efaa38e505b6295c56ffaff6a213236e141da1eb14c642d3be770545
MD5 8ace7681475020d584d1f86d828ce373
BLAKE2b-256 939a579c2ed499d0821124523b8d7afb2dc5cfe87bfeb7be9f45aa24dc9ba793

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page