Build your device service
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 example demonstrates how to integrate a device on NOVA using a Zivid camera and the NOVAx framework.

Currently, your app can expose all endpoints. The only limitation is the capabilities of your 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 a device service with NOVAx
Create your service using the NOVAx framework which provides OpenAPI-compliant endpoints and easy deployment to Wandelbots NOVA.
from novax import Novax
import uvicorn
@nova.program()
async def control_device(command: str):
# Your device control logic here
pass
novax = Novax()
app = novax.create_app(title="My Device Service")
novax.include_programs_router(app)
novax.register_program(control_device)
uvicorn.run(app, host="0.0.0.0", port=8000)
If your device uses robot inputs and outputs, consult the IO integration examples (opens in a new tab) on GitHub. For controller support, see controller.py (opens in a new tab).
Build and push to your registry manually or via CI/CD rerun bridge.
Environment variables
Ensure your app dynamically handles the base path.
For example, if the service is deployed in a cell named cell
and your app is called robo-app
, then BASE_PATH=/cell/robo-app
.
BASE_PATH
: Path to the service in the NOVA environmentNOVA_API
: Internal endpoint for service-to-service communicationCELL_NAME
: The current deployment context
UI Recommendations
Each installed service is shown as an app on the NOVA home screen. It is therefore recommended to:
- Describe your service’s OpenAPI interface
- Provide a lightweight UI at the root path. This could be a Stoplight-generated interface or a minimal HTML view, for example
Deployment
Direct container registry access
Build and push your application to a container registry like Azure Container Registry.
The NOVA Rerun Bridge app (opens in a new tab),
for example, is automatically built and pushed to wandelbots.azurecr.io/nova-apps/nova-rerun-bridge
.
External catalog system integration
You can update the external catalog through GitHub API calls, (see NOVA Rerun Bridge app (opens in a new tab)). When apps are built, they automatically trigger catalog updates via repository dispatch events to the wandelbotsgmbh/catalog repository.
Manual deployment via REST API
Deploy applications directly using the NOVA API endpoint POST /api/v2/cells/{cell}/apps
(opens in a new tab)
with curl or similar tools. This will provide the container image details in YAML/JSON format.
Development distribution
For development builds, the SDK provides a workflow to create installable packages directly from GitHub commits.
You can install specific commits using pip
with git URLs like pip install "wandelbots-nova @ git+https://github.com/wandelbotsgmbh/wandelbots-nova.git@{commit}"
.
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 being reviewed, the app will be added to the catalog.
NOVA users can then download it in the NOVA app store.