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.| Communication | Outbound MQTT — works behind NAT and firewalls |
| Workload model | Each command runs as an independent OS process that survives node restarts |
| Configuration | cyberwave.yml at the root of your repo, or environment variables |
| Identity | Backend-assigned UUID and slug, persisted locally for re-registration |
Installation
- pip (Python package)
- apt (compiled binary)
Quick Start
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.- 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:
| Variable | Description |
|---|---|
CYBERWAVE_API_KEY | Your Cyberwave API token |
| Variable | Default | Description |
|---|---|---|
CYBERWAVE_WORKSPACE_SLUG | — | Workspace slug |
CYBERWAVE_INSTANCE_SLUG | — | Slug hint for automated deployments |
CYBERWAVE_BASE_URL | https://api.cyberwave.com | API base URL |
| Variable | Default | Description |
|---|---|---|
CYBERWAVE_MQTT_HOST | mqtt.cyberwave.com | MQTT broker host |
CYBERWAVE_MQTT_PORT | 1883 | MQTT broker port |
CYBERWAVE_MQTT_USERNAME | — | MQTT username if required |
CYBERWAVE_MQTT_PASSWORD | — | MQTT password if required |
CYBERWAVE_ENVIRONMENT | — | Environment prefix for MQTT topics |
| Variable | Description |
|---|---|
CYBERWAVE_INSTALL_SCRIPT | Install script command |
CYBERWAVE_INFERENCE_CMD | Inference command template |
CYBERWAVE_SIMULATE_CMD | Simulation command template |
CYBERWAVE_TRAINING_CMD | Training command template |
CYBERWAVE_PROFILE_SLUG | Node profile slug |
CYBERWAVE_HEARTBEAT_INTERVAL | Heartbeat interval in seconds |
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):| Topic | Description |
|---|---|
cyberwave/cloud-node/{instance_uuid}/command | Commands addressed by UUID |
cyberwave/cloud-node/{slug}/command | Commands addressed by slug |
| Topic | Description |
|---|---|
cyberwave/cloud-node/{instance_uuid}/response | Command responses and workload results |
Commands
Sending a Command
| Command | Description |
|---|---|
inference | Run the inference command |
simulate | Run the simulation command |
training | Run the training command |
status | Get node status and active workloads |
cancel | Cancel a running workload by PID or request_id |
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
| Signal | Behavior |
|---|---|
SIGTERM (default) | Graceful termination, allows cleanup |
SIGINT | Interrupt (like Ctrl+C) |
SIGKILL | Immediate 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