AI & agents · 2026in progress
Stuti
A desktop assistant with memory and web search — on its way to an agent that can talk, and act with your permission.
- Role
- Design and build
- When
- 2026
- Stack
- Python · Gemini 2.5 Flash · Google Search grounding · SQLite · Tkinter
- Links
- Source
Why it needed to exist.
Most assistants forget you when the tab closes, and can’t touch the machine they run on. Stuti starts from the other end: it lives on your computer and remembers — and it is being built to do things there, carefully.
A personal assistant that lives on the desktop: a small Tkinter app, Gemini 2.5 Flash with Google Search grounding, and a local SQLite memory of past conversations. Next, it learns to listen and speak, to know your own files, and to act on the computer — only with your say-so.
Constraints
- Runs on an ordinary laptop: one setup script builds its environment and checks its imports.
- Memory stays local — a SQLite file you can open and read.
- Anything it will do on the computer must be shown and approved first. Never silent.
How Stuti answers — and where it’s going
Today: you type in a desktop app; a Gemini 2.5 Flash engine answers with the last twenty messages from local SQLite memory as context, grounds replies in Google Search when needed, and saves both sides. Next: voice, retrieval over your own files, and desktop actions behind a permission gate.
Today you type into a small desktop app. Next: speak to it, and hear it answer.
The last twenty messages come back from local SQLite when it starts. Next: retrieval over your own notes and files.
Gemini 2.5 Flash answers, and both sides of the exchange are saved back to memory.
When a question needs fresh facts, the reply is grounded in Google Search.
plannedEvery action on the computer — opening an app, moving a file — is shown to you and approved before it runs.
In use
What it looks like.
- Stuti AI
IllustrationThe desktop window, drawn from gui.py — the messages are examples. 
Stuti, in the open on GitHub. · captured Sep 2026 from github.com/bgantavya/stuti.ai
Three choices, and what each one cost.
- 01
SQLite as memory
Every message is saved to one local file, and the most recent twenty come back as context when the app starts: stored locally, inspectable, zero setup — though the conversation itself still goes to Gemini.
Trade-offTwenty messages is a window, not understanding — retrieval over past conversations and files is next.
- 02
Grounding instead of a search tool
Gemini’s built-in Google Search grounding decides when a question needs fresh facts, so there is no search step to orchestrate. A DuckDuckGo tool was written, then set aside.
Trade-offOne provider’s search, on that provider’s terms.
- 03
Permission before power
An assistant that can act on the computer must never surprise you, so every action will pass a gate that shows exactly what will happen and waits for a yes.
Trade-offMore clicks than a fully autonomous agent — deliberately.
What changed.
- past messages reloaded when it starts
- 20
- load_history(limit=20) in memoryDB.py, passed to the chat session as history.
- memory — one SQLite file on your machine
- Local
- its public cousin, on this site
- “stu”
- The site assistant also runs on Gemini, with its own tools and no memory.
The next version.
Voice in and out, retrieval over your own notes and files, and desktop automation — each action shown and approved before it runs.
Something like this on your plate? Write to me.