u/0xd3g3n

▲ 19 r/rust+1 crossposts

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.

https://preview.redd.it/cdb3w8my8azg1.png?width=3200&format=png&auto=webp&s=86295a0b4fb44d1092803141f6d6ea835fd85ea3

reddit.com
u/0xd3g3n — 9 days ago