Sathi.ai: A Multi-Provider AI Desktop Client
- published
- reading time
- 2 minutes
Sathi.ai is a Generative AI client plugin I built for Dank Material Shell (DMS) . It allows users to interact with multiple Large Language Models (LLMs) directly from their Linux desktop shell, bypassing the need to constantly context-switch into a browser.
The Motivation
Over the last few months, I grew increasingly frustrated with Windows 11 and decided to transition my primary workstations to Arch Linux. During this shift, I discovered Niri (a scrollable-tiling Wayland compositor) and fell in love with Dank Material Shell—a clean, slightly opinionated, and highly customizable desktop environment.
While the ecosystem was fantastic, I noticed a gap: I needed a fast, lightweight Linux AI client. I wanted something I could ping with a quick query instantly, rather than relying on heavy web wrappers. DMS’s plugin system provided the perfect foundation, so I decided to build it myself.
Architecture & Tech Stack
The core application is built using QML. The most significant architectural challenge was designing a unified interface that could seamlessly communicate with completely different AI backends.
Currently, Sathi.ai supports:
By abstracting the API layers, users can select their preferred model from a single dropdown, set custom System Prompts to control context, and receive responses formatted in full Markdown.
“Vibe Coding” and AI-Assisted Development
Building Sathi.ai was my first real foray into what the community calls “vibe coding.”
As someone who still gets a dopamine hit from coding and watching things come to life, I took pride in architecting the core engine, designing the state management, and resolving the complex logic by hand. Also just making the initial UI work how I wanted. However, once the primary shell and the initial Gemini integration were working, I leveraged AI as a force multiplier. I used LLMs to rapidly scaffold the repetitive API client boilerplates for OpenAI and Anthropic based on my initial design patterns.
It worked out great: I did the heavy lifting and systems architecture, and the AI handled the tedious, monotonous tasks.
What’s Next
The widget was originally conceived as the only AI widget for DMS, and I am still really happy with the daily utility it provides. A recent DMS update introduced some breaking changes that I am currently working on resolving. Once stabilized, my next target is implementing multi-modal support to handle image generation directly from the desktop - and re-jig the settings screen.