Lightweight, flexible, and designed for researchers and developers in robot learning.
⭐ Star us on GitHub — your support motivates us a lot! 🙏😊
Join us on Discord!
Ark is a Python-first playground for robot learning. Instead of wrestling with C++ and fragmented tools, you can collect data, train policies, and switch between simulation and real robots with just a few lines of code. Think of it as the PyTorch + Gym for robotics — simple, modular, and built for rapid prototyping of intelligent robots.
📚 Learn more:
-
Create and activate a Conda environment. Python 3.12 is recommended.
conda create -n ark python=3.12 conda activate ark python -m pip install --upgrade pip
-
Create an Ark workspace, then clone Ark as
ark_framework.mkdir -p path/to/ark cd path/to/ark git clone <ark-repository-url> ark_framework cd ark_framework
Related repositories should be kept as siblings:
path/to/ark/ ├── ark_framework/ ├── zenoh/ └── other-repositories/ -
Install Zenoh:
- To use Ark on one PC, follow the single-PC Zenoh installation.
- To use Ark across multiple PCs, follow the multi-PC Zenoh installation.
-
Install Graphviz. This optional dependency is used to generate graph images in several modules. On Ubuntu:
sudo apt install graphviz
-
Install Ark in editable mode.
python -m pip install -e .
Install a Rust toolchain using rustup, then build and install the Zenoh Python bindings with shared-memory support:
python -m pip install \
--no-binary eclipse-zenoh \
--config-settings 'build-args=--features=zenoh/shared-memory' \
'eclipse-zenoh==1.7.2'Complete the single-PC installation on every participating PC. Then clone the matching Zenoh router source alongside ark_framework and install zenohd into the active Conda environment:
cd path/to/ark
git clone --depth 1 --branch release/1.7.2 \
https://github.com/eclipse-zenoh/zenoh.git zenoh
cargo install \
--locked \
--path zenoh/zenohd \
--features shared-memory \
--root "$CONDA_PREFIX"
zenohd --version
cd ark_frameworkThe eclipse-zenoh Python package does not include zenohd, which is why this additional installation is required for multi-PC deployments.
After installing zenohd on every PC, run the network check tool from the machine that will run ark core. It tests connectivity between your laptop and each external host and writes the recommended configuration back into your hosts.yaml:
ark-network-check --hosts path/to/hosts.yamlExample output:
Ark network connectivity check
========================================
Host: remote_a (worker → <remote-a-ip>)
remote_a → laptop (<laptop-ip>):7447 ... reachable
→ direct connection (router_ip: <laptop-ip>)
Host: remote_b (worker → <remote-b-ip>)
remote_b → laptop (<laptop-ip>):7447 ... blocked
→ SSH reverse tunnel required
Updated config written to: path/to/hosts.yaml
Summary:
remote_a: direct (router_ip: <laptop-ip>)
remote_b: ssh_tunnel
The tool adds ssh_tunnel and router_ip fields to each external host entry. The ark core command reads these automatically — no further configuration needed.
How connectivity is handled at runtime:
| Scenario | Method | Requires |
|---|---|---|
| Host can reach laptop on port 7447 | Direct TCP | Open port 7447 on laptop |
| Host cannot reach laptop | SSH reverse tunnel | Only SSH (port 22) |
ark core starts zenohd on the local machine and, for each host requiring a tunnel, opens a reverse SSH connection that forwards port 7447 on the remote host back to the local zenohd. All communication flows through port 22.
