Plan before you install
1
Lay out environments and twins
Create one environment per device, or per cell, with the twins that device drives. Each twin needs a Docker-based driver in its metadata (
docker_image or services). Otherwise the installer does not offer it as an edge twin. You can create environments and twins from the web app, the SDK, or REST.2
Choose names that become good slugs
Every environment and twin gets a slug in the form
{workspace}/{type}/{name}, for example acme/envs/line-3-cell-2. Slugs are generated from names, and a collision gets a -2 suffix. Pick a naming scheme such as site, line and cell before you create anything. Slug system3
Create a service token
In Workspace settings → Tokens, create a service token. It belongs to the workspace, holds its own role, and keeps working after the person who created it leaves. Use one token per customer workspace, or per site if you want to revoke sites independently. API tokens
Install one device headlessly
1
Prepare the host
Give the device a unique hostname. Edge Core’s device fingerprint starts with the hostname. On Linux the installer needs root, and it installs Docker through
apt-get if Docker is missing.2
Install the CLI
pip install cyberwave-cli.3
Run the installer without prompts
cyberwave pair is an alias of cyberwave edge install and takes the same options.4
Verify
Installer options
All options are listed bycyberwave edge install --help.
Useful environment variables:
Bind more than one twin
A scripted install binds one twin. To bind more, you have two options. You can run the installer interactively once on that device. Or you can pair each extra twin through the REST API, then restart Edge Core so it starts the new drivers:environment.json at install time. A twin paired later gets its driver but not its edge workflows.
Golden images
The installer and Edge Core write the device’s identity and credentials to~/.cyberwave/:
If you clone an image that already contains these files, every clone shares one identity and one token. Build the golden image with the OS, Docker and the CLI, but don’t pair it. Pair on first boot from your provisioning tool (cloud-init, Ansible, or a first-boot unit) after you set a unique hostname:
Name and inventory devices
- Twins and environments carry the slugs you planned, and those slugs appear in URLs, the SDK, the CLI and MCP tools.
- Edge records have a
nameandmetadata(GET /api/v1/edges,PUT /api/v1/edges/{uuid}). In the SDK,cw.edges.list()returns every edge the token can see. - Host facts. Every edge uploads host facts about every 30 s: CPU model, RAM, kernel, network interfaces, primary MAC address, board serial (Raspberry Pi, Jetson), active watchdogs, and the running Edge Core and SDK versions. Use the primary MAC for DHCP reservations and the serial for asset tracking.
Monitor the fleet
Liveness. Each edge shows one of three states:
Alerts raised by Edge Core.
driver_starting and worker_starting track startup and report image-pull progress. driver_start_failure, driver_restart_loop, model_download_failure and worker_start_failure report failures. List them with GET /api/v1/alerts and filter by twin_uuid, environment_uuid, status or severity. See Alerts.
Routing alerts out. Built-in routing to email, Slack or PagerDuty is not documented. One pattern to test: a workflow with an alert trigger, followed by send_email or an http_request to the tool’s incoming webhook. Validate it in a test workspace before you rely on it.
Logs. Driver container logs, including image-pull progress, are forwarded over MQTT to the twin’s Logs tab (driver logs). On the device, use cyberwave edge logs -f or journalctl -u cyberwave-edge-core.
Self-healing on the device. The systemd unit runs with Restart=always and WatchdogSec=60. On boards with /dev/watchdog, such as every Raspberry Pi, Edge Core also drives the hardware watchdog. Edge Core protects itself from the OOM killer, and on hosts with 4 GB of RAM or less it caps worker memory.
Restart an edge remotely
{"command": "restart_edge_core"} on the MQTT topic edges/{edge_uuid}/command and returns success, edge_uuid, request_id, command and topic. Edge Core then stops the worker, removes driver containers and cached twin files, downloads the environment again, and restarts drivers and the worker. The device must be connected to the broker to receive the command. On the device itself, cyberwave edge restart does the same through systemd.
Updates and version pinning
- Channels.
stableinstalls tagged releases.devandstaginginstall separate prerelease packages (cyberwave-edge-core-dev,cyberwave-edge-core-staging) that conflict with each other. Usestablefor customer sites. - Pinning.
--versioninstalls an exact version from the channel. Running the installer again with a new--versioninstalls or upgrades to that version. Check the running version withcyberwave-edge-core --version, or read it from host facts. - Rollout. Automatic Edge Core updates, fleet-wide staged rollouts and rollback are not documented. Drive upgrades from your own configuration management, canary first.
- Worker image. Mutable tags (
latest,dev,staging,nightlyand similar) are pulled on every worker restart. Immutable tags (versions, digests) are pulled only when missing. To pin one, setCYBERWAVE_WORKER_IMAGEin a systemd drop-in (sudo systemctl edit cyberwave-edge-core) and restart the service.
Decommission a device
- On the device, run
sudo cyberwave edge uninstall --yes. This stops the service, removes the unit, and releases the twins the device was paired to, so they can pair elsewhere. - If the device had its own token, revoke it in Workspace settings → Tokens. Revoking a service token stops it at once and deactivates its identity. Revoked tokens stay listed for audit.
- Delete the edge record if you no longer need it (
DELETE /api/v1/edges/{uuid}).
Next steps
Network and firewall
What each device must reach, including install and update hosts.
Integration surfaces
Connect fleet events to your MES, WMS or ticketing tools.
API tokens
Service tokens, roles, scoping and revocation.
Edge overview
Edge Core and the full
cyberwave edge command set.