Device integration
Make your own devices available on NOVA to use them in projects, or offer them to be used by others via OpenAPI (opens in a new tab).
Wandelbots NOVA currently supports two connection interfaces: Ethernet and Inputs/Outputs (IOs).
Ethernet allows for connections to protocols like Profinet, Mod-Bus, etc. The connection can be established via gateways, which map the interface to Ethernet.
Further interfaces, e.g. USB, are currently in development. If you want to use other connection interfaces to integrate your device, send us feedback (opens in a new tab) on which device integrations should be developed next.
Structure
The following structure of integrating a device on Wandelbots NOVA uses the Zivid Camera (opens in a new tab) as an example.

Currently, the app you provide can offer all endpoints. The only limit is the respective device.
We are currently working on the definition and introduction of interfaces that will enable cross-manufacturer access to diverse device types, e.g. cameras, grippers.
Build an app
Program an app with the programming language of your choice, provided an OpenAPI description can be offered, e.g. via Stoplight (opens in a new tab). For Typescript and Python, check out the respective quickstart guides:
Use the Wandelbots NOVA template nova app create -g python_app
to start with an integrated Stoplight UI.
Browse this example (opens in a new tab) to see how an OpenAPI description is provided in a python service.
Environment variables
Your app needs to be able to properly handle the service base path:
When your "robo-app" service runs in the cell "cell", the path of your service will be http://host/cell/robo-app
which means BASE_PATH=/cell/robo-app
.
BASE_PATH
: Available when running on a Wandelbots NOVA instance.NOVA_API
: The endpoint where the API is reachable from the container serving the application.CELL_NAME
: The name of the cell where the application is deployed.
Recommendations
Every service installed via the Wandelbots NOVA API application endpoints is displayed as an app on the NOVA home screen. We therefore recommend to provide a user interface for the following:
- Description of the service's API.
- Build service, to make it quicker and easier to discover the possibilities of the service. Mainly:
- A basic user interface when requesting the base path of the service which will be opened when clicking the home screen icon,
- A basic user interface, e.g. Stoplight, to access the device states or functionality.
Deployment
To deploy an app onto NOVA, you need to containerize it. The container image must be uploaded to an OCI registry (opens in a new tab) that the NOVA instance will have access to:

To install the app on the Wandelbots NOVA instance, use the Wandelbots NOVA API Add Application endpoint (opens in a new tab) POST /api/v1/cells/{cell}/apps
.
If you've used the Typescript or Python template, run the CLI command nova app install
.
This command builds and pushes your image while generating the description and executing the Add Application request.
To deploy your app onto NOVA, an extensive description is required:
# The name of the app, how it will be displayed on the NOVA homescreen
name: rerun
# URL Path to an application icon, which will pop up on the NOVA homescreen.
# The path starts at the root level.
appIcon: app_icon.png
containerImage:
# This is the image which will be running your service
image: wandelbots.azurecr.io/nova-apps/rerun:0.0.30
# The credentials required to pull images from private registries
credentials:
registry: wandelbots.azurecr.io
user: your-username
password: your-password
# The port where your app serving the openapi interface, app_icon and small ui.
port: 3001
# Additional environment variables which will be available in the container.
environment:
- name: ENV_VAR_NAME
value: env_var_value
# The path and capacity of a volume that retains data across application restarts.
# The maximal requestable capacity is 300Mi. If you need more capacity consider using storeObject.
storage:
mountPath: /data
# The amount of local storage available for the application.
# NOTE: The capacity can NEVER be reduced!
capacity: 100Mi
# (Optional) Additional resources that the application requires.
resources:
# Number of GPUs the application requires (Nvidia GPUs support will be provided soon).
intel-gpu: 1
Apply the description either with curl or via the NOVA CLI:
# assuming the above yaml is available as file (json will also work)
nova app install your-app.yaml
Your app is now displayed on the NOVA home screen. 🚀
The external URL of the your app root will be http://host/<cell-name>/<your-app-name>
.
If you want to communicate with this app from within other apps on NOVA, use http://<your-app-name>:port/<cell-name>/<your-app-name>
.
Publish your app in the app store
Make your device available to other users by sharing the deployment description in the NOVA catalog (opens in a new tab). Open a Pull Request and after a review the app will be added to the catalog.
An entry for "rerun" in NOVA catalog might look like this:
# yaml-language-server: $schema=https://raw.githubusercontent.com/wandelbotsgmbh/catalog/refs/heads/main/schema.json
---
version: 0.0.30
name: rerun
description: |
The multimodal data stack
Open source log handling and visualization for spatial and embodied AI.
Managed infrastructure to ingest, store, analyze, and stream data at scale with built-in visual debugging.
Fast, flexible, and easy to use.
homepage: https://rerun.io/
app:
name: rerun
appIcon: app_icon.png
containerImage:
image: wandelbots.azurecr.io/nova-apps/rerun:0.0.30
secrets:
- name: pull-secret-wandelbots-azurecr-io
port: 3001
The app is made available in the nova catalog list
and can be installed with nova app install rerun
.
NOVA users can then downnload it in the NOVA app store.