A multi-provider AI chat desktop app built with Tauri + Vue 3. Connect to Anthropic, OpenAI, Gemini, Qwen, DeepSeek, Kimi and more — all from one native desktop window. Conversations are stored locally and API keys are encrypted on-device.
This project was written entirely by AI (Claude). Every line of code — frontend, backend, encryption, streaming, UI — was generated through AI-driven development with no manual coding involved.
- Anthropic — Claude Opus / Sonnet / Haiku
- OpenAI — GPT-4.1, GPT-4o, o3, o4-mini
- Google Gemini — Gemini 2.5 Pro / Flash
- Qwen (通义千问) — Qwen3, Qwen-Max / Plus / Turbo
- DeepSeek — deepseek-chat, deepseek-reasoner
- Kimi (Moonshot) — Kimi Latest, Moonshot series
- Custom — Any OpenAI-compatible endpoint
- Real-time streaming output with typewriter effect
- Full Markdown rendering (tables, code blocks, headings, lists)
- Syntax highlighting for code blocks with one-click copy
- Copy message / Regenerate last response
- Web Search and Deep Think mode toggles
- Adjustable model parameters (Temperature, Max Tokens)
- Three chat width presets (Narrow / Medium / Wide)
- Multi-conversation sidebar — create, switch, rename, delete
- Persistent local storage — conversations survive app restarts
- Export any conversation as a Markdown file
- API keys encrypted with AES-256-GCM, key derived from device identity
- All data stays local — no intermediate servers
| Layer | Technology |
|---|---|
| Desktop | Tauri v2 |
| Frontend | Vue 3 + TypeScript + Vite |
| UI Components | Element Plus |
| State | Pinia |
| Markdown | marked + highlight.js |
| Backend | Rust |
| HTTP Client | reqwest (SSE streaming) |
| Encryption | aes-gcm + sha2 |
- Node.js ≥ 18
- Rust (stable toolchain)
- Tauri system dependencies (macOS: Xcode Command Line Tools)
git clone <repo-url>
cd orion
npm installnpm run tauri devOpens a native desktop window. Vite HMR runs for the frontend; Rust backend recompiles on change.
npm run tauri buildPackaged app appears in src-tauri/target/release/bundle/.
- Add an API key — Click the Settings icon in the sidebar, pick a provider, enter your API key and save.
- Start chatting — Go to the Chat view, click New conversation, choose a provider and model in the toolbar, then type and hit
Enter. - Custom base URL — Every provider supports a custom API endpoint. Leave it blank to use the official default (useful for proxy setups).
- Keyboard shortcuts —
Enterto send,Shift+Enterfor a new line,Escto stop generation.
orion/
├── src/ # Frontend source
│ ├── assets/styles/ # Global styles & design tokens
│ ├── components/ # Shared components
│ ├── stores/ # Pinia stores
│ ├── types/ # TypeScript interfaces
│ └── views/ # Page views
├── src-tauri/ # Rust backend
│ └── src/
│ ├── api/ # Tauri commands (chat, settings, conversations)
│ └── crypto.rs # API key encryption
└── package.json
MIT