CLI tool for deploying and managing ROS2 robot fleets
npm install @lindy-robotics/cli> CLI tool for deploying and managing ROS2 robot fleets


Lindy CLI simplifies robot fleet management by providing a powerful command-line interface for deploying code, monitoring status, and managing SSH connections across multiple ROS2 robots.
- 🤖 Fleet Management - Add, remove, and organize robots into environments
- 🚀 Parallel Deployment - Deploy code to multiple robots simultaneously
- 📊 Status Monitoring - Check robot health and running ROS2 nodes
- 🔧 SSH Integration - Seamless SSH connection management
- 🎯 Environment Support - Group robots (production, staging, etc.)
- ⚡ Fast & Efficient - Uses rsync-like file transfer with exclude patterns
``bashInstall globally
npm install -g @lindyai/cli
Quick Start
$3
`bash
lindy init
`This interactive wizard will help you:
- Configure deployment settings (source/destination paths)
- Add robots with SSH credentials
- Create environments (production, staging, etc.)
$3
`bash
lindy test
`Verify SSH connections to all configured robots.
$3
`bash
Deploy to production environment
lindy push productionDeploy to specific robot
lindy push robot-01
`$3
`bash
Check all robots
lindy statusCheck specific environment
lindy status production
`Commands
$3
- lindy init - Initialize configuration with interactive wizard
- lindy test [target] - Test SSH connections to robots$3
- lindy fleet add [connection] - Add robot to fleet
- lindy fleet list - List all robots with details
- lindy fleet remove - Remove robot from fleet$3
- lindy push - Deploy code to environment or specific robot
- --dry-run - Preview without deploying
- --skip-build - Skip build step
- --skip-restart - Skip restart step
- --no-parallel - Deploy sequentially$3
- lindy status [target] - Check robot status and running processes
- --process - Filter by process name/pattern
- --json - JSON output for automationConfiguration File
Lindy uses a
lindy.config.yaml file:`yaml
robots:
- name: robot-01
host: 192.168.10.101
port: 22
user: ubuntu
password: secret # or use privateKeyPath
- name: robot-02
host: 192.168.10.102
port: 22
user: ubuntu
privateKeyPath: ~/.ssh/robot_keyenvironments:
- name: production
robots:
- robot-01
- robot-02
- name: staging
robots:
- robot-03
deployment:
source: ./ros2_ws/src
destination: /home/ubuntu/ros2_ws/src
exclude:
- "*.pyc"
- __pycache__
- "*.log"
buildCommand: "cd ~/ros2_ws && source /opt/ros/humble/setup.bash && colcon build"
restartCommand: "pkill -f my_node; source ~/ros2_ws/install/setup.bash && nohup ros2 run my_package my_node &"
`Example Workflow
`bash
1. Setup (one-time)
lindy init
lindy test2. Daily development
... make code changes ...
3. Deploy to staging first
lindy push staging
lindy status staging4. If staging looks good, deploy to production
lindy push production
lindy status production5. Monitor fleet health
lindy status --process my_node
`Use Cases
- Multi-Robot Deployments - Deploy code to entire robot fleets in parallel
- Staged Rollouts - Test on staging before deploying to production
- Fleet Monitoring - Check which robots are online and what's running
- DevOps Automation - Integrate with CI/CD pipelines using JSON output
- Development - Quick iteration with
--skip-build for Python-only changesRequirements
- Node.js >= 18.0.0
- SSH access to target robots
- ROS2 (Humble or newer) on target robots
Documentation
For detailed guides and examples, see:
- DEMO.md - Complete feature walkthrough
- WORKFLOW_DEMO.md - End-to-end workflow examples
Development
`bash
Clone the repository
git clone https://github.com/lindyai/lindy-cli
cd lindy-cliInstall dependencies
pnpm installBuild
pnpm run buildRun locally
./bin/dev.js --helpRun tests
pnpm test
``Contributions are welcome! Please feel free to submit a Pull Request.
MIT © Yerzhan Zhamashev
- 🐛 Report bugs
- 💡 Request features
- 📖 Documentation
---
Made with ❤️ for the robotics community