ngine_demo.mp4
Ngine is an open-source framework for building, training, and evaluating embodied AI agents across diverse simulation environments. It provides a unified interface for working with different simulators, robot embodiments, and task domains.
[Note: Ngine is still underconstruction and we are working hard to bring surgical/healthcare benchmarks. stay tuned!]
- Environment Agnostic - Works with multiple simulation backends (Isaac Lab, ManiSkill, PyBullet)
- Plugin Architecture - Extensible design for adding new domains, robots, and simulators
- Multi-Robot Support - Unitree G1/H1, ARX arms, Agilex Piper, Fourier GR1, LeRobot compatible
- Unified MDP Interface - Consistent observation, action, and reward specifications
- VR Teleoperation - Built-in OpenXR support for data collection
- Flexible Asset Loading - Pluggable loaders for local, cloud, or custom backends
- Distributed Training - Scalable infrastructure for parallel environment execution
- OS: Linux (Ubuntu 22.04+ recommended)
- Python: 3.10+
- CUDA: 12.x
- Hardware: NVIDIA RTX GPU
- Isaac Sim: 4.5+ (for Isaac Lab backend)
# Clone repository
git clone https://github.com/Negentropy-ai/Ngine.git
cd Ngine
# Create environment
conda create -n ngine python=3.10
conda activate ngine
# Install package
pip install -e .
# Optional dependencies
pip install -e ".[cloud]" # Cloud asset loading
pip install -e ".[lerobot]" # LeRobot integration# Using shell script
./teleop.sh
# Or directly with config
python ngine/scripts/teleop/teleop_main.py \
--task_config g1-controller./train.sh./eval.sh| Variable | Description | Default |
|---|---|---|
NGINE_DATA_PATH |
Asset data directory | ./data |
NGINE_LOG_DIR |
Log output directory | ./logs |
NGINE_ASSET_BACKEND |
Asset loader backend (local, cloud) |
local |
# configs/experiment.yml
scene:
type: robocasa_kitchen
layout: 1
robot:
type: g1_dualarm
task:
type: pick_and_place
objects:
- type: bowl
placement: counter
simulation:
num_envs: 4
device: cuda:0ngine/
├── ngine/
│ ├── assets/ # Asset management system
│ │ ├── loaders/ # Pluggable asset loaders
│ │ └── registry.py # Central asset registry
│ ├── benchmarks/ # Task definitions (LIBERO, Robocasa)
│ ├── engine/ # Core framework
│ │ ├── cfg/ # Configuration system
│ │ ├── devices/ # Input devices (VR, keyboard)
│ │ ├── embodiments/ # Robot definitions
│ │ ├── mdp/ # MDP components
│ │ ├── models/ # Asset and scene models
│ │ ├── orchestrate/ # Environment orchestration
│ │ ├── scenes/ # Scene definitions
│ │ └── tasks/ # Task base classes
│ ├── rl/ # RL training configs
│ ├── scripts/ # CLI tools
│ └── utils/ # Helper utilities
└── configs/ # Configuration files
- Isaac Lab (GPU-accelerated)
- ManiSkill (planned)
- PyBullet (planned)
| Type | Models |
|---|---|
| Humanoid | Unitree G1, H1, Fourier GR1 |
| Mobile | Unitree Go2 |
| Arms | ARX X5/X7, Agilex Piper |
| Hands | LeRobot compatible |
- Kitchen manipulation (Robocasa, LIBERO)
- Object manipulation
- Custom domains via plugin system
# Run tests
pytest tests/ -v
# Format code
black ngine/
isort ngine/
# Type checking
mypy ngine/Apache License 2.0 - see LICENSE for details.
Contributions welcome! Please see CONTRIBUTING.md for guidelines.
@software{ngine2025,
title = {ngine: Environment-Agnostic Embodied AI Infrastructure},
year = {2025},
url = {https://github.com/Negentropy-ai/Ngine}
}