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.
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, plus the data-interchange layer that connects the systems they serve. 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 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.
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.
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.