Command-line interface for the Cyberwave Digital Twin Platform - manage robots, environments, and simulations
Project description
Cyberwave CLI
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)
curl -sSL https://raw.githubusercontent.com/cyberwave-os/cyberwave-cli/main/install.py | python3
Automatically installs packages and configures PATH
Manual Installation
# 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:
# 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:
# 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
# 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
# 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
# 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
# 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
# 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:
cyberwave plugins-cmd
Devices
# 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):
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:
cyberwave edge run --config ~/.cyberwave/edge.json
- Status:
cyberwave edge status --config ~/.cyberwave/edge.json
- Simulate a virtual camera from a local mp4 (no hardware needed):
cyberwave edge simulate --sensor <SENSOR_UUID> --video ./sample.mp4 --fps 2
- Command mode (optional): set in
~/.cyberwave/edge.jsonto route via backend controller{ "control_mode": "command", "twin_uuid": "<TWIN_UUID>" }
Twin Control (Unified Command)
Send a command to a twin through the backend TeleopController.
# 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 bycyberwave auth config) - Edge config:
~/.cyberwave/edge.json(managed bycyberwave 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):
cyberwave environments list --project <PROJECT_UUID>
cyberwave environments events --environment <ENVIRONMENT_UUID> -n 5
Create/list sensors in an environment:
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:
cyberwave sensors events --environment <ENVIRONMENT_UUID> --sensor <SENSOR_UUID> -n 20
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cyberwave_cli-0.11.6.tar.gz.
File metadata
- Download URL: cyberwave_cli-0.11.6.tar.gz
- Upload date:
- Size: 124.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5d9704bb8d0b646f2b60af02c99ddb96d457b582b2abd3e93a8198ecd6f4cd1
|
|
| MD5 |
805a18ba0734a4f7af13ff0723e34291
|
|
| BLAKE2b-256 |
e7ee1a1b29b74c4ec7e3fea2020aefd6d5fbcc2d11d8ebce844a1881676b504e
|
Provenance
The following attestation bundles were made for cyberwave_cli-0.11.6.tar.gz:
Publisher:
workflow.yml on cyberwave-os/cyberwave-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cyberwave_cli-0.11.6.tar.gz -
Subject digest:
f5d9704bb8d0b646f2b60af02c99ddb96d457b582b2abd3e93a8198ecd6f4cd1 - Sigstore transparency entry: 433901009
- Sigstore integration time:
-
Permalink:
cyberwave-os/cyberwave-cli@b95737e5f869b50f28165f2f9e1c9960c9ccef18 -
Branch / Tag:
refs/tags/v0.11.6 - Owner: https://github.com/cyberwave-os
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@b95737e5f869b50f28165f2f9e1c9960c9ccef18 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cyberwave_cli-0.11.6-py3-none-any.whl.
File metadata
- Download URL: cyberwave_cli-0.11.6-py3-none-any.whl
- Upload date:
- Size: 137.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3fd5d565b511199fba60fd7639ac15f120bec1e80728647c0a320ae99ab2575
|
|
| MD5 |
7d97d40a8c7b4b767557dc98ad5db6bf
|
|
| BLAKE2b-256 |
a61860cfab13235c831577da64fb5770cff19f311ddfeac7edde885e942bb0c7
|
Provenance
The following attestation bundles were made for cyberwave_cli-0.11.6-py3-none-any.whl:
Publisher:
workflow.yml on cyberwave-os/cyberwave-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cyberwave_cli-0.11.6-py3-none-any.whl -
Subject digest:
a3fd5d565b511199fba60fd7639ac15f120bec1e80728647c0a320ae99ab2575 - Sigstore transparency entry: 433901014
- Sigstore integration time:
-
Permalink:
cyberwave-os/cyberwave-cli@b95737e5f869b50f28165f2f9e1c9960c9ccef18 -
Branch / Tag:
refs/tags/v0.11.6 - Owner: https://github.com/cyberwave-os
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@b95737e5f869b50f28165f2f9e1c9960c9ccef18 -
Trigger Event:
push
-
Statement type: