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, or industrial C++ with OPC UA Pub/Sub and FX shipped. Same file, no code generation, no vendor lock-in.
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.
<d:class name="PowerSupply"> <d:cachevariable name="voltage" dataType="OpcUa_Double" ... /> <d:sourcevariable name="current" addressSpaceRead="synchronous" ... /> <d:method name="switchOn"/> </d:class>
$ 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()
Same design language, different engines — each built for the place where it is strongest. Named for the brightest events in the sky.
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.
The full model-driven framework: generated address space, device-logic scaffolding, configuration and build system — extended with OPC UA Pub/Sub (publisher and subscriber) and OPC UA FX (servers declare their datasets; any OPC UA client wires them together at runtime), identical on both supported OPC UA stacks. For the servers that run the plant.
Names over coordinates for the family's data: a registry that doubles as a live browser, relays for crossing network boundaries, bridges to DIP and classic OPC UA — and the OPC UA FX connection manager, wiring supernova servers together with one command and showing the resulting streams live, by name, in the browser.
On the roadmap, no code yet: dwarfnova (typed client libraries generated from the same design) and rednova (SCADA/HMI integration derived from the model).
The design file is the contract. Engines may differ in language and runtime; the server a client sees is the same, attribute by attribute.
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 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.
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.