Cyberwave is in Private Beta.
Request early access to get access to the Cyberwave dashboard.
Overview
The Cyberwave Cloud Node turns any computer into a managed compute instance that receives inference, training, and simulation commands from the Cyberwave platform. It connects outbound to the Cyberwave MQTT broker, so there is no need to expose ports, configure public URLs, or punch holes in firewalls.Installation
- pip (Python package)
- apt (compiled binary)
Quick Start
1
Add a cyberwave.yml to your repo
Create a The
cyberwave.yml at the root of your project:{body} placeholder is replaced at runtime with the JSON parameters received from MQTT.2
Set your API key
3
Start the node
- Run the
install_scriptand report failures - Register with the backend to get a UUID and slug
- Connect to MQTT and start accepting commands
- Send periodic heartbeats
- Execute workloads as independent OS processes and collect results on completion
Authentication
The Cloud Node needs an API key to communicate with Cyberwave. Credentials are resolved in this order:- Environment variable —
CYBERWAVE_API_KEY .envfile in the current directory.envfile at~/.cyberwave/.env(shared config)- Stored credentials from
cyberwave-clilogin (~/.cyberwave/credentials.json)
cyberwave-cli, the Cloud Node uses those credentials automatically.
Generate an API key from your Profile page →
API Tokens.
Configuration
cyberwave.yml
Place this file at the root of your project. All fields except the command templates are optional.Environment Variables
All settings can also be provided via environment variables. They overridecyberwave.yml values.
Required:
API and Workspace:
MQTT:
Commands (alternative to cyberwave.yml):
Reserving a node for one environment (stub)
Reserve a self-hosted node for a single environment so only that environment’s workloads run on it:- The environment must belong to the same workspace as the node.
- Workloads from that environment prefer the reserved node; if it is busy they fall back to other available nodes.
- Workloads from other environments (or with no environment) never run on the reserved node.
CLI Usage
The
--slug parameter is a hint. The backend owns identity assignment and may
use your hint or assign a different slug.Programmatic Usage
Process-Based Workloads
Training and inference jobs run as independent OS processes that survive Cloud Node restarts. This means you can upgrade or restart the Cloud Node without killing a running training job.Lifecycle
- Command arrives via MQTT — Cloud Node spawns a detached subprocess (
start_new_session=True) - Output streams to log files in
~/.cyberwave/workload_logs/ - Monitor loop checks every 5 seconds, collects results when the process finishes, and publishes status back via MQTT
- On shutdown (Ctrl+C / SIGTERM) — the node stops accepting new commands and exits immediately; running workloads continue in the background
Output Files
Instance Identity
After registration, the backend assigns a UUID and slug. This identity is persisted at~/.cyberwave/instance_identity.json so the node can re-register with the same identity after a restart.
MQTT Topics
Command topics (the node subscribes to these):
Response topic (the node publishes to):
Commands
Sending a Command
Response Format
status is "error" and an error field replaces output.
Checking Status
Send astatus command to see active workloads:
Cancelling Workloads
Cancel by PID or by the original workloadrequest_id:
- Cancel by PID
- Cancel by request_id
- Force kill
Related Resources
API Key
Generate your API key
Python SDK
Control twins and robots from Python
Edge Overview
Run Cyberwave on edge devices