Skip to content

quiet-node/thuki

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

262 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Thuki - WIP

Thuki: a private, local AI secretary overlay for macOS

A floating AI secretary for macOS. Double-tap Control to summon a spotlight-style overlay anywhere, even over fullscreen apps. It runs entirely on your Mac with its own built-in engine: private, with no cloud and no API keys.

Free and open source. Local inference costs you nothing, no per-query fees, ever.

Beta License thuki.app CI Platform: macOS

Star History Chart


No API keys. No subscriptions. No cloud. No telemetry.

Thuki (thư kí, Vietnamese for secretary) is 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're doing.

See it in action

Double-tap Control to summon Thuki from anywhere, even over fullscreen apps. Highlight text first and it opens with your selection pre-filled as a quote. Ask a question, attach your screen with /screen, get an answer, and dismiss without ever leaving what you're doing.

thuki-demo.2026-06-28.at.15.00.52.mp4

Install on macOS

Install the app, pick a model during onboarding, and start asking.

Recommended: one-line install

curl -fsSL https://thuki.app/install.sh | sh

This downloads the latest Thuki.dmg over HTTPS, verifies its RSA-4096 signature with the openssl already on your Mac, and installs it to /Applications. Because the download arrives without a quarantine flag, Thuki opens cleanly: no Gatekeeper "Apple could not verify" prompt and no manual xattr step.

Want to read the script before running it? Visiting thuki.app/install.sh downloads it; open the saved file in a text editor to review it first. Or read it in the terminal without saving anything:

curl -fsSL https://thuki.app/install.sh | less
Manual install (download the DMG)

Prefer to download by hand? Grab the DMG and clear the quarantine flag yourself.

  1. Download Thuki.dmg from the latest stable release, or grab the bleeding-edge build from the nightly channel, rebuilt automatically from main.

  2. Double-click Thuki.dmg to open it, then drag Thuki onto the Applications folder shortcut.

  3. Eject the disk image (drag it to Trash in the Finder sidebar, or right-click and choose Eject).

  4. Before opening Thuki for the first time, run this command in Terminal:

    xattr -rd com.apple.quarantine /Applications/Thuki.app

    Why is this needed? Thuki is a free, non-profit, open-source app distributed directly and not through the Mac App Store. Apple's Gatekeeper automatically blocks any app downloaded from the internet that has not gone through Apple's paid notarization process. This one-time command removes that block. It is safe and officially documented by Apple. The one-line installer above handles this for you.

  5. Open Thuki. It will appear in your menu bar.

Build from source

Prerequisites: Bun, Rust, and optionally Docker

# Clone and install dependencies
git clone https://github.com/quiet-node/thuki.git
cd thuki
bun install

# Launch in development mode (hot-reload frontend)
bun run dev

See CONTRIBUTING.md for the full development setup guide.

To produce a standalone app instead of running the dev server, build it and open the bundle directly:

bun run build:all
open src-tauri/target/release/bundle/macos/Thuki.app

First launch: macOS will ask for two permissions. Accessibility is required for the global keyboard shortcut that lets you summon Thuki from any app. Screen Recording is required for the /screen command and the screenshot button. Grant both once; they persist across restarts.

Pick a model: onboarding offers a curated set of starter models sized for different Macs and downloads your pick right inside the app. Model files are large (roughly 2-9 GB), so the first download can take several minutes; you only do it once. Add more models anytime, including any GGUF from Hugging Face, from Settings → Models → Discover.

Why Thuki?

Most AI tools require accounts, API keys, or subscriptions that bill you per token. Thuki is different:

  • It works everywhere. Double-tap Control and Thuki appears on your desktop, inside a browser, inside a terminal, and even in fullscreen apps. Your favorite AI chat apps can't do that.
  • 100% free local AI. You run the model on your own machine, so there is no per-query cost, ever.
  • Private by design. No remote server, no cloud backend, no analytics, no telemetry. Conversations live in a local SQLite database on your machine and nowhere else.
  • Works offline. Once your model is downloaded, Thuki runs without an internet connection.

Features

  • Always available: double-tap Control to summon the overlay from any app, including fullscreen apps.
  • Context-aware quotes: highlight any text, then double-tap Control to open Thuki with the selection pre-filled as a quote.
  • Built-in AI engine and model library: Thuki bundles a llama.cpp inference engine and lets you download curated Staff Picks, or any GGUF straight from Hugging Face, browse your Library, and switch the active model from the ask bar, all from inside the app.
  • Instant follow-ups: Thuki can keep your model warm in memory between messages, so replies start right away instead of stalling to reload the model on every ask.
  • Image input and screen capture: paste or drag images directly into the chat, or type /screen to capture your entire screen and attach it as context.
  • Read text in images, on any model: commands like /extract, /explain, /tldr, and /translate pull the text out of an attached image with on-device macOS Vision OCR, so they work on screenshots and documents even when the active model has no vision capability. They read text, not scenes: describing a textless image (say, a photo of the sky) still needs a vision model. See docs/ocr-commands.md.
  • Agentic search: type /search to run a multi-step, fully local search pipeline with a live trace of every query, fetch, and judgement step. Requires a one-time setup.
  • Slash commands: built-in shortcuts for search and prompt actions: /search, /extract, /explain, /translate, /rewrite, /tldr, /refine, /bullets, /todos.
  • On-demand reasoning: on models that support reasoning (not every model does), add /think to any message to make it work through the problem step by step before answering. It is off by default, so everyday asks stay fast.
  • Cross-model continuity: swap models mid-conversation and Thuki sanitizes history and filters capabilities (vision, reasoning) to whatever the new model supports.

Models & providers

Thuki runs models through a provider. The built-in engine is the default; Ollama is there if you'd rather bring your own.

Built-in engine (default)

A bundled llama.cpp llama-server that Thuki spawns, supervises, and shuts down for you. Download GGUF models such as Llama, Gemma, and Qwen from the Hugging Face Hub right inside the app, then switch between them from the ask bar. No accounts, no API keys, no cost per query.

Other supported providers

Thuki can also run inference through an external provider instead of the built-in engine.

  • Ollama. Prefer your own Ollama install? Switch to it anytime from Settings.
  • Your own OpenAI-compatible server (coming soon). Support for pointing Thuki at any OpenAI-compatible endpoint you run yourself (a local or self-hosted server) is on the roadmap.

See docs/models-and-providers.md for the full model library and provider guide.

Optional: enable /search

The /search command runs a fully local agentic search pipeline backed by two Docker services (SearXNG + a Trafilatura reader). It is not yet bundled with the app: enabling it currently requires cloning this repository to run the local services. Every other Thuki feature works without it. A built-in, zero-setup /search (no Docker to run yourself) is on the roadmap.

See docs/agentic-search.md#setup for the setup steps.

Privacy

Inference runs on-device, so your prompts, context, and replies never leave your Mac. There is no Thuki account, no API key, no cloud backend, and no telemetry. Conversation history lives in a local SQLite database on your machine; delete a conversation and it is gone. The only outbound requests are ones you start yourself, such as downloading a model.

See docs/privacy.md for exactly what runs locally and the few things that touch the network.

Architecture & security

Click to expand

Thuki is a Tauri v2 app: a Rust backend with a React and TypeScript frontend.

Layer Technology
Shell Tauri v2
Backend Rust (stable)
Frontend React 19, TypeScript, Tailwind CSS 4
Engine Bundled llama.cpp llama-server
Storage SQLite (bundled)

Process model

Two processes, with a narrow boundary between them:

  1. App (Tauri/React). The UI runs in a secure system webview with restricted IPC. Streaming uses Tauri's Channel API: the Rust backend sends typed StreamChunk enum variants, and the frontend hook accumulates tokens into React state.

  2. Engine. The default engine runs as a separate llama-server process that Thuki spawns, supervises, and kills on quit, bound to 127.0.0.1 only with its web UI disabled, so nothing outside your Mac can reach it. The pinned llama.cpp release is sha256-verified at build time, and every model download is checked against a pinned Hugging Face revision before install.

Window lifecycle

The app starts hidden. The hotkey or tray menu shows it. The window close button hides the window rather than quitting; quit is only available from the tray. ActivationPolicy::Accessory hides the Dock icon, and macOSPrivateApi: true enables the NSPanel that lets Thuki float above fullscreen apps.

For the engine internals (sidecar lifecycle, Keep Warm, the spawn line, model store), see docs/models-and-providers.md. For the full security posture and how to report an issue, see SECURITY.md.

Configuration

Thuki works on sensible defaults out of the box. Tweak anything from the in-app Settings panel (open it from the menu-bar icon) or by editing the TOML file at ~/Library/Application Support/com.quietnode.thuki/config.toml; both write to the same place.

See docs/configurations.md for the full schema, docs/commands.md for the slash command reference, and docs/troubleshooting.md when something goes wrong.

Contributing

Contributions are welcome! Read CONTRIBUTING.md to get started. Please follow the Code of Conduct.

Community ports

Thuki is macOS-only, but the community has been busy bringing it to other platforms. Huge shoutout to these contributors 🎊🚀!

Platform Repo Author
Windows 10/11 ThukiWin @ayzekhdawy
Windows 10/11 Mate @M31i55a

Each port is independently maintained by its author. For issues or questions about a specific port, head to that repo directly.

What's next for Thuki

Thuki is just getting started. Here's where it's headed:

  • Connect your tools: integrate via MCP with Gmail, Slack, Discord, Calendar, and more, so you can draft a reply, summarize a thread, or schedule a meeting without leaving your current app.
  • Type with your voice: press a key, speak, and get clean text in any app.
  • Notes from any meeting: live transcripts and summaries of any meeting.
  • Automate the routine: teach Thuki multi-step tasks and run them on a word.
  • Built-in search: /search bundled into the app with no Docker to run yourself.
  • More providers: bring your own OpenAI-compatible server (a local or self-hosted endpoint) alongside the built-in engine and Ollama.

Whatever comes next, the aim stays the same: a local-first secretary that runs open models on your own machine. Anything that reaches beyond your Mac will always be opt-in.


Have a feature idea? Open an issue and let's talk about it.

Founder note

Hey, Logan here. I'm building Thuki around how people actually use it, so if you have feedback, an idea, or just want to say hi, reach out on X. Or leave your email and I'll reach out personally. I read everything.

License

Copyright 2026 Logan Nguyen. Licensed under the Apache License, Version 2.0.

About

context-ware floating secretary

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors