A lightweight distributed reactive runtime for shared state synchronization, live instrumentation, and multi-client visualization.
Core idea
nil-xit separates execution, state, and frontend rendering.
- The
nil-xit runtime owns frame semantics, lifecycle, and message handling. Execution is expressed as frame logic; transport is delegated to nil-service.
- Frontends are ephemeral sessions
This enables live shared visualization of running systems, tests, and experiments without embedding a UI framework into the host application.
System model
- frontend (projection layer)
- stateless
- emits signals
- renders values
- nil-service (transport dependency)
- event loop
- message forwarding
- multiplexing clients
- no semantic awareness
- nil-xit (runtime kernel)
- owns frames
- owns semantics
- owns handlers
- owns state model
Frames (primary runtime unit)
Frames are stateful runtime objects and the only distributed unit in nil-xit.
A Frame encapsulates:
- Signals (event definitions)
- Values (reactive state objects)
Frame primitives
Signals are internal event channels.
Values are externally accessible reactive state objects exposed via handles.
Runtime Flow

- User constructs
nil-service (transport backend)
- User constructs
nil-xit with nil-service injected
- User defines Frames via
nil-xit, including their signals and values
- User starts
nil-service event loop
- One or more frontends connect and synchronize state
- Signals flow into frames from frontends
- Frame values are synchronized back to all frontends
Key properties
- Backend is the single source of truth
- State is automatically rehydrated on reconnect
- UI frameworks are interchangeable
What you can build
๐งช Test instrumentation
Wrap test frameworks (e.g. gtest) so each test emits observable frames for live visualization.
๐ Notebook integration
Attach Jupyter notebooks to a running runtime and visualize state in real time.
๐ Multi-client dashboards
Multiple independent UIs can observe and interact with the same execution.
Supported languages
- C / C++ (core)
- Python bindings
- Lua (experimental / internal)
Frontend is language-agnostic as long as it can communicate with nil-service.
Current reference frontend:
Status
- Actively used in internal systems
- Pre-v1 API (subject to change)
- Frontend ergonomics still evolving
Examples
- nil-sandbox-py
- simple Python sandbox using nil-clix, nil-service and nil-xit
- nil-xit-gtest (vcpkg)
- adapter layer of nil-xit to a testing framework
- nil-xit-gtest (deb system isntall)
- adapter layer of nil-xit to a testing framework
Repositories
Miscellaneous Repositories