Sharing this because I learned things building it and the r/rust crowd usually has sharp takes on Tauri-vs-alternatives.
Hyerix is a desktop GUI for NATS / JetStream — streams, consumers, KV, Object Store, cluster topology. Tauri v2 frontend (React/TS), Rust backend, talking to clusters via async-nats. Site. Paid app, $19/mo after a trial — flagging up front because rules.
Stack notes that might be useful:
- async-nats: solid. The JetStream API surface is well-typed and the streaming consumer iterators map cleanly to Tokio. The thing that bit me was reconnect semantics — pull subscriptions need explicit re-creation on certain disconnect classes, the docs are thin on this.
- Tauri v2 IPC: the new event/channel API is much better than v1's emit/listen for streaming live data (consumer lag samples, message rate windows) from Rust to React. Backpressure still has to be handled by hand though — I ended up with a small ring buffer per subscription on the Rust side.
- Build size: Tauri's reputation for tiny binaries holds — release build is ~12MB on macOS. Most of that is the WebKit shim + the bundled async-nats deps.
- Cross-platform pain: Linux had the most paper cuts (webkit2gtk versions, AppImage signing). macOS notarization is solved-but-slow. Windows code signing is the usual nightmare; ended up with Azure Trusted Signing.
- What I'd do differently: started with tokio::sync::broadcast for fanning cluster updates to UI subscribers, switched to tokio::sync::watch for "latest state" channels — way fewer footguns.
Open to questions on any of the above. Especially curious if anyone's solved the JetStream pull-consumer reconnect dance more elegantly than I have.