Saqlain Abbas

saqlain-abbas.md / projects

OmniRecall the browser tab

See it on the home page

OmniRecall is a small desktop app that waits in the system tray. Press Alt+Space and a window opens at your cursor. Ask a question, read the answer, press Esc.

I built it because small questions break focus. Every one of them meant a browser, a tab, ChatGPT, a prompt and a wait.

Why I built it

Every developer knows the pain. You're deep in a coding session, you hit a question, and suddenly you're opening a browser, switching tabs, loading ChatGPT, typing a prompt and waiting. By the time you get your answer, you've lost your flow state entirely.

I wanted something different: an AI assistant that appears exactly where I need it, answers, and disappears when I'm done.

The OmniRecall window, opened at the cursor with Alt+Space

How it works

  • The shortcut is global. It is Alt+Space on Windows and Ctrl+Alt+Space on Linux, and you can change it in Settings.

  • It works with five providers: Gemini, OpenAI, Claude, GLM and Ollama. The first four run on your own API key. Ollama runs fully local models.

  • You can add PDFs, text, markdown and code files, then ask questions against them. Answers list the documents they drew on, and you can switch documents on or off per chat.

  • Documents and conversations are stored on your machine. Nothing leaves it unless you choose a cloud provider. Large documents are indexed for search when a Gemini API key is set.

  • The backend is Rust on Tauri. The interface is Preact and TypeScript.

It runs on Windows and Linux. macOS is planned.

The hard part

Building for both Windows and Linux meant different system APIs for global hotkey registration, placing the window at the cursor, the system tray and file access. Rust's conditional compilation, #[cfg(target_os)], made this manageable, but testing across platforms was still the biggest time sink.

Supporting several providers needed a clean layer between the app and each API. I designed a trait-based system in Rust that handles their different authentication methods, streaming and non-streaming responses, token counting, rate limits and errors.

What I learned

  • Tauri and Rust suit a tool like this, where Electron would feel sluggish. There is no Chromium runtime to boot.

  • Supporting many providers is easier when you treat the model as a stream of text, not as a "chat".

OmniRecall is source-available: free for personal and educational use, with commercial use by permission.

GitHub · Releases · The longer note

A portfolio, and the text file behind it.