{"id":35809755,"url":"https://github.com/wandelbotsgmbh/wandelbots-nova","last_synced_at":"2026-02-19T17:00:41.923Z","repository":{"id":266689518,"uuid":"888986401","full_name":"wandelbotsgmbh/wandelbots-nova","owner":"wandelbotsgmbh","description":"NOVA Python SDK https://deepwiki.com/wandelbotsgmbh/wandelbots-nova","archived":false,"fork":false,"pushed_at":"2026-02-13T16:44:23.000Z","size":139259,"stargazers_count":35,"open_issues_count":7,"forks_count":4,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-02-14T00:45:26.563Z","etag":null,"topics":["industrial-automation","path-planning","robotics","robotics-programming"],"latest_commit_sha":null,"homepage":"https://wandelbots.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wandelbotsgmbh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-15T11:42:39.000Z","updated_at":"2026-02-13T16:44:26.000Z","dependencies_parsed_at":"2026-02-13T19:03:25.480Z","dependency_job_id":null,"html_url":"https://github.com/wandelbotsgmbh/wandelbots-nova","commit_stats":null,"previous_names":["wandelbotsgmbh/nova-python-sdk","wandelbotsgmbh/wandelbots-nova","wandelbotsgmbh/nova-py"],"tags_count":277,"template":false,"template_full_name":null,"purl":"pkg:github/wandelbotsgmbh/wandelbots-nova","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandelbotsgmbh%2Fwandelbots-nova","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandelbotsgmbh%2Fwandelbots-nova/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandelbotsgmbh%2Fwandelbots-nova/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandelbotsgmbh%2Fwandelbots-nova/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wandelbotsgmbh","download_url":"https://codeload.github.com/wandelbotsgmbh/wandelbots-nova/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandelbotsgmbh%2Fwandelbots-nova/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29623545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["industrial-automation","path-planning","robotics","robotics-programming"],"created_at":"2026-01-07T14:16:23.065Z","updated_at":"2026-02-19T17:00:41.917Z","avatar_url":"https://github.com/wandelbotsgmbh.png","language":"Python","readme":"# wandelbots-nova (Python SDK)\n\n[![PyPI version](https://badge.fury.io/py/wandelbots-nova.svg)](https://badge.fury.io/py/wandelbots-nova)\n[![License](https://img.shields.io/github/license/wandelbotsgmbh/wandelbots-nova.svg)](https://github.com/wandelbotsgmbh/wandelbots-nova/blob/main/LICENSE)\n[![Build status](https://github.com/wandelbotsgmbh/wandelbots-nova/actions/workflows/nova-release.yaml/badge.svg)](https://github.com/wandelbotsgmbh/wandelbots-nova/actions/workflows/nova-release.yaml)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/wandelbotsgmbh/wandelbots-nova)\n\nThis library provides an SDK for the Wandelbots NOVA API.\n\nThe SDK will help you to build your own apps and services using Python on top of Wandelbots NOVA and makes programming a robot as easy as possible.\n\n[417768496-f6157e4b-eea8-4b96-b302-1f3864ae44a9.webm](https://github.com/user-attachments/assets/ca7de6ba-c78d-414f-ae8f-f76d0890caf3)\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Prerequisites](#prerequisites)\n- [Quickstart](#quickstart)\n- [Installation](#installation)\n  - [Install with pip](#install-with-pip)\n  - [Install with uv and rerun visualization](#install-with-uv-and-rerun-visualization)\n  - [Configure environment variables](#configure-environment-variables)\n- [Using the SDK](#using-the-sdk)\n  - [API essentials](#api-essentials)\n  - [Example gallery](#example-gallery)\n- [Wandelscript](#wandelscript)\n- [NOVAx](#novax)\n- [Development](#development)\n- [Release process](#release-process)\n- [Additional resources](#additional-resources)\n\n## Overview\n\n[Wandelbots NOVA OS](https://www.wandelbots.com/) is a robot-agnostic operating system that enables developers to plan, program, control, and operate fleets of six-axis industrial robots through a unified API, across all major robot brands. It integrates modern development tools like Python and JavaScript APIs with AI-based control and motion planning, allowing developers to build automation tasks such as gluing, grinding, welding, and palletizing without needing to account for hardware differences. The software offers a powerful set of tools that support the creation of custom automation solutions throughout the entire automation lifecycle.\n\n## Prerequisites\n\n- A running NOVA instance (Get a Wandelbots NOVA account on [wandelbots.com](https://www.wandelbots.com/contact))\n- Valid NOVA API credentials\n- Python \u003e=3.11\n\n## Quickstart\n\n1. Install the SDK using `pip` or set up a local `uv` project with extras for visualization. Refer to the [Installation](#installation) section for both options.\n2. Copy `.env.template` to `.env` and fill in the base URL and access token for your NOVA deployment. Details are covered in [Configure environment variables](#configure-environment-variables).\n3. Run an example to validate the setup, e.g. `uv run python examples/start_here.py`. Install the rerun extras and execute `uv run download-models` if you want interactive 3D visualization out of the box.\n\n## Installation\n\n### Install with pip\n\nInstall the library using pip:\n\n```bash\npip install wandelbots-nova\n```\n\n### Install with uv and rerun visualization\n\nInstall [uv](https://docs.astral.sh/uv/getting-started/installation/) on your system.\n\nInitialize a new uv project with the following command.\n\n```bash\nuv init\n```\n\nInstall the library with the `nova-rerun-bridge` extra to use the visualization tool [rerun](https://rerun.io/).\nSee [extension README.md](nova_rerun_bridge/README.md) for further details.\n\n```bash\nuv add wandelbots-nova --extra nova-rerun-bridge\n```\n\nDownload the robot models to visualize them in the rerun viewer.\n\n```bash\nuv run download-models\n```\n\n### Configure Environment Variables\n\nCopy the provided `.env.template` file and rename it to `.env`:\n\n```bash\ncp .env.template .env\n```\n\nOpen the `.env` file in a text editor and fill in the values. Here's what each variable does:\n\n| Variable            | Description                                                                      | Required | Default | Example                                          |\n| ------------------- | -------------------------------------------------------------------------------- | -------- | ------- | ------------------------------------------------ |\n| `NOVA_API`          | Base URL or hostname of the Wandelbots NOVA server instance                      | Yes      | None    | `https://nova.example.com` or `http://172.0.0.1` |\n| `NOVA_ACCESS_TOKEN` | Pre-obtained access token for Wandelbots NOVA (cloud or self-hosted deployments) | Yes\\*    | None    | `eyJhbGciOi...`                                  |\n\n\u003e **Note:**\n\u003e\n\u003e - `NOVA_API` is mandatory in every deployment. Always point it to the NOVA base URL you are targeting.\n\u003e - `NOVA_ACCESS_TOKEN` is the supported authentication mechanism. It is mandatory for the Wandelbots Cloud environment; for self-hosted deployments generate and supply a token with the required permissions.\n\u003e - Username/password authentication (`NOVA_USERNAME`/`NOVA_PASSWORD`) is deprecated and no longer supported.\n\n## Using the SDK\n\n### API essentials\n\nImport the library in your code to get started.\n\n```python\nfrom nova import Nova\n```\n\nYou can access the automatically generated NOVA API client using the `api` module.\n\n```python\nfrom nova import api\n```\n\n### Example gallery\n\nCurated examples in this repository showcase typical SDK workflows:\n\n1. **Basic usage**: [start_here.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/start_here.py)\n2. **Robot movement and I/O control**: [plan_and_execute.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/plan_and_execute.py)\n3. **Collision-free movement**: [collision_setup.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/collision_setup.py)\n\n\u003cimg width=\"100%\" alt=\"collision_free\" src=\"https://github.com/user-attachments/assets/0416151f-1304-46e2-a4ab-485fcda766fc\" /\u003e\n\n4. **Multiple robot coordination**: [move_multiple_robots.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/move_multiple_robots.py)\n5. **3D visualization with rerun**: [welding.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/welding.py)\n\n\u003e **Note**: Install [rerun extras](#install-with-uv-and-rerun-visualization) to enable visualization\n\n\u003cimg width=\"1242\" alt=\"pointcloud\" src=\"https://github.com/user-attachments/assets/8e981f09-81ae-4e71-9851-42611f6b1843\" /\u003e\n\n6. **Custom TCPs (Tool Center Points)**: [visualize_tool.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/visualize_tool.py)\n\n\u003cimg width=\"100%\" alt=\"trajectory\" src=\"https://github.com/user-attachments/assets/649de0b7-d90a-4095-ad51-d38d3ac2e716\" /\u003e\n\n7. **Custom mounting with multiple robots**: [robocore.py](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/robocore.py)\n\n\u003cimg width=\"100%\" alt=\"thumbnail\" src=\"https://github.com/user-attachments/assets/6f0c441e-b133-4a3a-bf0e-0e947d3efad4\" /\u003e\n\n## Wandelscript\n\nWandelscript is a domain-specific language for programming robots.\nIt is a declarative language that allows you to describe the robot's behavior in a high-level way.\nWandelscript is suited to get yourself familiar with robot programming.\n\n```bash\nuv add wandelbots-nova --extra wandelscript\n```\n\nHere is a simple example of a Wandelscript program:\n\n```python\nrobot = get_controller(\"controller\")[0]\ntcp(\"Flange\")\nhome = read(robot, \"pose\")\nsync\n\n# Set the velocity of the robot to 200 mm/s\nvelocity(200)\n\nfor i = 0..3:\n    move via ptp() to home\n    # Move to a pose concatenating the home pose\n    move via line() to (50, 20, 30, 0, 0, 0) :: home\n    move via line() to (100, 20, 30, 0, 0, 0) :: home\n    move via line() to (50, 20, 30, 0, 0, 0) :: home\n    move via ptp() to home\n```\n\nTo get started, use the [Quickstart](https://docs.wandelbots.io/latest/pathplanning-maintained/wandelscript/quickstart).\nFor implementation details or contributing to Wandelscript, refer to the [Wandelscript readme](/wandelscript/README.md).\n\n## NOVAx\n\nNOVAx is an app framework for building server applications on top of Wandelbots NOVA.\nIt provides common core concepts like the handling of programs and their execution.\n\nYou can create a new NOVAx app using the [NOVA CLI](https://github.com/wandelbotsgmbh/nova-cli) generator:\n\n```bash\nnova app create \"your-nova-app\" -g python_app\n```\n\nFor more information on using NOVAx see the [README](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/your-nova-app/README.md). Explore [this example](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples/your-nova-app/your-nova-app/app.py) to use the NOVAx entry point.\n\n\u003e **Important:** When using NOVAx, you must import the actual program functions from their respective Python files. Only importing the program files won't suffice. This ensures proper function registration and execution within the NOVAx runtime environment.\n\n## Development\n\nTo install development dependencies, run\n\n```bash\nuv sync --extra \"nova-rerun-bridge\"\n```\n\n### Formatting\n\n```bash\nuv run ruff format\nuv run ruff check --select I --fix\n```\n\n### Yaml linting\n\n```bash\ndocker run --rm -it -v $(pwd):/data cytopia/yamllint -d .yamllint .\n```\n\n### Branch versions for testing\n\nWhen working with feature branches or forks, it can be helpful to test the library as a dependency in other projects before merging.\nYou can specify custom sources in your pyproject.toml to pull the library from a specific branch:\n\nUsing PEP 621-style table syntax:\n\n```toml\nwandelbots-nova = { git = \"https://github.com/wandelbotsgmbh/wandelbots-nova.git\", branch = \"fix/http-prefix\" }\n```\n\nUsing PEP 508 direct URL syntax:\n\n```toml\nwandelbots-nova @ git+https://github.com/wandelbotsgmbh/wandelbots-nova.git@fix/http-prefix\n```\n\n## Release process\n\n### Branch behaviour overview\n\n| Branch      | Purpose                                                | Published to                           | Example version      |\n| ----------- | ------------------------------------------------------ | -------------------------------------- | -------------------- |\n| `main`      | Stable releases (semantic versioning vX.Y.Z)           | PyPI (`pip install wandelbots-nova`)   | `v1.13.0`            |\n| `release/*` | LTS-releases, pre-releases or hotfixes for older lines | PyPI (labeled with release suffix)     | `v1.8.7-release-1.x` |\n| any other   | Development builds                                     | GitHub actions (not published to PyPI) | `e4c8af0647839...`   |\n\n### Stable releases from `main`\n\nMerging into main triggers the release workflow:\n\n1. `semantic-release` analyzes commit messages and bumps the version automatically.\n2. A source distribution and wheel are built and uploaded to PyPI.\n3. A GitHub release is created (or updated) with the release assets.\n\n### LTS releases from `release/\\*`\n\nIf you're on older major versions or under a special LTS contract:\n\n1. Use (or create) a branch like `release/1.x`, `release/customer-foo`, etc.\n2. Every commit to these branches triggers the same workflow as on `main`.\n3. Versions include the branch name to prevent collisions, e.g. `v1.8.7-release-1.x`\n\n### Create a dev build (manual)\n\nNeed a temporary test build? Use GitHub actions:\n\n1. Go to the [actions tab](https://github.com/wandelbotsgmbh/wandelbots-nova/actions).\n2. Find **Nova SDK: Build dev wheel** and click `Run workflow`.\n3. Select a branch and trigger the job.\n4. After completion, open the [Installation step](#installation) to copy the ready-to-use `pip install` command:\n\n   ```bash\n       pip install \"wandelbots-nova @ git+https://github.com/wandelbotsgmbh/wandelbots-nova.git@\u003ccommit\u003e\"\n   ```\n\n## Additional resources\n\n- [Examples](https://github.com/wandelbotsgmbh/wandelbots-nova/tree/main/examples) covering basic to advanced SDK scenarios\n- [Technical wiki](https://deepwiki.com/wandelbotsgmbh/wandelbots-nova) with architecture notes and troubleshooting tips\n- [Official documentation](https://docs.wandelbots.io/) for platform concepts and API guides\n- [Code documentation](https://wandelbotsgmbh.github.io/wandelbots-nova/) generated from the latest SDK build\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwandelbotsgmbh%2Fwandelbots-nova","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwandelbotsgmbh%2Fwandelbots-nova","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwandelbotsgmbh%2Fwandelbots-nova/lists"}