kilonova¶
Describe your device once in a declarative XML model; kilonova serves it as a complete,
standards-compliant OPC UA server — in pure Python, with no code generation, no compiler
and no build step. It is the Python engine of the
quasarnova family and is fully compatible with
Design files from the quasar framework: same Design.xml + config.xml, same address
space — same NodeIds, same types, same behaviour. The upstream framework's complete
public conformance suite passes on every commit, on three operating systems.
Built for the jobs where a server must exist now: device simulators, test rigs, FAT/SAT stand-ins, CI test doubles, edge gateways and reference implementations. supernova is the engine for hardened plant-floor deployment — the same Design file runs on both.
Install¶
pip install kilonova
A server in one command¶
kilonova run --design Design.xml --config config.xml
# serving on opc.tcp://0.0.0.0:4841/ (Ctrl-C to stop)
Or as a library¶
from kilonova import Server
server = Server("Design.xml", config_path="config.xml")
@server.read("ps1.current")
def read_current(obj): # plain def: runs in a thread pool —
return driver.read_current() # blocking drivers cannot stall the server
@server.method("ps1.switchOn")
async def switch_on(obj):
await obj.setState(1)
async with server:
...
Where to next¶
- Device logic — the entire user API: cache and source variables, methods, blocking calls and the thread pool, synchronization domains.
- Architecture — how a Design file becomes a served address space.
- Calculated variables — formulas, exactly the upstream dialect.
- Parity — the conformance contract and current status.
- Changelog · PyPI · GitHub