Skip to main content

Cyberwave is in Private Beta.

Request early access to get access to the Cyberwave dashboard.

Cyberwave organizes resources as workspaces → projects → environments, and twins live inside environments. The SDK exposes a manager for each level.
For the conceptual model behind this hierarchy, see Core Data Hierarchy.

Workspaces and projects

from cyberwave import Cyberwave

cw = Cyberwave()
# You can also set your API key as an environment variable:
#   export CYBERWAVE_API_KEY=your_api_key_here
# then simply: cw = Cyberwave()

# List workspaces
workspaces = cw.workspaces.list()
print(f"Found {len(workspaces)} workspaces")

# Create a project
project = cw.projects.create(
    name="My Robotics Project",
    workspace_id=workspaces[0].uuid,
)

# Create an environment
environment = cw.environments.create(
    name="Development",
    project_id=project.uuid,
)

Environment waypoints

Waypoints are named positions inside an environment, useful for navigation targets and docking locations.
# Create a waypoint
cw.environments.create_waypoint(
    environment.uuid,
    waypoint_id="dock-a",
    name="Dock A",
    position={"x": 1.0, "y": 2.0, "z": 0.0},
    rotation={"w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0},
    metadata={"priority": "high"},
)

# List waypoints
waypoints = cw.environments.get_waypoints(environment.uuid)

# Delete a waypoint
cw.environments.delete_waypoint(environment.uuid, "dock-a")

Fetch by slug

Every environment has a unified slug you can use in place of a UUID:
env = cw.environments.get_by_slug("acme/envs/production")