Repository: CherryHQ/cherry-studio
Stars: 43672
CLAUDE.md
AI Assistant Guide
This file provides guidance to AI coding assistants when working with code in this repository. Adherence to these guidelines is crucial for maintaining code quality and consistency.
Guiding Principles (MUST FOLLOW)
- Keep it clear: Write code that is easy to read, maintain, and explain.
- Match the house style: Reuse existing patterns, naming, and conventions.
- Search smart: Prefer ast-grep for semantic queries; fall back to rg/grep when needed.
- Log centrally: Route all logging through loggerService with the right context—no console.log.
- Research via subagent: Lean on subagent for external docs, APIs, news, and references.
- Always propose before executing: Before making any changes, clearly explain your planned approach and wait for explicit user approval to ensure alignment and prevent unwanted modifications.
- Lint, test, and format before completion: Coding tasks are only complete after running pnpm lint, pnpm test, and pnpm format successfully.
- Write conventional commits: Commit small, focused changes using Conventional Commit messages (e.g., feat:, fix:, refactor:, docs:).
- Sign commits: Use git commit --signoff as required by contributor guidelines.
Pull Request Workflow (CRITICAL)
When creating a Pull Request, you MUST use the gh-create-pr skill.
If the skill is unavailable, directly read .agents/skills/gh-create-pr/SKILL.md and follow it manually.
Review Workflow
When reviewing a Pull Request, do NOT run pnpm lint, pnpm test, or pnpm format locally.
Instead, check CI status directly using GitHub CLI:
- Check CI status: gh pr checks <PR_NUMBER> - View all CI check results for the PR
- Check PR details: gh pr view <PR_NUMBER> - View PR status, reviews, and merge readiness
- View failed logs: gh run view <RUN_ID> --log-failed - Inspect logs for failed CI runs
Only investigate CI failures by reading the logs, not by re-running checks locally.
Issue Workflow
When creating an Issue, you MUST use the gh-create-issue skill.
If the skill is unavailable, directly read .agents/skills/gh-create-issue/SKILL.md and follow it manually.
Branch Strategy (Effective April 3, 2026)
IMPORTANT: Themainbranch is now under code freeze. Only critical bug fixes submitted viahotfix/*branches are accepted. Fix PRs must be minimal in scope and must not include any refactoring code.
> All new features, refactoring, and optimizations should be developed on the v2 branch. We welcome every developer to actively participate in v2 development!> The v2 branch will only accept new feature submissions after all current features have been fully refactored.Development Commands
- Install: pnpm install — Install all project dependencies (requires Node ≥22, pnpm 10.27.0)
- Development: pnpm dev — Runs Electron app in development mode with hot reload
- Debug: pnpm debug — Starts with debugging; attach via chrome://inspect on port 9222
- Build Check: pnpm build:check — REQUIRED before commits (pnpm lint && pnpm test)
- If having i18n sort issues, run pnpm i18n:sync first
- If having formatting issues, run pnpm format first
- Full Build: pnpm build — TypeScript typecheck + electron-vite build
- Test: pnpm test — Run all Vitest tests (main + renderer + aiCore + shared + scripts)
- pnpm test:main — Main process tests only (Node environment)
- pnpm test:renderer — Renderer process tests only (jsdom environment)
- pnpm test:aicore — aiCore package tests only
- pnpm test:watch — Watch mode
- pnpm test:coverage — With v8 coverage report
- pnpm test:e2e — Playwright end-to-end tests
- Lint: pnpm lint — oxlint + eslint fix + TypeScript typecheck + i18n check + format check
- Format: pnpm format — Biome format + lint (write mode)
- Typecheck: pnpm typecheck — Concurrent node + web TypeScript checks using tsgo
- i18n:
- pnpm i18n:sync — Sync i18n template keys
- pnpm i18n:translate — Auto-translate missing keys
- pnpm i18n:check — Validate i18n completeness
- Bundle Analysis: pnpm analyze:renderer / pnpm analyze:main — Visualize bundle sizes
- Agents DB:
- pnpm agents:generate — Generate Drizzle migrations
- pnpm agents:push — Push schema to SQLite DB
- pnpm agents:studio — Open Drizzle Studio
Project Architecture
Electron Structure
src/
main/ # Node.js backend (Electron main process)
renderer/ # React UI (Electron renderer process)
preload/ # Secure IPC bridge (contextBridge)
packages/
aiCore/ # @cherrystudio/ai-core — AI SDK middleware & provider abstraction
shared/ # Cross-process types, constants, IPC channel definitions
mcp-trace/ # OpenTelemetry tracing for MCP operations
ai-sdk-provider/ # Custom AI SDK provider implementations
extension-table-plus/ # TipTap table extensionKey Path Aliases
| Alias | Resolves To |
|---|---|
| @main | src/main/ |
| @renderer | src/renderer/src/ |
| @shared | packages/shared/ |
| @types | src/renderer/src/types/ |
| @logger | src/main/services/LoggerService (main) / src/renderer/src/services/LoggerService (renderer) |
| @mcp-trace/trace-core | packages/mcp-trace/trace-core/ |
| @cherrystudio/ai-core | packages/aiCore/src/ |
Main Process (src/main/)
Node.js backend services. Key services:
| Service | Responsibility |
|---|---|
| WindowService | Electron window lifecycle management |
| MCPService | Model Context Protocol server management |
| KnowledgeService | RAG / knowledge base (via @cherrystudio/embedjs) |
| AnthropicService | Anthropic API integration |
| LoggerService | Winston-based structured logging (daily rotate) |
| StoreSyncService | Syncs Redux state to/from main process |
| BackupManager | Data backup/restore (WebDAV, S3, Nutstore) |
| ApiServerService | Express HTTP API server (Swagger docs at /api-docs) |
| AppUpdater | electron-updater auto-update |
| ShortcutService | Global keyboard shortcuts |
| ThemeService | System theme detection/application |
| SelectionService | Text selection toolbar feature |
| CopilotService | GitHub Copilot OAuth integration |
| PythonService | Pyodide WASM Python runtime |
| OvmsManager | OpenVINO model server management |
| NodeTraceService | OpenTelemetry trace export |
Agents subsystem (src/main/services/agents/):
- Drizzle ORM + LibSQL (SQLite) schema at database/schema/index.ts
- Migrations in resources/database/drizzle/
- Currently undergoing v2 refactor — only critical bug fixes accepted
Renderer Process (src/renderer/src/)
React 19 + Redux Toolkit SPA. Key structure:
aiCore/ # Legacy middleware pipeline (deprecated, migrating to packages/aiCore)
api/ # IPC call wrappers (typed electron API calls)
components/ # Shared UI components (Ant Design 5 + styled-components + TailwindCSS v4)
databases/ # Dexie (IndexedDB) — topics, files, message_blocks, etc.
hooks/ # React hooks (useAssistant, useChatContext, useModel, etc.)
pages/ # Route pages (home, settings, knowledge, paintings, notes, etc.)
services/ # Frontend services (ApiService, ModelService, MemoryService, etc.)
store/ # Redux Toolkit slices
types/ # TypeScript type definitions
workers/ # Web Workers
windows/ # Multi-window entry points (mini, selection toolbar, trace)Redux Store (src/renderer/src/store/)
Slices (redux-persist enabled):
| Slice | State |
|---|---|
| assistants | AI assistant configurations |
| settings | App-wide settings |
| llm | LLM provider/model configs |
| mcp | MCP server configs |
| messageBlock | Message block rendering state |
| knowledge | Knowledge base entries |
| paintings | Image generation state |
| memory | Memory system config |
| websearch | Web search settings |
| shortcuts | Keyboard shortcuts |
| tabs | Tab management |
BLOCKED: Do not add new Redux slices or change existing state shape until v2.0.0.
Database Layer
- IndexedDB (Dexie): src/renderer/src/databases/index.ts
- Tables: files, topics, settings, knowledge_notes, translate_history, quick_phrases, message_blocks, translate_languages
- Schema versioned with upgrade functions (upgradeToV5, upgradeToV7, upgradeToV8)
- BLOCKED: Do not modify schema until v2.0.0.
- SQLite (Drizzle ORM + LibSQL): src/main/services/agents/
- Used for the agents subsystem
- DB path: {userData}/Data/agents.db (e.g., on macOS: ~/Library/Application Support/CherryStudioDev/Data/agents.db in dev, ~/Library/Application Support/CherryStudio/Data/agents.db in prod)
IPC Communication
- Channel constants defined in packages/shared/IpcChannel.ts
- Renderer → Main: ipcRenderer.invoke(IpcChannel.XXX, ...args) via api.* wrappers in src/preload/index.ts
- Main → Renderer: webContents.send(channel, data)
- Tracing: tracedInvoke() in preload attaches OpenTelemetry span context to IPC calls
- Typed API surface exposed via contextBridge as window.api
AI Core (packages/aiCore/)
The @cherrystudio/ai-core package abstracts AI SDK providers:
src/core/
providers/ # Provider registry (HubProvider, factory, registry)
middleware/ # LanguageModelV2Middleware pipeline (manager, wrapper)
plugins/ # Built-in plugins
runtime/ # Runtime execution
options/ # Request option preparation- Built on Vercel AI SDK v5 (ai package) with LanguageModelV2Middleware
- HubProvider aggregates multiple provider backends
- Supports: OpenAI, Anthropic, Google, Azure, Mistral, Bedrock, Vertex, Ollama, Perplexity, xAI, HuggingFace, Cerebras, OpenRouter, Copilot, and more
- Custom fork of openai package: @cherrystudio/openai
Multi-Window Architecture
The renderer builds multiple HTML entry points:
- index.html — Main application window
- miniWindow.html — Compact floating window (src/renderer/src/windows/mini/)
- selectionToolbar.html — Text selection action toolbar
- selectionAction.html — Selection action popup
- traceWindow.html — MCP trace viewer
Logging
import { loggerService } from "@logger";
const logger = loggerService.withContext("moduleName");
// Renderer only: loggerService.initWindowSource('windowName') first
logger.info("message", CONTEXT);
logger.warn("message");
logger.error("message", error);- Backend: Winston with daily log rotation
- Log files in userData/logs/
- Never use console.log — always use loggerService
Tracing (OpenTelemetry)
- packages/mcp-trace/ provides trace-core and trace-node/trace-web adapters
- NodeTraceService exports spans via OTLP HTTP
- SpanCacheService caches span entities for the trace viewer window
- IPC calls can carry span context via tracedInvoke()
Tech Stack
| Layer | Technologies |
|---|---|
| Runtime | Electron 38, Node ≥22 |
| Frontend | React 19, TypeScript ~5.8 |
| UI | Ant Design 5.27, styled-components 6, TailwindCSS v4 |
| State | Redux Toolkit, redux-persist, Dexie (IndexedDB) |
| Rich Text | TipTap 3.2 (with Yjs collaboration) |
| AI SDK | Vercel AI SDK v5 (ai), @cherrystudio/ai-core |
| Build | electron-vite 5 with rolldown-vite 7 (experimental) |
| Test | Vitest 3 (unit), Playwright (e2e) |
| Lint/Format | ESLint 9, oxlint, Biome 2 |
| DB (main) | Drizzle ORM + LibSQL (SQLite) |
| DB (renderer) | Dexie (IndexedDB) |
| Logging | Winston + winston-daily-rotate-file |
| Tracing | OpenTelemetry |
| i18n | i18next + react-i18next |
Conventions
TypeScript
- Strict mode enabled; use tsgo (native TypeScript compiler preview) for typechecking
- Separate configs: tsconfig.node.json (main), tsconfig.web.json (renderer)
- Type definitions centralized in src/renderer/src/types/ and packages/shared/
Code Style
- Biome handles formatting (2-space indent, single quotes, trailing commas)
- oxlint + ESLint for linting; simple-import-sort enforces import order
- React hooks: eslint-plugin-react-hooks enforced
- No unused imports: eslint-plugin-unused-imports
File Naming
- React components: PascalCase.tsx
- Services, hooks, utilities: camelCase.ts
- Test files: .test.ts or .spec.ts alongside source or in __tests__/ subdirectory
i18n
- All user-visible strings must use i18next — never hardcode UI strings
- Run pnpm i18n:check to validate; pnpm i18n:sync to add missing keys
- Locale files in src/renderer/src/i18n/
Packages with Custom Patches
Several dependencies have patches in patches/ — be careful when upgrading:
- antd, @ai-sdk/google, @ai-sdk/openai, @anthropic-ai/vertex-sdk
- @google/genai, @langchain/core, @langchain/openai
- ollama-ai-provider-v2, electron-updater, epub, tesseract.js
- @anthropic-ai/claude-agent-sdk
Testing Guidelines
- Tests use Vitest 3 with project-based configuration
- Main process tests: Node environment, tests/main.setup.ts
- Renderer tests: jsdom environment, tests/renderer.setup.ts, @testing-library/react
- aiCore tests: separate packages/aiCore/vitest.config.ts
- All tests run without CI dependency (fully local)
- Coverage via v8 provider (pnpm test:coverage)
- Features without tests are not considered complete
Important Notes
V2 Refactoring in Progress
The main branch is under code freeze. All development has moved to the v2 branch.
- main branch: Only accepts critical bug fixes via hotfix/* branches. Minimal changes, no refactoring.
- v2 branch: All new features, refactoring, and optimizations go here.
Files marked with the following header are blocked for feature changes:
/
* @deprecated Scheduled for removal in v2.0.0
* ⚠️ NOTICE: V2 DATA&UI REFACTORING
* STOP: Feature PRs affecting this file are currently BLOCKED.
*/Do not introduce new features to these files. Bug fixes only.
Security
- Never expose Node.js APIs directly to renderer; use contextBridge in preload
- Validate all IPC inputs in main process handlers
- URL sanitization via strict-url-sanitise
- IP validation via ipaddr.js (API server)
- express-validator for API server request validation
README.md
<div align="right" >
<details>
<summary >🌐 Language</summary>
<div>
<div align="right">
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=en">English</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=zh-CN">简体中文</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=zh-TW">繁體中文</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ja">日本語</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ko">한국어</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=hi">हिन्दी</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=th">ไทย</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=fr">Français</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=de">Deutsch</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=es">Español</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=it">Italiano</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ru">Русский</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=pt">Português</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=nl">Nederlands</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=pl">Polski</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ar">العربية</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=fa">فارسی</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=tr">Türkçe</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=vi">Tiếng Việt</a></p>
<p><a href="https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=id">Bahasa Indonesia</a></p>
</div>
</div>
</details>
</div>
<h1 align="center">
<a href="https://github.com/CherryHQ/cherry-studio/releases">
<img src="https://github.com/CherryHQ/cherry-studio/blob/main/build/icon.png?raw=true" width="150" height="150" alt="banner" /><br>
</a>
</h1>
<p align="center">English | <a href="./docs/zh/README.md">中文</a> | <a href="https://cherry-ai.com">Official Site</a> | <a href="https://docs.cherry-ai.com/docs/en-us">Documents</a> | <a href="./docs/en/guides/development.md">Development</a> | <a href="https://github.com/CherryHQ/cherry-studio/issues">Feedback</a><br></p>
<div align="center">
[![][deepwiki-shield]][deepwiki-link]
[![][twitter-shield]][twitter-link]
[![][discord-shield]][discord-link]
[![][telegram-shield]][telegram-link]
</div>
<div align="center">
[![][github-release-shield]][github-release-link]
[![][github-nightly-shield]][github-nightly-link]
[![][github-contributors-shield]][github-contributors-link]
[![][license-shield]][license-link]
[![][commercial-shield]][commercial-link]
[![][sponsor-shield]][sponsor-link]
</div>
<div align="center">
<a href="https://hellogithub.com/repository/1605492e1e2a4df3be07abfa4578dd37" target="_blank" style="text-decoration: none"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=1605492e1e2a4df3be07abfa4578dd37" alt="Featured|HelloGitHub" width="220" height="55" /></a>
<a href="https://trendshift.io/repositories/14318" target="_blank" style="text-decoration: none"><img src="https://trendshift.io/api/badge/repositories/14318" alt="CherryHQ%2Fcherry-studio | Trendshift" width="220" height="55" /></a>
<a href="https://www.producthunt.com/posts/cherry-studio?embed=true&utm_source=badge-featured&utm_medium=badge&utm_souce=badge-cherry-studio" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=496640&theme=light" alt="Cherry Studio - AI Chatbots, AI Desktop Client | Product Hunt" width="220" height="55" /></a>
</div>
🍒 Cherry Studio
Cherry Studio is a desktop client that supports multiple LLM providers, available on Windows, Mac and Linux.
👏 Join Telegram Group|Discord | QQ Group(575014769)
❤️ Like Cherry Studio? Give it a star 🌟 or Sponsor to support the development!
🌠 Screenshot



🌟 Key Features
1. Diverse LLM Provider Support:
- ☁️ Major LLM Cloud Services: OpenAI, Gemini, Anthropic, and more
- 🔗 AI Web Service Integration: Claude, Perplexity, Poe, and others
- 💻 Local Model Support with Ollama, LM Studio
2. AI Assistants & Conversations:
- 📚 300+ Pre-configured AI Assistants
- 🤖 Custom Assistant Creation
- 💬 Multi-model Simultaneous Conversations
3. Document & Data Processing:
- 📄 Supports Text, Images, Office, PDF, and more
- ☁️ WebDAV File Management and Backup
- 📊 Mermaid Chart Visualization
- 💻 Code Syntax Highlighting
4. Practical Tools Integration:
- 🔍 Global Search Functionality
- 📝 Topic Management System
- 🔤 AI-powered Translation
- 🎯 Drag-and-drop Sorting
- 🔌 Mini Program Support
- ⚙️ MCP(Model Context Protocol) Server
5. Enhanced User Experience:
- 🖥️ Cross-platform Support for Windows, Mac, and Linux
- 📦 Ready to Use - No Environment Setup Required
- 🎨 Light/Dark Themes and Transparent Window
- 📝 Complete Markdown Rendering
- 🤲 Easy Content Sharing
📝 Roadmap
We're actively working on the following features and improvements:
1. 🎯 Core Features
- Selection Assistant with smart content selection enhancement
- Deep Research with advanced research capabilities
- Memory System with global context awareness
- Document Preprocessing with improved document handling
- MCP Marketplace for Model Context Protocol ecosystem
2. 🗂 Knowledge Management
- Notes and Collections
- Dynamic Canvas visualization
- OCR capabilities
- TTS (Text-to-Speech) support
3. 📱 Platform Support
- HarmonyOS Edition (PC)
- Android App (Phase 1)
- iOS App (Phase 1)
- Multi-Window support
- Window Pinning functionality
- Intel AI PC (Core Ultra) Support
4. 🔌 Advanced Features
- Plugin System
- ASR (Automatic Speech Recognition)
- Assistant and Topic Interaction Refactoring
Track our progress and contribute on our project board.
Want to influence our roadmap? Join our GitHub Discussions to share your ideas and feedback!
🌈 Theme
- Theme Gallery: <https://cherrycss.com>
- Aero Theme: <https://github.com/hakadao/CherryStudio-Aero>
- PaperMaterial Theme: <https://github.com/rainoffallingstar/CherryStudio-PaperMaterial>
- Claude dynamic-style: <https://github.com/bjl101501/CherryStudio-Claudestyle-dynamic>
- Maple Neon Theme: <https://github.com/BoningtonChen/CherryStudio_themes>
Welcome PR for more themes
🤝 Contributing
We welcome contributions to Cherry Studio! Here are some ways you can contribute:
1. Contribute Code: Develop new features or optimize existing code.
2. Fix Bugs: Submit fixes for any bugs you find.
3. Maintain Issues: Help manage GitHub issues.
4. Product Design: Participate in design discussions.
5. Write Documentation: Improve user manuals and guides.
6. Community Engagement: Join discussions and help users.
7. Promote Usage: Spread the word about Cherry Studio.
Refer to the Branching Strategy for contribution guidelines
Getting Started
1. Fork the Repository: Fork and clone it to your local machine.
2. Create a Branch: For your changes.
3. Submit Changes: Commit and push your changes.
4. Open a Pull Request: Describe your changes and reasons.
For more detailed guidelines, please refer to our Contributing Guide.
Thank you for your support and contributions!
🔧 Developer Co-creation Program
We are launching the Cherry Studio Developer Co-creation Program to foster a healthy and positive-feedback loop within the open-source ecosystem. We believe that great software is built collaboratively, and every merged pull request breathes new life into the project.
We sincerely invite you to join our ranks of contributors and shape the future of Cherry Studio with us.
Contributor Rewards Program
To give back to our core contributors and create a virtuous cycle, we have established the following long-term incentive plan.
The inaugural tracking period for this program will be Q3 2025 (July, August, September). Rewards for this cycle will be distributed on October 1st.
Within any tracking period (e.g., July 1st to September 30th for the first cycle), any developer who contributes more than 30 meaningful commits to any of Cherry Studio's open-source projects on GitHub will be eligible for the following benefits:
- Cursor Subscription Sponsorship: Receive a $70 USD credit or reimbursement for your Cursor subscription, making AI your most efficient coding partner.
- Unlimited Model Access: Get unlimited API calls for the DeepSeek and Qwen models.
- Cutting-Edge Tech Access: Enjoy occasional perks, including API access to models like Claude, Gemini, and OpenAI, keeping you at the forefront of technology.
Growing Together & Future Plans
A vibrant community is the driving force behind any sustainable open-source project. As Cherry Studio grows, so will our rewards program. We are committed to continuously aligning our benefits with the best-in-class tools and resources in the industry. This ensures our core contributors receive meaningful support, creating a positive cycle where developers, the community, and the project grow together.
Moving forward, the project will also embrace an increasingly open stance to give back to the entire open-source community.
How to Get Started?
We look forward to your first Pull Request!
You can start by exploring our repositories, picking up a good first issue, or proposing your own enhancements. Every commit is a testament to the spirit of open source.
Thank you for your interest and contributions.
Let's build together.
🏢 Enterprise Edition
Building on the Community Edition, we are proud to introduce Cherry Studio Enterprise Edition—a privately-deployable AI productivity and management platform designed for modern teams and enterprises.
The Enterprise Edition addresses core challenges in team collaboration by centralizing the management of AI resources, knowledge, and data. It empowers organizations to enhance efficiency, foster innovation, and ensure compliance, all while maintaining 100% control over their data in a secure environment.
Core Advantages
- Unified Model Management: Centrally integrate and manage various cloud-based LLMs (e.g., OpenAI, Anthropic, Google Gemini) and locally deployed private models. Employees can use them out-of-the-box without individual configuration.
- Enterprise-Grade Knowledge Base: Build, manage, and share team-wide knowledge bases. Ensures knowledge retention and consistency, enabling team members to interact with AI based on unified and accurate information.
- Fine-Grained Access Control: Easily manage employee accounts and assign role-based permissions for different models, knowledge bases, and features through a unified admin backend.
- Fully Private Deployment: Deploy the entire backend service on your on-premises servers or private cloud, ensuring your data remains 100% private and under your control to meet the strictest security and compliance standards.
- Reliable Backend Services: Provides stable API services and enterprise-grade data backup and recovery mechanisms to ensure business continuity.
✨ Online Demo
Version Comparison
| Feature | Community Edition | Enterprise Edition |
| :---------------- | :----------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |
| Open Source | ✅ Yes | ⭕️ Partially released to customers |
| Cost | AGPL-3.0 License | Buyout / Subscription Fee |
| Admin Backend | — | ● Centralized Model Access<br>● Employee Management<br>● Shared Knowledge Base<br>● Access Control<br>● Data Backup |
| Server | — | ✅ Dedicated Private Deployment |
Get the Enterprise Edition
We believe the Enterprise Edition will become your team's AI productivity engine. If you are interested in Cherry Studio Enterprise Edition and would like to learn more, request a quote, or schedule a demo, please feel free to contact us.
- For Business Inquiries & Purchasing:
📧 [email protected]
🔗 Related Projects
- new-api: The next-generation LLM gateway and AI asset management system supports multiple languages.
- one-api: LLM API management and distribution system supporting mainstream models like OpenAI, Azure, and Anthropic. Features a unified API interface, suitable for key management and secondary distribution.
- Poe: Poe gives you access to the best AI, all in one place. Explore GPT-5, Claude Opus 4.1, DeepSeek-R1, Veo 3, ElevenLabs, and millions of others.
- ublacklist: Blocks specific sites from appearing in Google search results
🚀 Contributors
<a href="https://github.com/CherryHQ/cherry-studio/graphs/contributors">
<img src="https://contrib.rocks/image?repo=CherryHQ/cherry-studio" />
</a>
<br /><br />
📊 GitHub Stats
⭐️ Star History
<a href="https://www.star-history.com/#CherryHQ/cherry-studio&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=CherryHQ/cherry-studio&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=CherryHQ/cherry-studio&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=CherryHQ/cherry-studio&type=Date" />
</picture>
</a>
📜 License
The Cherry Studio Community Edition is governed by the standard GNU Affero General Public License v3.0 (AGPL-3.0), available at https://www.gnu.org/licenses/agpl-3.0.html.
Use of the Cherry Studio Community Edition for commercial purposes is permitted, subject to full compliance with the terms and conditions of the AGPL-3.0 license.
Should you require a commercial license that provides an exemption from the AGPL-3.0 requirements, please contact us at [email protected].
<!-- Links & Images -->
[deepwiki-shield]: https://img.shields.io/badge/Deepwiki-CherryHQ-0088CC?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNy45MyAzMiI+PHBhdGggZD0iTTE5LjMzIDE0LjEyYy42Ny0uMzkgMS41LS4zOSAyLjE4IDBsMS43NCAxYy4wNi4wMy4xMS4wNi4xOC4wN2guMDRjLjA2LjAzLjEyLjAzLjE4LjAzaC4wMmMuMDYgMCAuMTEgMCAuMTctLjAyaC4wM2MuMDYtLjAyLjEyLS4wNS4xNy0uMDhoLjAybDMuNDgtMi4wMWMuMjUtLjE0LjQtLjQxLjQtLjdWOC40YS44MS44MSAwIDAgMC0uNC0uN2wtMy40OC0yLjAxYS44My44MyAwIDAgMC0uODEgMEwxOS43NyA3LjdoLS4wMWwtLjE1LjEyLS4wMi4wMnMtLjA3LjA5LS4xLjE0VjhhLjQuNCAwIDAgMC0uMDguMTd2LjA0Yy0uMDMuMDYtLjAzLjEyLS4wMy4xOXYyLjAxYzAgLjc4LS40MSAxLjQ5LTEuMDkgMS44OC0uNjcuMzktMS41LjM5LTIuMTggMGwtMS43NC0xYS42LjYgMCAwIDAtLjIxLS4wOGMtLjA2LS4wMS0uMTItLjAyLS4xOC0uMDJoLS4wM2MtLjA2IDAtLjExLjAxLS4xNy4wMmgtLjAzYy0uMDYuMDItLjEyLjA0LS4xNy4wN2gtLjAybC0zLjQ3IDIuMDFjLS4yNS4xNC0uNC40MS0uNC43VjE4YzAgLjI5LjE1LjU1LjQuN2wzLjQ4IDIuMDFoLjAyYy4wNi4wNC4xMS4wNi4xNy4wOGguMDNjLjA1LjAyLjExLjAzLjE3LjAzaC4wMmMuMDYgMCAuMTIgMCAuMTgtLjAyaC4wNGMuMDYtLjAzLjEyLS4wNS4xOC0uMDhsMS43NC0xYy42Ny0uMzkgMS41LS4zOSAyLjE3IDBzMS4wOSAxLjExIDEuMDkgMS44OHYyLjAxYzAgLjA3IDAgLjEzLjAyLjE5di4wNGMuMDMuMDYuMDUuMTIuMDguMTd2LjAycy4wOC4wOS4xMi4xM2wuMDIuMDJzLjA5LjA4LjE1LjExYzAgMCAuMDEgMCAuMDEuMDFsMy40OCAyLjAxYy4yNS4xNC41Ni4xNC44MSAwbDMuNDgtMi4wMWMuMjUtLjE0LjQtLjQxLjQtLjd2LTQuMDFhLjgxLjgxIDAgMCAwLS40LS43bC0zLjQ4LTIuMDFoLS4wMmMtLjA1LS4wNC0uMTEtLjA2LS4xNy0uMDhoLS4wM2EuNS41IDAgMCAwLS4xNy0uMDNoLS4wM2MtLjA2IDAtLjEyIDAtLjE4LjAyLS4wNy4wMi0uMTUuMDUtLjIxLjA4bC0xLjc0IDFjLS42Ny4zOS0xLjUuMzktMi4xNyAwYTIuMTkgMi4xOSAwIDAgMS0xLjA5LTEuODhjMC0uNzguNDItMS40OSAxLjA5LTEuODhaIiBzdHlsZT0iZmlsbDojNWRiZjlkIi8+PHBhdGggZD0ibS40IDEzLjExIDMuNDcgMi4wMWMuMjUuMTQuNTYuMTQuOCAwbDMuNDctMi4wMWguMDFsLjE1LS4xMi4wMi0uMDJzLjA3LS4wOS4xLS4xNGwuMDItLjAyYy4wMy0uMDUuMDUtLjExLjA3LS4xN3YtLjA0Yy4wMy0uMDYuMDMtLjEyLjAzLS4xOVYxMC40YzAtLjc4LjQyLTEuNDkgMS4wOS0xLjg4czEuNS0uMzkgMi4xOCAwbDEuNzQgMWMuMDcuMDQuMTQuMDcuMjEuMDguMDYuMDEuMTIuMDIuMTguMDJoLjAzYy4wNiAwIC4xMS0uMDEuMTctLjAyaC4wM2MuMDYtLjAyLjEyLS4wNC4xNy0uMDdoLjAybDMuNDctMi4wMmMuMjUtLjE0LjQtLjQxLjQtLjd2LTRhLjgxLjgxIDAgMCAwLS40LS43bC0zLjQ2LTJhLjgzLjgzIDAgMCAwLS44MSAwbC0zLjQ4IDIuMDFoLS4wMWwtLjE1LjEyLS4wMi4wMi0uMS4xMy0uMDIuMDJjLS4wMy4wNS0uMDUuMTEtLjA3LjE3di4wNGMtLjAzLjA2LS4wMy4xMi0uMDMuMTl2Mi4wMWMwIC43OC0uNDIgMS40OS0xLjA5IDEuODhzLTEuNS4zOS0yLjE4IDBsLTEuNzQtMWEuNi42IDAgMCAwLS4yMS0uMDhjLS4wNi0uMDEtLjEyLS4wMi0uMTgtLjAyaC0uMDNjLS4wNiAwLS4xMS4wMS0uMTcuMDJoLS4wM2MtLjA2LjAyLS4xMi4wNS0uMTcuMDhoLS4wMkwuNCA3LjcxYy0uMjUuMTQtLjQuNDEtLjQuNjl2NC4wMWMwIC4yOS4xNS41Ni40LjciIHN0eWxlPSJmaWxsOiM0NDY4YzQiLz48cGF0aCBkPSJtMTcuODQgMjQuNDgtMy40OC0yLjAxaC0uMDJjLS4wNS0uMDQtLjExLS4wNi0uMTctLjA4aC0uMDNhLjUuNSAwIDAgMC0uMTctLjAzaC0uMDNjLS4wNiAwLS4xMiAwLS4xOC4wMmgtLjA0Yy0uMDYuMDMtLjEyLjA1LS4xOC4wOGwtMS43NCAxYy0uNjcuMzktMS41LjM5LTIuMTggMGEyLjE5IDIuMTkgMCAwIDEtMS4wOS0xLjg4di0yLjAxYzAtLjA2IDAtLjEzLS4wMi0uMTl2LS4wNGMtLjAzLS4wNi0uMDUtLjExLS4wOC0uMTdsLS4wMi0uMDJzLS4wNi0uMDktLjEtLjEzTDguMjkgMTlzLS4wOS0uMDgtLjE1LS4xMWgtLjAxbC0zLjQ3LTIuMDJhLjgzLjgzIDAgMCAwLS44MSAwTC4zNyAxOC44OGEuODcuODcgMCAwIDAtLjM3LjcxdjQuMDFjMCAuMjkuMTUuNTUuNC43bDMuNDcgMi4wMWguMDJjLjA1LjA0LjExLjA2LjE3LjA4aC4wM2MuMDUuMDIuMTEuMDMuMTYuMDNoLjAzYy4wNiAwIC4xMiAwIC4xOC0uMDJoLjA0Yy4wNi0uMDMuMTItLjA1LjE4LS4wOGwxLjc0LTFjLjY3LS4zOSAxLjUtLjM5IDIuMTcgMHMxLjA5IDEuMTEgMS4wOSAxLjg4djIuMDFjMCAuMDcgMCAuMTMuMDIuMTl2LjA0Yy4wMy4wNi4wNS4xMS4wOC4xN2wuMDIuMDJzLjA2LjA5LjEuMTRsLjAyLjAycy4wOS4wOC4xNS4xMWguMDFsMy40OCAyLjAyYy4yNS4xNC41Ni4xNC44MSAwbDMuNDgtMi4wMWMuMjUtLjE0LjQtLjQxLjQtLjdWMjUuMmEuODEuODEgMCAwIDAtLjQtLjdaIiBzdHlsZT0iZmlsbDojNDI5M2Q5Ii8+PC9zdmc+
[deepwiki-link]: https://deepwiki.com/CherryHQ/cherry-studio
[twitter-shield]: https://img.shields.io/badge/Twitter-CherryStudioApp-0088CC?logo=x
[twitter-link]: https://twitter.com/CherryStudioHQ
[discord-shield]: https://img.shields.io/badge/Discord-@CherryStudio-0088CC?logo=discord
[discord-link]: https://discord.gg/wez8HtpxqQ
[telegram-shield]: https://img.shields.io/badge/Telegram-@CherryStudioAI-0088CC?logo=telegram
[telegram-link]: https://t.me/CherryStudioAI
<!-- Links & Images -->
[github-release-shield]: https://img.shields.io/github/v/release/CherryHQ/cherry-studio?logo=github
[github-release-link]: https://github.com/CherryHQ/cherry-studio/releases
[github-nightly-shield]: https://img.shields.io/github/actions/workflow/status/CherryHQ/cherry-studio/nightly-build.yml?label=nightly%20build&logo=github
[github-nightly-link]: https://github.com/CherryHQ/cherry-studio/actions/workflows/nightly-build.yml
[github-contributors-shield]: https://img.shields.io/github/contributors/CherryHQ/cherry-studio?logo=github
[github-contributors-link]: https://github.com/CherryHQ/cherry-studio/graphs/contributors
<!-- Links & Images -->
[license-shield]: https://img.shields.io/badge/License-AGPLv3-important.svg?logo=gnu
[license-link]: https://www.gnu.org/licenses/agpl-3.0
[commercial-shield]: https://img.shields.io/badge/License-Contact-white.svg?logoColor=white&logo=telegram&color=blue
[commercial-link]: mailto:[email protected]?subject=Commercial%20License%20Inquiry
[sponsor-shield]: https://img.shields.io/badge/Sponsor-FF6699.svg?logo=githubsponsors&logoColor=white
[sponsor-link]: https://github.com/CherryHQ/cherry-studio/blob/main/docs/sponsor.md