Skip to main content

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


Quick Start

1

Add a cyberwave.yml to your repo

Create a cyberwave.yml at the root of your project:
The {body} placeholder is replaced at runtime with the JSON parameters received from MQTT.
2

Set your API key

3

Start the node

The Cloud Node will:
  1. Run the install_script and report failures
  2. Register with the backend to get a UUID and slug
  3. Connect to MQTT and start accepting commands
  4. Send periodic heartbeats
  5. 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:
  1. Environment variableCYBERWAVE_API_KEY
  2. .env file in the current directory
  3. .env file at ~/.cyberwave/.env (shared config)
  4. Stored credentials from cyberwave-cli login (~/.cyberwave/credentials.json)
If you have already logged in with cyberwave-cli, the Cloud Node uses those credentials automatically.
Generate an API key from your Profile pageAPI 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 override cyberwave.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

  1. Command arrives via MQTT — Cloud Node spawns a detached subprocess (start_new_session=True)
  2. Output streams to log files in ~/.cyberwave/workload_logs/
  3. Monitor loop checks every 5 seconds, collects results when the process finishes, and publishes status back via MQTT
  4. On shutdown (Ctrl+C / SIGTERM) — the node stops accepting new commands and exits immediately; running workloads continue in the background

Output Files

Logs are also streamed to the backend in real-time for live monitoring.

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

On error, status is "error" and an error field replaces output.

Checking Status

Send a status command to see active workloads:

Cancelling Workloads

Cancel by PID or by the original workload request_id:
Supported signals:

API Key

Generate your API key

Python SDK

Control twins and robots from Python

Edge Overview

Run Cyberwave on edge devices