Cyberwave organizes resources as workspaces → projects → environments, and twins live inside
environments. The SDK exposes a manager for each level.
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")