Your AI, one shortcut away β even above fullscreen apps.
Zitong is a native desktop AI chat client for macOS and Windows. Press a hotkey, select any text in any app, and let AI transform it instantly β no context switching required.
Lightweight, private (all data stored locally), and works with 10+ AI providers.
Most AI chat apps are browser tabs. Zitong is different:
- Instant overlay β Press
ββ§Spaceto summon a Spotlight-like command palette that floats above everything, including fullscreen apps, across all macOS Spaces. - Works on selected text β Zitong auto-captures your current selection, runs an AI command on it, and gives you the result ready to paste back. No copy-paste dance.
- 10+ providers, one app β Switch between OpenAI, Claude, Gemini, Copilot, Ollama (local), and more. Mix and match per conversation.
- 100% local data β Conversations, settings, and templates live in a local SQLite database. Nothing leaves your machine except API calls to your chosen provider.
The headline feature. A Spotlight-style panel you can invoke from anywhere:
- Select text in any app (browser, editor, terminal, etc.)
- Press the global hotkey (
ββ§Spaceby default) - Pick an AI command β Zitong auto-copies your selection, sends it to the LLM with the command's prompt
- Act on the result:
- Replace β puts the AI result in your clipboard, ready to paste over the original
- Insert After β appends the result after your original text
- Open in Chat β continues the conversation in the full chat window
- Shorter / Longer β quick refinements without leaving the overlay
- Follow-up β type a custom instruction to iterate on the result
Works above fullscreen apps on macOS via NSPanel. On Windows, the overlay uses a standard always-on-top window.
A complete conversation UI when you need more than a quick command:
- Streaming responses with real-time token display and stop button
- Markdown + syntax-highlighted code blocks (with one-click copy)
- Switch provider & model mid-conversation β models are fetched live from each provider's API
- Auto-generated conversation titles after the first exchange
- Token count per message
- Multiple chat styles β Minimal, Bubble, or Card layout
Create AI personas tailored to your workflow:
- Define a system prompt, emoji icon, and description
- Override provider, model, temperature (0β2), and max tokens per assistant
- Set a default assistant that's auto-selected on launch
- Switch assistants mid-conversation from the chat header
Reusable prompts with dynamic variables:
- Use
{{variable}}syntax β variables are auto-detected and shown in a visual preview - Organize templates by category (General, Coding, Writing, Analysis, Creative)
Customizable commands that power the overlay palette:
- Configure each command's behavior (Replace, Insert After, or Open in Chat)
- Set a system prompt, provider, model, and output language per command
- Assign keyboard shortcuts for your most-used commands
- Enable/disable and reorder commands
Connect to any combination of these providers:
| Provider | Auth | Notes |
|---|---|---|
| OpenAI | API key | GPT-4o, GPT-4, etc. |
| Anthropic | API key | Claude 3.5, Claude 3, etc. |
| Google Gemini | API key | |
| GitHub Copilot | OAuth | Full device-flow sign-in |
| Ollama | None | Local models, no API key needed |
| Mistral | API key | |
| Groq | API key | |
| DeepSeek | API key | |
| OpenRouter | API key | |
| xAI (Grok) | API key | |
| OpenAI-compatible | API key + base URL | Any compatible endpoint |
Each provider supports: enable/disable toggle, live model fetching, set-as-default, and connection testing.
- Theme: System, Light, or Dark
- Accent colors: Violet, Blue, Purple, Green, Orange, Red, Pink, Cyan
- Font: System Default, Inter, JetBrains Mono, SF Pro (size 12β20px)
- Code themes: One Dark, GitHub, Dracula, Solarized
- Compact mode for smaller screens
- System tray β close the window and Zitong keeps running in the background
- Launch at login β start hidden, ready for your first hotkey press
- macOS menu bar integration with standard Edit/Window menus
- Separate settings window β changes sync live to the main app
| Feature | Zitong | BoltAI | ChatGPT App | Claude App | Raycast AI | Jan | Msty |
|---|---|---|---|---|---|---|---|
| Overlay above fullscreen apps | β | β | β | β | β | β | β |
| Auto-capture selected text | β | β | β | β | β | β | β |
| Multi-provider (10+) | β | β | β | β | β | β | β |
| Local models (Ollama) | β | β | β | β | β | β | β |
| GitHub Copilot support | β | β | β | β | β | β | β |
| Custom AI commands | β | β | β | β | β | β | β |
| Custom assistants | β | β | β | β | β | β | β |
| Prompt templates with variables | β | β | β | β | β | β | β |
| Cross-platform | β macOS/Win | β macOS only | β macOS/Win | β macOS/Win | β macOS only | β macOS/Win | β macOS/Win |
| Open source | β MIT | β | β | β | β | β AGPL | β |
| 100% local data | β | β | β | β | β | β | β |
| Free | β | β Paid | β Free tier | β Free tier | β Paid | β | β Free tier |
In short: Zitong combines the overlay-driven workflow of BoltAI with cross-platform support, GitHub Copilot integration, and full open-source transparency β at no cost.
| Layer | Technology |
|---|---|
| Framework | Tauri 2.x (Rust backend + webview frontend) |
| Frontend | React 19 Β· TypeScript Β· Vite Β· Tailwind CSS 4 |
| Database | SQLite (via rusqlite, bundled) |
| HTTP/Streaming | reqwest + Tokio async runtime |
| UI Libraries | Lucide icons Β· React Markdown (GFM) Β· React Syntax Highlighter |
| Tauri Plugins | Global Shortcuts Β· Clipboard Manager Β· Dialog Β· Opener Β· Auto-start Β· tauri-nspanel (macOS overlay) |
- Node.js (v20.19+ or v22.12+)
- npm (package manager, bundled with Node.js)
- Rust (latest stable)
- Operating System: macOS 10.15+ or Windows 10+
-
Clone the repository
git clone https://github.com/sykuang/Zitong.git cd Zitong -
Install dependencies
npm install
-
Run in development mode
npx tauri dev
-
Build the application
npx tauri build
-
Install the built application
macOS:
npm run install:dmg
This will mount the DMG and copy the app to your Applications folder.
Windows: The installer will be in
src-tauri/target/release/bundle/
Release builds are not notarized or code-signed, so macOS Gatekeeper will block the app on first launch. Use one of the methods below to allow it.
- Open Finder β Applications
- Right-click (or Control-click) Zitong.app
- Select Open from the context menu
- In the dialog that appears, click Open
You only need to do this once; subsequent launches work normally.
- Try opening Zitong normally (it will be blocked)
- Go to System Settings β Privacy & Security
- Scroll down β you'll see "Zitong" was blocked from use because it is not from an identified developer
- Click Open Anyway and authenticate
xattr -cr /Applications/Zitong.appThis strips the quarantine flag. You can then open the app normally.
Launch Zitong β open Settings (β,) β go to Providers β add an API key for at least one provider (or connect GitHub Copilot via OAuth, or point to a local Ollama instance).
Click New Chat in the sidebar or press βN. Pick a model from the dropdown and start talking.
Select text anywhere on your screen β press ββ§Space β pick a command (e.g., "Fix Grammar", "Explain Code", "Translate") β the result is ready to paste.
- Settings β Providers β select GitHub Copilot
- Click Authenticate with GitHub β a device code is shown and auto-copied
- Complete the OAuth flow in your browser
- Models become available immediately
| Action | macOS | Windows |
|---|---|---|
| Overlay Command Palette | ββ§Space (customizable) |
Ctrl+Shift+Space |
| New Chat | βN |
Ctrl+N |
| Toggle Sidebar | βB |
Ctrl+B |
| Open Settings | β, |
Ctrl+, |
| Search Conversations | βK |
Ctrl+K |
| Focus Chat Input | βL |
Ctrl+L |
| Delete Conversation | ββ§β« |
Ctrl+Shift+Backspace |
The global hotkey is fully customizable in Settings β Shortcuts with a visual key recorder.
Zitong stores all data locally in a SQLite database:
- macOS:
~/Library/Application Support/com.primattek.zitong/zitong.db - Windows:
%APPDATA%\com.primattek.zitong\zitong.db
The database includes:
- Conversations and messages
- AI provider configurations
- Settings and preferences
- Prompt templates
- Custom assistants
- AI commands
Zitong/
βββ src/ # React frontend
β βββ components/ # UI components
β βββ context/ # React context providers
β βββ commands/ # Tauri IPC wrappers
β βββ types/ # TypeScript types
βββ src-tauri/ # Rust backend
β βββ src/
β β βββ commands.rs # Tauri command handlers
β β βββ providers.rs # AI provider implementations
β β βββ db.rs # SQLite database layer
β β βββ panel.rs # macOS overlay support
β β βββ lib.rs # Main entry point
β βββ Cargo.toml # Rust dependencies
βββ package.json # Node.js dependencies
βββ vite.config.ts # Vite configuration
# Frontend tests
npm run build
# Rust tests
cd src-tauri
cargo test- Frontend: ESLint + Prettier
- Backend: rustfmt + clippy
# Format Rust code
cd src-tauri
cargo fmt
# Lint Rust code
cargo clippyContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub: @sykuang
- Project Link: https://github.com/sykuang/Zitong
Note: This is an early-stage project under active development. Some features may be incomplete or experimental.