AI chat desktop app with rich data visualization and tool use
GPL-3.0 License · Copyright (c) 2026 ChloeWeever
English · 中文
- Desktop pet — pick an animated companion from the Petdex gallery (1400+ pets); the pet lives in the chat area, wanders on its own, and reacts to the AI — reviewing while thinking, running while generating, waving when done
- Multi-provider — LiteLLM proxy, OpenAI, or Anthropic; configure base URL, API key, model, temperature, and max tokens per session
- Rich visualizations — AI renders bar, line, area, pie/donut charts, data tables, metric cards, and progress bars inline in the conversation using a simple XML card syntax
- File uploads — attach images, PDFs, Word documents, Excel sheets, PowerPoint files, and plain text/code files; content is extracted and injected as context
- Image OCR — paste or attach an image and the app extracts text via Tesseract.js (English + Simplified Chinese)
- JavaScript execution — AI can write and run code in a sandboxed Node.js Worker thread (10 s timeout, no network/filesystem access)
- Web search — optional real-time search via the Ollama Web Search API, injected into the AI context
- Skills — define reusable instruction sets as SKILL.md files and invoke them with
/skill-nameslash commands; built-in skills includesummarize,translate,explain,improve,review, andcommit - Streaming responses with a stop button
- Conversation history — grouped by date, titles auto-generated from the first message
- Dark / light / system theme
Download from release. We have support Windows-x64, MacOS-arm64, MacOS-intel. If you are on other platfoem(Windows-arm, Linux...), please build by yourself.
If you dont't have any LLM API or you don't want to pay for any, you can go to Nvidia NIM APIS to apply for a free API endpoint. We recommend you to choose deepseek-v4-flash.
npm install
npm run devnpm run package # current platform
npm run package:win # Windows
npm run package:mac # macOS
npm run package:linux # LinuxOutput: dist/.
Open Settings (gear icon, bottom-left):
| Tab | Field | Description |
|---|---|---|
| Provider | Provider | LiteLLM / OpenAI / Anthropic |
| Provider | Base URL | Proxy or API endpoint (leave blank for official API) |
| Provider | API Key | Key for the chosen provider |
| Model | Model | e.g. gpt-4o-mini, claude-sonnet-4-6, ollama/llama3 |
| Model | Temperature | 0 = deterministic · 2 = very creative |
| Model | Max Tokens | Response length cap |
| Tools | Web Search | Enable + enter an Ollama API key |
| Tools | Code Execution | Allow AI to run JavaScript snippets |
| Tools | Animation Generation | Allow AI to generate HTML animations for visual explanations |
| Appearance | Theme | Light / Dark / System |
| Appearance | Desktop Pet | Pick from Petdex gallery; toggle wandering on/off |
The system prompt teaches the AI to render structured data using XML tags:
<card type="bar_chart" title="Monthly Revenue">
{"labels":["Jan","Feb","Mar","Apr"],"datasets":[{"label":"Sales","data":[1200,1800,1500,2100]}]}
</card>
<card type="line_chart" title="User Growth">
{"labels":["Week 1","Week 2","Week 3"],"datasets":[{"label":"Users","data":[500,720,1040]}]}
</card>
<card type="metric">
{"metrics":[{"label":"MRR","value":"$45K","change":"+12%","trend":"up"},{"label":"Churn","value":"2.3%","change":"-0.5%","trend":"down"}]}
</card>
<card type="table" title="Comparison">
{"columns":[{"key":"lang","label":"Language"},{"key":"perf","label":"Performance"}],
"rows":[{"lang":"Rust","perf":"Excellent"},{"lang":"Go","perf":"Very Good"}]}
</card>
<card type="progress" title="Q3 Goals">
{"items":[{"label":"Revenue","value":72},{"label":"Signups","value":55}]}
</card>Supported types: bar_chart · line_chart · area_chart · pie_chart · table · metric · progress
When Animation Generation is enabled, the AI embeds <animation> blocks in its response to visually explain complex concepts:
<animation title="Binary Search Algorithm">
<!DOCTYPE html>
<html>
<!-- auto-playing, infinitely looping HTML/CSS/JS animation -->
</html>
</animation>Animations render in a sandboxed iframe — fully isolated, auto-playing, no user interaction required.
Skills are markdown files that inject a system-level instruction set into the conversation. Import a SKILL.md file from Settings → Skills, then invoke it with /skill-name [argument].
Built-in skills: summarize · translate · explain · improve · review · commit
- Electron + electron-vite
- React + TypeScript
- Tailwind CSS + Radix UI + SAP UI5 Web Components
- Recharts for data visualization
- Zustand for state management
- Tesseract.js for OCR
- pdf-parse · mammoth · xlsx · jszip for file parsing