Nyx

What is Nyx?

The Nyx project introduces a protocol, backward-compatible with INDI 1.7 (and indiserver), for controlling scientific hardware.

It enhances INDI by supporting multiple independent nodes, each embedding its own protocol stack. Nodes communicate using JSON over MQTT for slow control, and through a dedicated streaming system for real-time visualization. An alternative INDI compatibility mode, based on XML over TCP, is also supported. This architecture provides flexibility and scalability for distributed systems.

The core library is written in C11 and targets POSIX, Windows, and Arduino environments, with no external dependencies; Zlib is only required when compression is enabled.
Its low footprint makes Nyx suitable for deployment on microcontrollers (ESP32, Cortex-M, …).

The Nyx project also includes Nyx Lab, an integrated desktop and web interface for controlling Nyx and INDI devices through an addon-based design.


Dashboard designer

With Nyx Lab, graphically design custom slow control and visualization dashboards.

Transparent INDI integration

Existing INDI drivers can be used transparently via INDI → Nyx Bridge.

Nyx Lab addons

Nyx Lab can be extended through addons, as illustrated by this sky map.


↪ Installing the Nyx ecosystem

Open source

Nyx is released under “GPL 2 only” for the POSIX and Windows layers and under “LGPL 3 and later” for the Arduino one.

Cross-platform

The core library compiles on POSIX, Windows, Arduino, and GNU Radio environments.

Distributed and scalable

The infrastructure scales by deploying parallel nodes, each embedding its own protocol stack.

Nyx Lab

With Nyx Lab, control your devices locally or remotely. Alternatively, use any existing INDI 1.7-compliant client.

↪ Launch Nyx Lab Web

Easy development

Design your drivers efficiently with Nyx Assistant (visual designer) and Nyx Gen (code generator).

↪ Install Nyx Assistant

API documentation

Comprehensive documentation is provided for the protocol, the core library, as well as usage examples.

↪ Read the documentation

Typical Nyx architectures




Standard Nyx architecture.



Any Nyx driver can be loaded by indiserver, via TCP, and used by an INDI 1.7-compliant client.



Any existing INDI driver can be connected to the Nyx network via “INDI → Nyx Bridge”.

Getting started

Designing a driver / node with Nyx Assistant and Nyx Gen.

Deploying a Nyx node

Deploying a Nyx driver / node in an Arduino board.

Controlling Nyx devices

Using Nyx Lab, “INDI → Nyx Bridge” or any INDI 1.7-compliant software.

GNU Radio integration

Designing a Nyx + GNU Radio driver / node for gnuradio-companion.