Cyberwave Python SDK
Making the physical world programmable.
Connect, control, and simulate any robot. The same code runs in simulation and on real hardware.
Cyberwave is an all-in-one platform for building and deploying intelligent physical AI agents. Connect a physical robot or sensor, test it in simulation, and run AI models; all through one Python SDK. This package is the official client.
Installation
pip install cyberwave
Optional features install via extras, e.g. cyberwave[camera] (video streaming),
cyberwave[ml] (vision models), or cyberwave[zenoh] (edge data bus). See the
installation docs for the full list.
Quick Start
Get an API key from your Cyberwave instance (Profile → API Tokens) and export it:
export CYBERWAVE_API_KEY="your_api_key_here"
Then create and control your first digital twin:
from cyberwave import Cyberwave
cw = Cyberwave() # reads CYBERWAVE_API_KEY from the environment
# Create a digital twin from a catalog asset.
# Pin it to a specific twin and environment by passing their IDs (UUID or slug).
# Omit both and Cyberwave creates a "Quickstart Environment" for you automatically.
arm = cw.twin(
"the-robot-studio/so101",
twin_id="your-twin-uuid", # e.g. "acme/twins/arm-station-1"
environment_id="your-environment-uuid", # e.g. "acme/envs/production-floor"
)
# Place it in the scene (editor layout)
arm.edit_position(x=1.0, y=0.0, z=0.5)
arm.edit_rotation(yaw=90) # degrees
# Move a joint by name
joint_names = arm.joints.list()
if joint_names:
arm.set_joints({joint_names[0]: -0.2}) # radians
print(arm.get_joints())
# Drive a locomotion twin in simulation
cw.affect("simulation") # or cw.affect("live") for the real robot
rover = cw.twin("unitree/go2")
rover.move_forward(0.3)
cw.disconnect()
The same script targets real hardware by switching cw.affect("live"), no other changes.
Core Concepts
- Twins — virtual representations of robots and sensors. You develop and test against a twin, then deploy to hardware with identical code. Instantiate any catalog asset with
cw.twin("vendor/slug"). - Environments — scenes your twins live in. Validate quickly in the browser-based Playground, or use MuJoCo for high-fidelity physics and RL.
- Simulation vs. live —
cw.affect("simulation")andcw.affect("live")switch where commands and state go. The same code drives both. - Edge & cloud — stream camera/sensor data and run AI models on the edge or in the cloud, without managing the infrastructure in between.
- Drivers — subclass
BaseDriver(or shipcw-driver.yml) so the dashboard Keyboard (Driver) controller lists this twin's commands. Discrete commands fire once; mark locomotioncontinuousif a held key should repeat. See the Keyboard (Driver) docs.
Demos
Watch the SDK in action with our demos.
|
Build a natural language voice agent on SO101 |
Controlling a DJI Mini 4 Pro with the Cyberwave Python SDK |
Examples
Runnable scripts live in examples/ and see the examples index for the full list.
| Example | Shows |
|---|---|
| quickstart.py | Create a twin, scene layout, joints, locomotion |
| joints.py | Read and write joint positions by name |
| locomotion.py | Velocity-style locomotion commands |
| capture_frame.py | Grab a single camera frame from a twin |
| camera_stream.py | Stream a camera feed over WebRTC |
| drone_hovering.py | Takeoff, hover, and land a flying twin |
| workflows.py | List, trigger, and monitor workflows |
| ai/yolo.ipynb | Run YOLO vision models (Colab) |
Documentation
Full guides and the complete API reference are at docs.cyberwave.com (overview · API reference).
Contributing
Contributions are welcome. Please open an issue or a pull request.
Support
- Documentation: docs.cyberwave.com
- Issues: GitHub Issues
- Community: Discord
License
Released under the MIT License.
Metadata
Release files for cyberwave 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cyberwave-0.7.0.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cyberwave-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.1 MB
Release files / cyberwave-0.7.0.tar.gz
| Download URL | cyberwave-0.7.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
afa633ef940e1756687427b2d5f5ec3a5754123f03daa817fcfca727fadb6f84
|
|
BLAKE2b-256 checksum How to use checksums |
cbf1ae610892f2e4a5fad6fd31f1002db80ad09af4074ab209374ee23d6f3c68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.10.21 Linux/6.17.0-1022-azure
|
Release files / cyberwave-0.7.0-py3-none-any.whl
| Download URL | cyberwave-0.7.0-py3-none-any.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e027c4199dc14c796984fa938d0eb511ae93b3a051d06ea2d37b076d57371ec7
|
|
BLAKE2b-256 checksum How to use checksums |
7966e039386071ab71c1ac40cde506a4084d3be18e6a7136ad33b848c7625b84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.10.21 Linux/6.17.0-1022-azure
|