After years of building web apps where “performance” means a 2-second LCP and “local storage” is a suggestion, I have taken the last 2-3 months to explore how the desktop ecosystem has changed. Since I don’t like opening browsers masquerading as an app all the time, Rust and specifically Tauri looked great.
However I did lean back on AI coding a lot more with my latest project - Pexand. I wanted to try how much can I like the core desktop app building experience that I have not delved into for sometime.
Pexand a text expander. It’s written in Rust. And it’s gloriously, unapologetically “dumb.”
The “Sentinel” is Watching
Most modern apps want to know your location, your mother’s maiden name, and your favorite flavor of cloud storage. Pexand just wants to know if you typed ;shrug.
The app just monitors key strokes and upon finding a pattern replaces the abbreviation with an expanded form. While the core design suggestions were by multiple AI agents, I did try to make the app blow up here and there.
The way it works is interesting -
- A background thread called the Sentinel sits in the background, quietly monitoring your keystrokes using Windows hooks, waiting for a trigger.
- When the sentinel sees one, it reaches into a Radix Trie (because O(m) lookup is the only way to live) and swaps your shortcut for the real deal in under 5ms.
And.. that’s it.
Here’s what it looks like.

Why build another text expander?
- Cloud Fatigue: I don’t want my snippets synced to a server in Singapore. I want them in a local SQLite database that I own.
- The “Dumb” Factor: No AI. No “smart” suggestions. No collaboration features. Just: I type
;addr, it gives me my address. - Rust: Honestly? I just wanted to see if I could make a GUI app in Rust without losing my mind.
The Tech Stack
Building a native Windows app in 2026 feels like a superpower with AI coding.
- Iced: The GUI framework uses the Elm Architecture, which means state management did not actually make sense to me. But, something new for sure - no more “is this component re-rendering because of a ghost prop?”
- SQLite: Every snippet lives in a local
.dbfile. It’s ACID compliant, fast, and portable. If I want to move my snippets, I just move the file. I could also export / import snippets - just saying. - Radix Trie: This was most unfamiliar to me. Instead of looping through a list of snippets every time you press a key, the app traverses a tree. It’s fast!
I deliberately chose a tech stack that I had been putting away for sometime now. AI coding makes everything fast - even making terrible mistakes.
I was surprised and dismayed at the same time on how coding agents have evolved and helped through the process. That’s a story for another day.
Features for the Minimalist
- Dynamic Variables: Use
{{date}}or{{clipboard}}to inject context on the fly. - App Filtering: Want expansion in VS Code but not in your terminal? Just blacklist it.
- Fuzzy Search: The “Dashboard” (summoned with
Ctrl+Alt+Shift+P) lets you find snippets even if you only remember half the trigger.
Conclusion
Pexand isn’t going to change the world. It’s not a “platform.” It’s a tool.
It’s for the people who still appreciate a single .exe that does one thing and one thing.. uh, better than average. Or, it’s only for me, because I’m tired of copying and pasting from Notepad++ every time.
Check out the code, or download the binary and start being efficiently lazy: https://github.com/techformist/pexand