Subscribe to NATS subjects with a formula. Publish cell values back. No development required — download the pre-built .xll and load it straight into Excel. MIT licensed and free to use.
Subscribe, aggregate, and publish. All from a cell formula.
number, bool, string, or a JSON path to extract a field.
NATS.SUB is a general-purpose function, but you can build typed wrappers that embed your own subject naming conventions. A custom RTD function wrapping the same infrastructure gives users a cleaner, domain-specific API.
Instead of exposing raw NATS subjects to spreadsheet users, they get functions that match your schema. The subject construction happens in Zig. Parameter names, descriptions, and category all surface in Excel's formula bar and Insert Function dialog.
// Generic =NATS.SUB("acmeco.trades.AAPL.vwap") // Your wrapper - same RTD infrastructure, // subject construction in Zig =ACMECO.TRADES("AAPL", "vwap")
The connector is built on zigxll's RTD server framework. The NATS client (via the official nats.c library) runs on a background thread pool. Incoming messages are handed off to Excel's RTD polling mechanism lock-free.
RTD registration writes to HKCU automatically when the XLL loads.
Memory is arena-allocated per refresh cycle. UTF-16 conversions for Excel and null-terminated subject copies for the C API are handled transparently.
Excel is already a reactive computation engine with decades of financial modelling, statistical, and domain-specific functions built in. It recalculates on change, supports rich visualisation, and is the tool analysts already use. Connect it to NATS and that computation runs against live data instead of snapshots.
A worked example: a Python script publishes FX tick data to NATS. Excel subscribes, derives cross-rates, computes rolling statistics, detects breakouts, and publishes alerts back to NATS. Downstream subscribers receive those alerts without knowing their source.
Three new functions. No Kubernetes. No stream processing framework. Useful for analysts who already live in Excel and want to wire directly into event infrastructure, or for prototyping pipeline logic against live data before porting it somewhere more robust.
Drop a config.json alongside the .xll or in %APPDATA%\zigxll-nats\. Supports TLS, works with Synadia Cloud, and all standard auth schemes.
{
"server": "nats://127.0.0.1:4222", // or nats://user:pass@host:4222
"servers": ["nats://n1:4222", "nats://n2:4222"], // multiple URLs for failover
"tls": false,
"credentials_file": "", // path to .creds file for NKey/JWT auth
"token": "", // token auth
"connect_timeout_ms": 5000,
"reconnect_wait_ms": 2000
}
Download the pre-built .xll, drop it anywhere, double-click to load in Excel. No development required. MIT licensed — free to use, fork, or embed. If you do find it useful, we’d love to hear what you’re building with it.