# Cyberwave CLI
[](https://badge.fury.io/py/cyberwave-cli)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
Command-line interface for the **Cyberwave Digital Twin Platform**. Manage projects, environments, digital twins, and robot integrations from the terminal.
**Cyberwave** is a comprehensive robotics platform that enables you to create digital twins of physical robots, run realistic simulations, and seamlessly bridge the gap between virtual development and real-world deployment.
## 🚀 Features
- **🤖 Robot Management**: Register, control, and monitor physical robots
- **🌍 Environment Control**: Create and manage 3D simulation environments
- **🔗 Digital Twin Operations**: Seamless physical-digital synchronization
- **⚙️ Edge Runtime**: Bridge local robots to cloud platform
- **🔐 Secure Authentication**: Token-based authentication with device tokens
- **📊 Telemetry Streaming**: Real-time data collection and monitoring
- **🧩 Plugin Architecture**: Extensible command system
## 🤖 Supported Robots & Hardware
- **Robotic Arms**: SO-ARM100, Universal Robots, custom URDF-based arms
- **Drones**: DJI Tello, custom UAVs with MAVLink support
- **Mobile Robots**: Custom ground vehicles, AGVs, autonomous platforms
- **Sensors**: Cameras, LIDAR, IMU, custom sensor integrations
- **Custom Hardware**: Extensible driver system for any robot type
## 💡 Use Cases
- **Algorithm Development**: Test path planning and control algorithms safely
- **Fleet Management**: Monitor and control multiple robots remotely
- **Training & Education**: Learn robotics with realistic simulations
- **Prototyping**: Validate designs before physical implementation
- **Industrial Automation**: Optimize factory and warehouse operations
## Installation
### One-Liner (Recommended)
```bash
curl -sSL https://raw.githubusercontent.com/cyberwave-os/cyberwave-cli/main/install.py | python3
```
*Automatically installs packages and configures PATH*
### Manual Installation
```bash
# CLI with SDK (automatically includes cyberwave SDK)
pip install cyberwave-cli
# CLI with robotics integrations (recommended for hardware)
pip install cyberwave-cli[robotics]
# Or install everything separately
pip install cyberwave-cli cyberwave-robotics-integrations
# Development installation (isolated)
pipx install cyberwave-cli
```
### PATH Configuration (if needed)
If you get "command not found: cyberwave" after manual installation:
```bash
# Auto-configure PATH
python3 -m cyberwave_cli.setup_utils
# Or use built-in setup command
cyberwave setup
# Verify installation
cyberwave doctor
```
## 🎯 Quick Start
Get up and running with Cyberwave in 3 simple steps:
```bash
# 1. Install (includes SDK automatically)
pip install cyberwave-cli
# 2. Authenticate
cyberwave auth login --backend-url https://api.cyberwave.com --frontend-url https://app.cyberwave.com
# 3. Start using
cyberwave projects list
cyberwave devices register --project PROJECT_ID --name "My Robot" --type robot/so-arm100
```
## 📖 Detailed Usage
### 1. Authentication
```bash
# Login to your Cyberwave instance (will prompt for email/password)
cyberwave auth login --backend-url http://localhost:8000
# Or provide credentials directly
cyberwave auth login --email your@email.com --password yourpassword
# For production (replace with your actual domain)
# cyberwave auth login --backend-url https://api.cyberwave.com
# Check authentication status
cyberwave auth status
# Logout
cyberwave auth logout
```
### 2. Project Management
```bash
# List projects
cyberwave projects list
# Create new project
cyberwave projects create "My Robot Project" --description "Autonomous robot fleet"
# Get project details
cyberwave projects show <project-uuid>
```
### 3. Environment Management
```bash
# List environments
cyberwave environments list
# Create environment
cyberwave environments create "Test Environment" --project <project-uuid>
# Environment details
cyberwave environments show <environment-uuid>
```
### 4. Digital Twin Operations
```bash
# List twins in environment
cyberwave twins list --environment <environment-uuid>
# Add twin from catalog
cyberwave twins add cyberwave/so101 --environment <environment-uuid>
# Control twin position
cyberwave twins move <twin-uuid> --x 1.0 --y 0.0 --z 0.5
# Control robot joints
cyberwave twins joint <twin-uuid> --joint shoulder --angle 45
```
### 5. Device Management
```bash
# Register device
cyberwave devices register --name "My Robot" --type so100
# List devices
cyberwave devices list
# Device status
cyberwave devices status <device-id>
```
### Plugins
Plugins are discovered via the `cyberwave.cli.plugins` entry point and loaded automatically.
- Built-in: `auth`, `projects`, `devices`, `edge`, `twins`
- List loaded plugins:
```bash
cyberwave plugins-cmd
```
### Devices
```bash
# Register a device and issue a device token
cyberwave devices register --project <PROJECT_ID> --name my-edge --type robot/so-arm100
cyberwave devices issue-offline-token --device <DEVICE_ID>
```
### Edge Node (SO-ARM100 example and simulation)
Configure and run a CyberWave Edge node that bridges a local driver to the cloud via the SDK.
- Initialize config (auto-register and create a device token):
```bash
cyberwave edge init \
--robot so_arm100 \
--port /dev/ttyUSB0 \
--backend http://localhost:8000/api/v1 \
--project <PROJECT_ID> \
--device-name edge-soarm100 \
--device-type robot/so-arm100 \
--auto-register \
--use-device-token \
--config ~/.cyberwave/edge.json
```
- Run:
```bash
cyberwave edge run --config ~/.cyberwave/edge.json
```
- Status:
```bash
cyberwave edge status --config ~/.cyberwave/edge.json
```
- Simulate a virtual camera from a local mp4 (no hardware needed):
```bash
cyberwave edge simulate --sensor <SENSOR_UUID> --video ./sample.mp4 --fps 2
```
- Command mode (optional): set in `~/.cyberwave/edge.json` to route via backend controller
```json
{
"control_mode": "command",
"twin_uuid": "<TWIN_UUID>"
}
```
### Twin Control (Unified Command)
Send a command to a twin through the backend TeleopController.
```bash
# Move joints (degrees/radians based on driver semantics)
cyberwave twins command \
--twin <TWIN_UUID> \
--name arm.move_joints \
--joints "[0,10,0,0,0,0]" \
--mode both \
--source cli
# Move to pose
cyberwave twins command \
--twin <TWIN_UUID> \
--name arm.move_pose \
--pose '{"x":0.1, "y":0.2, "z":0.0}' \
--mode sim
```
### Configuration
- CLI config: `~/.cyberwave/config.toml` (managed by `cyberwave auth config`)
- Edge config: `~/.cyberwave/edge.json` (managed by `cyberwave edge init`)
### Security
- Tokens are stored in system keychain when available, with JSON fallback.
- Device tokens are long-lived; prefer them for headless Edge deployments.
### Environments and Sensors (new)
List environments for a project and show recent events (latest session per twin):
```bash
cyberwave environments list --project <PROJECT_UUID>
cyberwave environments events --environment <ENVIRONMENT_UUID> -n 5
```
Create/list sensors in an environment:
```bash
cyberwave sensors create --environment <ENVIRONMENT_UUID> --name "Living Room Cam" --type camera
cyberwave sensors list --environment <ENVIRONMENT_UUID>
```
List analyzer events for a specific sensor from the latest session:
```bash
cyberwave sensors events --environment <ENVIRONMENT_UUID> --sensor <SENSOR_UUID> -n 20
```
Raw data
{
"_id": null,
"home_page": null,
"name": "cyberwave-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Cyberwave <support@cyberwave.com>",
"keywords": "robotics, digital-twin, simulation, cli, automation, robot-control",
"author": null,
"author_email": "Cyberwave <support@cyberwave.com>",
"download_url": "https://files.pythonhosted.org/packages/63/36/7a29cafa233e8f65062acb0f9aa706afcafbc1f1d05e447cda2184b8812f/cyberwave_cli-0.11.5.tar.gz",
"platform": null,
"description": "# Cyberwave CLI\n\n[](https://badge.fury.io/py/cyberwave-cli)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\nCommand-line interface for the **Cyberwave Digital Twin Platform**. Manage projects, environments, digital twins, and robot integrations from the terminal.\n\n**Cyberwave** is a comprehensive robotics platform that enables you to create digital twins of physical robots, run realistic simulations, and seamlessly bridge the gap between virtual development and real-world deployment.\n\n## \ud83d\ude80 Features\n\n- **\ud83e\udd16 Robot Management**: Register, control, and monitor physical robots\n- **\ud83c\udf0d Environment Control**: Create and manage 3D simulation environments \n- **\ud83d\udd17 Digital Twin Operations**: Seamless physical-digital synchronization\n- **\u2699\ufe0f Edge Runtime**: Bridge local robots to cloud platform\n- **\ud83d\udd10 Secure Authentication**: Token-based authentication with device tokens\n- **\ud83d\udcca Telemetry Streaming**: Real-time data collection and monitoring\n- **\ud83e\udde9 Plugin Architecture**: Extensible command system\n\n## \ud83e\udd16 Supported Robots & Hardware\n\n- **Robotic Arms**: SO-ARM100, Universal Robots, custom URDF-based arms\n- **Drones**: DJI Tello, custom UAVs with MAVLink support\n- **Mobile Robots**: Custom ground vehicles, AGVs, autonomous platforms\n- **Sensors**: Cameras, LIDAR, IMU, custom sensor integrations\n- **Custom Hardware**: Extensible driver system for any robot type\n\n## \ud83d\udca1 Use Cases\n\n- **Algorithm Development**: Test path planning and control algorithms safely\n- **Fleet Management**: Monitor and control multiple robots remotely \n- **Training & Education**: Learn robotics with realistic simulations\n- **Prototyping**: Validate designs before physical implementation\n- **Industrial Automation**: Optimize factory and warehouse operations\n\n## Installation\n\n### One-Liner (Recommended)\n```bash\ncurl -sSL https://raw.githubusercontent.com/cyberwave-os/cyberwave-cli/main/install.py | python3\n```\n*Automatically installs packages and configures PATH*\n\n### Manual Installation\n```bash\n# CLI with SDK (automatically includes cyberwave SDK)\npip install cyberwave-cli\n\n# CLI with robotics integrations (recommended for hardware)\npip install cyberwave-cli[robotics]\n\n# Or install everything separately\npip install cyberwave-cli cyberwave-robotics-integrations\n\n# Development installation (isolated)\npipx install cyberwave-cli\n```\n\n### PATH Configuration (if needed)\nIf you get \"command not found: cyberwave\" after manual installation:\n```bash\n# Auto-configure PATH\npython3 -m cyberwave_cli.setup_utils\n\n# Or use built-in setup command\ncyberwave setup\n\n# Verify installation\ncyberwave doctor\n```\n\n## \ud83c\udfaf Quick Start\n\nGet up and running with Cyberwave in 3 simple steps:\n\n```bash\n# 1. Install (includes SDK automatically)\npip install cyberwave-cli\n\n# 2. Authenticate \ncyberwave auth login --backend-url https://api.cyberwave.com --frontend-url https://app.cyberwave.com\n\n# 3. Start using\ncyberwave projects list\ncyberwave devices register --project PROJECT_ID --name \"My Robot\" --type robot/so-arm100\n```\n\n## \ud83d\udcd6 Detailed Usage\n\n### 1. Authentication\n```bash\n# Login to your Cyberwave instance (will prompt for email/password)\ncyberwave auth login --backend-url http://localhost:8000\n\n# Or provide credentials directly\ncyberwave auth login --email your@email.com --password yourpassword\n\n# For production (replace with your actual domain)\n# cyberwave auth login --backend-url https://api.cyberwave.com\n\n# Check authentication status\ncyberwave auth status\n\n# Logout\ncyberwave auth logout\n```\n\n### 2. Project Management\n```bash\n# List projects\ncyberwave projects list\n\n# Create new project\ncyberwave projects create \"My Robot Project\" --description \"Autonomous robot fleet\"\n\n# Get project details\ncyberwave projects show <project-uuid>\n```\n\n### 3. Environment Management\n```bash\n# List environments\ncyberwave environments list\n\n# Create environment\ncyberwave environments create \"Test Environment\" --project <project-uuid>\n\n# Environment details\ncyberwave environments show <environment-uuid>\n```\n\n### 4. Digital Twin Operations\n```bash\n# List twins in environment\ncyberwave twins list --environment <environment-uuid>\n\n# Add twin from catalog\ncyberwave twins add cyberwave/so101 --environment <environment-uuid>\n\n# Control twin position\ncyberwave twins move <twin-uuid> --x 1.0 --y 0.0 --z 0.5\n\n# Control robot joints\ncyberwave twins joint <twin-uuid> --joint shoulder --angle 45\n```\n\n### 5. Device Management\n```bash\n# Register device\ncyberwave devices register --name \"My Robot\" --type so100\n\n# List devices\ncyberwave devices list\n\n# Device status\ncyberwave devices status <device-id>\n```\n\n### Plugins\n\nPlugins are discovered via the `cyberwave.cli.plugins` entry point and loaded automatically.\n\n- Built-in: `auth`, `projects`, `devices`, `edge`, `twins`\n- List loaded plugins:\n ```bash\n cyberwave plugins-cmd\n ```\n\n### Devices\n\n```bash\n# Register a device and issue a device token\ncyberwave devices register --project <PROJECT_ID> --name my-edge --type robot/so-arm100\ncyberwave devices issue-offline-token --device <DEVICE_ID>\n```\n\n### Edge Node (SO-ARM100 example and simulation)\n\nConfigure and run a CyberWave Edge node that bridges a local driver to the cloud via the SDK.\n\n- Initialize config (auto-register and create a device token):\n ```bash\n cyberwave edge init \\\n --robot so_arm100 \\\n --port /dev/ttyUSB0 \\\n --backend http://localhost:8000/api/v1 \\\n --project <PROJECT_ID> \\\n --device-name edge-soarm100 \\\n --device-type robot/so-arm100 \\\n --auto-register \\\n --use-device-token \\\n --config ~/.cyberwave/edge.json\n ```\n- Run:\n ```bash\n cyberwave edge run --config ~/.cyberwave/edge.json\n ```\n- Status:\n ```bash\n cyberwave edge status --config ~/.cyberwave/edge.json\n ```\n- Simulate a virtual camera from a local mp4 (no hardware needed):\n ```bash\n cyberwave edge simulate --sensor <SENSOR_UUID> --video ./sample.mp4 --fps 2\n ```\n- Command mode (optional): set in `~/.cyberwave/edge.json` to route via backend controller\n ```json\n {\n \"control_mode\": \"command\",\n \"twin_uuid\": \"<TWIN_UUID>\"\n }\n ```\n\n### Twin Control (Unified Command)\n\nSend a command to a twin through the backend TeleopController.\n\n```bash\n# Move joints (degrees/radians based on driver semantics)\ncyberwave twins command \\\n --twin <TWIN_UUID> \\\n --name arm.move_joints \\\n --joints \"[0,10,0,0,0,0]\" \\\n --mode both \\\n --source cli\n\n# Move to pose\ncyberwave twins command \\\n --twin <TWIN_UUID> \\\n --name arm.move_pose \\\n --pose '{\"x\":0.1, \"y\":0.2, \"z\":0.0}' \\\n --mode sim\n```\n\n### Configuration\n\n- CLI config: `~/.cyberwave/config.toml` (managed by `cyberwave auth config`)\n- Edge config: `~/.cyberwave/edge.json` (managed by `cyberwave edge init`)\n\n### Security\n\n- Tokens are stored in system keychain when available, with JSON fallback.\n- Device tokens are long-lived; prefer them for headless Edge deployments.\n\n### Environments and Sensors (new)\n\nList environments for a project and show recent events (latest session per twin):\n```bash\ncyberwave environments list --project <PROJECT_UUID>\ncyberwave environments events --environment <ENVIRONMENT_UUID> -n 5\n```\n\nCreate/list sensors in an environment:\n```bash\ncyberwave sensors create --environment <ENVIRONMENT_UUID> --name \"Living Room Cam\" --type camera\ncyberwave sensors list --environment <ENVIRONMENT_UUID>\n```\n\nList analyzer events for a specific sensor from the latest session:\n```bash\ncyberwave sensors events --environment <ENVIRONMENT_UUID> --sensor <SENSOR_UUID> -n 20\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Command-line interface for the Cyberwave Digital Twin Platform - manage robots, environments, and simulations",
"version": "0.11.5",
"project_urls": {
"Bug Reports": "https://github.com/cyberwave-os/cyberwave-cli/issues",
"Changelog": "https://github.com/cyberwave-os/cyberwave-cli/releases",
"Documentation": "https://cyberwave.com/docs",
"Homepage": "https://cyberwave.com",
"Repository": "https://github.com/cyberwave-os/cyberwave-cli"
},
"split_keywords": [
"robotics",
" digital-twin",
" simulation",
" cli",
" automation",
" robot-control"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c27d84efb2e6a44aa32f4403b9a44611484afa0475d7566e190cab9993f04b7b",
"md5": "7a520af41b3c7ef5971c034b4fcf190d",
"sha256": "78a714fcbaff613b9769ffea647eb4784e30b5959b2c21f904de3c9d00fa61c5"
},
"downloads": -1,
"filename": "cyberwave_cli-0.11.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7a520af41b3c7ef5971c034b4fcf190d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 23805,
"upload_time": "2025-08-22T13:25:43",
"upload_time_iso_8601": "2025-08-22T13:25:43.165091Z",
"url": "https://files.pythonhosted.org/packages/c2/7d/84efb2e6a44aa32f4403b9a44611484afa0475d7566e190cab9993f04b7b/cyberwave_cli-0.11.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "63367a29cafa233e8f65062acb0f9aa706afcafbc1f1d05e447cda2184b8812f",
"md5": "ce4777301be02a0bb06679a9ddab765d",
"sha256": "cca6bcf7f91f278393e7bb4bef9f7edcf6ca7e9b2aad811e6912fc8febb76d9c"
},
"downloads": -1,
"filename": "cyberwave_cli-0.11.5.tar.gz",
"has_sig": false,
"md5_digest": "ce4777301be02a0bb06679a9ddab765d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 24156,
"upload_time": "2025-08-22T13:25:44",
"upload_time_iso_8601": "2025-08-22T13:25:44.832463Z",
"url": "https://files.pythonhosted.org/packages/63/36/7a29cafa233e8f65062acb0f9aa706afcafbc1f1d05e447cda2184b8812f/cyberwave_cli-0.11.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-22 13:25:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cyberwave-os",
"github_project": "cyberwave-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cyberwave-cli"
}