Thuki is a floating AI overlay for macOS with its own local engine
context-ware floating secretary
At a glance
- What is it?
- Thuki is a macOS overlay that you summon with a double-tap of the Control key, running a bundled llama.cpp engine on your own machine so there is no cloud and no API key. The project is in maintenance mode, with new feature work stopped and bug fixes continuing.
- Who is it for?
- Adopt Thuki if you want a private, keyless AI overlay that works over any app, including fullscreen ones, and you are willing to download models yourself. Skip it if you need new features, because the project is in maintenance mode with feature work stopped, or if you are on Intel Macs, since the requirement is Apple Silicon from M1 to M5 and macOS 13.4 or later.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A key you press, not a place you go
Thuki is a floating AI secretary for macOS, and the framing sentence in the README is the best summary of the product idea: most local AI tools are a place you go, and Thuki is a key you press. You double-tap Control to summon a spotlight-style overlay anywhere, even over fullscreen apps, and the app runs entirely on your Mac with its own built-in engine, private, with no cloud and no API keys. The name comes from thư kí, Vietnamese for secretary, and the README describes it as a lightweight macOS overlay powered by local AI models running entirely on your own machine, built for quick, uninterrupted asks without ever leaving what you are doing. The audience is a Mac user who wants to ask a local model a question without alt-tabbing to a chat window, and the overlay-over-fullscreen behaviour is the part that makes it different from a menu bar app with a sidebar.
It arrives knowing what you were looking at
The first feature is context capture, and it is the one that changes the shape of a request. Highlight text in any app, double-tap Control, and the selection is already quoted, which the README calls one gesture and no copy-paste round trip. The second is screen context. A `/screen` command attaches your whole desktop as visual context for any vision-capable model, so the app sees your screen and not just your clipboard. That is a meaningful difference from a clipboard-only tool, and it is the reason a vision-capable model is on the supported list. The overlay is command-driven rather than menu-driven: every task is a verb, with slash commands and no dropdowns or settings to hunt through. The documented commands include `/screen` to attach the desktop as context and `/search` to force a web lookup, and the screen capture is a separate step you take deliberately rather than something always on.
A bundled llama.cpp, with Ollama as an alternative
The built-in engine is the default and it is a bundled llama.cpp `llama-server` that Thuki spawns, supervises and shuts down for you. You download GGUF models such as Llama, Gemma and Qwen from the Hugging Face Hub right inside the app, and switch between them from the ask bar. There are no accounts, no API keys and no cost per query. The alternative provider is Ollama: if you already run your own Ollama install, you can switch to it at any time from Settings, and the documentation for the full model library and provider list is in `docs/models-and-providers.md`. The design choice worth noting is that the engine is a separate process under the app's control rather than a library linked into it. That keeps the Rust side of the application free of an inference runtime, at the cost of one process to start and stop.
Privacy that comes from where the inference runs
The privacy section states the mechanism rather than the marketing: inference runs on-device, so prompts, the attached screen content and the conversation history stay on the machine. The README lists no accounts, no per-query cost and no telemetry, and says conversations are kept in a local database and nowhere else. It also works offline, since once a model is downloaded inference needs no connection, with only model downloads and web search using the network, and auto search being one toggle away from off. The `docs/install.md` page referenced from the README is the place to look for the privacy policy in full. The `/search` command is the deliberate escape hatch, since it forces a lookup and returns cited results, and the built-in web search is described as keyless and cited. The distinction matters for anyone who wants to reason about what leaves the machine: local inference and local history are the default, and the network path is opt-in per command.
Installing from a script that verifies its own signature
The install is a single command.
curl -fsSL https://thuki.app/install.sh | shWhat that command does is worth reading, because piping a remote script into a shell deserves more than a shrug. The README says it downloads the latest `Thuki.dmg` over HTTPS, verifies its RSA-4096 signature with the `openssl` already on your Mac, and installs it to `/Applications`. The requirement is macOS 13.4, Ventura or later, on Apple Silicon from M1 to M5, so Intel Macs are out entirely. The other paths are documented on the same install page, which is linked from the README: a page for inspecting the install script, a manual DMG download, a nightly build that sits side by side with the stable one, and instructions for building from source. That inspect link is the one to use if you want to know what the script does before it runs, which is exactly the habit the signature check is there to support.
Maintenance mode, and what that means for a project you depend on
The project status section is unusually explicit, and you should read it before adopting rather than after. Thuki is in maintenance mode: the app is stable, free and fully open source, and it keeps doing everything described in the README. The author's focus has moved to other early-stage products, so new feature work has stopped. What continues is specific: reported bugs, crashes and security issues get triaged and fixed, dependency, engine and macOS compatibility updates keep landing, and pull requests are welcome and reviewed. The README says that if Thuki is part of your workflow it will keep working, and that the Apache 2.0 licence means you are free to fork it and take it further. The releases show v0.16.3 and a nightly build in August 2026, with the last push on 2026-10-20. So the code is still moving, but the feature roadmap is closed, and for a project whose value depends on keeping pace with new models and new macOS versions, that is the trade you are making.
A Tauri shell with a TypeScript front end and a Rust core
The repository layout describes the build. There is a `src-tauri/` directory holding the Rust side and a `src/` directory for the front end, with `vite.config.ts` and `vitest.config.ts` at the top level, and the package manifest names the project `thuki` at version 0.16.3. The scripts show the two halves and how they are developed. `dev` runs the engine ensure step and then `tauri dev`, while `frontend:dev` is plain vite. The engine ensure script is `bun scripts/ensure-llama-server.ts`, and there is a `generate:commands` script that produces the command list, which is why the slash commands are generated rather than hand-listed. Linting splits the same way, with eslint for the front end and cargo clippy with warnings denied for the backend, and formatting pairs prettier with cargo fmt. Tests are vitest for the front end and cargo test for the Rust side, with a combined `test:all`, and the backend coverage target requires 100 percent line coverage outside the main and lib files. The build has separate frontend and backend targets, and the release build enables updater artifacts. Releases are managed with release-please, and the repository carries a RELEASING.md alongside a CHANGELOG.md and a SECURITY.md.
Editorial conclusion
Adopt Thuki if you want a private, keyless AI overlay that works over any app, including fullscreen ones, and you are willing to download models yourself. Skip it if you need new features, because the project is in maintenance mode with feature work stopped, or if you are on Intel Macs, since the requirement is Apple Silicon from M1 to M5 and macOS 13.4 or later. Before you commit, read the install script rather than piping it straight to a shell, and check the licence file, because the project record and the README name different terms.
Frequently asked questions
How do I install Thuki on macOS?
Run `curl -fsSL https://thuki.app/install.sh | sh`. It downloads the latest `Thuki.dmg` over HTTPS, verifies its RSA-4096 signature with the `openssl` already on your Mac, and installs it to `/Applications`. A manual DMG path, a nightly build and a build from source are also documented.
What are the system requirements for Thuki?
macOS 13.4, Ventura or later, and Apple Silicon from M1 to M5. The project is macOS only, with a platform badge for macOS and no mention of Intel support.
Does Thuki send my data to a cloud service?
No. Inference runs on-device using a bundled llama.cpp server, there are no accounts and no telemetry, and conversations are kept in a local database. Once a model is downloaded, inference works offline, with only model downloads and the explicit `/search` command using the network.
Is Thuki still getting new features?
No, the project is in maintenance mode and new feature work has stopped because the author's focus has moved elsewhere. Reported bugs, crashes and security issues are still triaged and fixed, dependency, engine and macOS compatibility updates keep landing, and pull requests are reviewed.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/quiet-node-thuki)Was this useful?