open-source · model-driven · OPC UA

One design file.
A complete OPC UA server.

quasarnova is a family of model-driven OPC UA server engines for industrial control. You describe your device in a single XML design; an engine turns it into a running, standards-compliant server — pip-installable Python, and industrial C++ with OPC UA Pub/Sub. Same file, no code generation, no vendor lock-in.

Get started Documentation $ pip install kilonova

How it works

The design is the single source of truth: your objects, variables, methods, types and constraints, in one declarative file. Engines consume it directly — the address space, configuration validation and device-logic plumbing come for free, and every engine serves the same server.

Design.xml — your device model
<d:class name="PowerSupply">
  <d:cachevariable name="voltage"
      dataType="OpcUa_Double" ... />
  <d:sourcevariable name="current"
      addressSpaceRead="synchronous" ... />
  <d:method name="switchOn"/>
</d:class>
terminal — a live server in seconds
$ pip install kilonova
$ kilonova run --design Design.xml \
               --config config.xml
serving on opc.tcp://0.0.0.0:4841/  (Ctrl-C to stop)

# device logic is plain Python:
@server.read("ps1.current")
def read_current(obj):
    # blocking is fine — runs in a thread pool
    return driver.read_current()

A family of engines

Same design language, different engines — each built for the place where it is strongest, plus the data-interchange layer that connects the systems they serve. Named for the brightest events in the sky.

kilonova AVAILABLE NOW
Python engine

The same design file served in pure Python — no code generation, no compiler, no build step. Device simulators, test rigs, FAT/SAT stand-ins, CI test doubles and edge gateways, live in seconds. Blocking device logic is safe by design. Passes the upstream framework's complete public conformance suite on every commit.

PyPI version · docs · repo
supernova RELEASED — EARLY
C++ engine

The full model-driven framework: generated address space, device-logic scaffolding, configuration and build system — extended with OPC UA Pub/Sub: publisher and subscriber over UADP (the standard's UDP wire format), on both supported OPC UA stacks, arrays included. For the servers that run the plant. Young release — hardening continues in the open.

hypernova RELEASED — EARLY
Data interchange

Publish/subscribe data interchange between control systems: named publications, a registry with a live browser, subscribe by name, boundary relays — the proven shape of CERN's DIP (Data Interchange Protocol), rebuilt on standard OPC UA Pub/Sub. Python and Java clients; every supernova server is a native publisher.

Latest release · docs · repo

On the roadmap, no code yet: dwarfnova (typed client libraries generated from the same design) and rednova (SCADA/HMI integration derived from the model).

Principles

One model, many engines

The design file is the contract. Engines may differ in language and runtime; the server a client sees is the same, attribute by attribute.

Conformance, proven

kilonova passes the complete public conformance suite of the upstream quasar framework — every case, checked on every commit, re-checked nightly against upstream's master.

Strict by default

Strict validation, no silent drops, loud warnings where an engine does less than the model asks. What an engine cannot do, it says out loud — at run time and in the docs.

Open source, no lock-in

supernova is LGPL-3.0; kilonova is BSD-2-Clause. Standard OPC UA on the wire, standard tooling everywhere else. Leave whenever you like — you won't want to.

Heritage. quasarnova builds on the lineage of the open-source quasar framework (LGPL-3.0), developed at CERN and running large-scale control systems for more than a decade. quasarnova is an independent project and is not affiliated with or endorsed by CERN. supernova is a fork of quasar and preserves its copyright and license notices in full.