Skip to main content

Cyberwave is in Private Beta.

Request early access to get access to the Cyberwave dashboard.

The Cyberwave Python SDK (cyberwave) lets you control robots, manage digital twins, and stream sensor data with a few lines of Python. This guide takes you from an empty terminal to a moving robot in simulation, no hardware required.
Already comfortable with the basics? The full Python SDK reference covers joint control, video streaming, workflows, datasets, ML models, and more.

Prerequisites

  • Python 3.10 or higher installed on your machine
  • A Cyberwave account (signup now if you don’t have one)
  • A Cyberwave API key (we’ll generate one in Step 2)

Step 1: Install the SDK

Install cyberwave from PyPI:
Verify the install:

Step 2: Get your API key

1

Open your profile

Go to the Cyberwave dashboard and open the API Tokens section of your Profile page.
2

Create a new key

Click Create Token, give it a name (e.g. “Quickstart”), and copy the key. You won’t be able to see it again, so store it somewhere safe.

Step 3: Authenticate

The SDK reads your API key from the CYBERWAVE_API_KEY environment variable. This is the recommended approach — it keeps secrets out of your code.
Then initialize the client with no arguments:
Prefer to pass the key explicitly? Use Cyberwave(api_key="your_api_key_here"). Avoid this in code you commit or share.

Step 4: Control your first robot

The snippet below creates a digital twin of an SO101 robot arm, runs it in simulation, and moves one of its joints. Nothing here touches physical hardware, so it’s safe to run as-is.
Run it:
If you see a table of joint states printed to your terminal, it worked. Open the twin’s environment in the dashboard to watch the arm move in the 3D viewport.

What just happened

Creates the SDK client and authenticates using your API key. It establishes connections to both the REST API (for twins, catalog, workflows) and the MQTT API (for real-time control).
Tells the SDK that your commands should drive the digital twin in simulation rather than a physical robot. Switch to cw.affect("live") later to run the exact same code against real hardware.
Resolves the vendor/model asset from the catalog and returns a twin. If you don’t have an environment yet, the SDK auto-creates a “Quickstart Environment” and places the twin there.
Sends a real-time joint command. Positions default to radians — pass degrees=True to use degrees instead.

Try a few more things

Once the quickstart runs, swap in these snippets to explore other capabilities:

Go live on real hardware

The same code that drives the simulation drives a physical robot — you only change the affect mode:
To connect real hardware, pair a device running the Cyberwave Edge Core. See Connecting to hardware for the full walkthrough.

Troubleshooting

Make sure CYBERWAVE_API_KEY is exported in the same terminal session where you run your script. Verify with echo $CYBERWAVE_API_KEY. If you opened a new terminal, re-export it or add it to your shell profile / a .env file.
Confirm the vendor/model identifier exists in the catalog. You can also search programmatically with cw.assets.search("so101").
The SDK requires Python 3.10+. Check with python --version. Consider using a virtual environment: python -m venv .venv && source .venv/bin/activate.

Next steps

Full Python SDK reference

Joint control, video streaming, workflows, alerts, datasets, and ML models

Develop in simulation

Control a robot from the browser with no code

Connect hardware

Pair a real robot with your digital twin

Browse the catalog

Explore 90+ supported robots, cameras, and sensors