Cherry is the self-hosted alternative to TypingMind.
TypingMind is a browser-first multi-model chat with BYO keys, cloud sync, a Prompt Library and AI Agents. It's a great starting point for individuals. It ships as a licensed frontend layered on cloud-synced storage, and TypingMind Team adds a branded workspace with shared prompts and analytics on top. Cherry is the production-grade workspace that sits underneath: a fifteen-plus entity Postgres data model, per-message UsageEvent attribution across user / workspace / chat / model, private MinIO file storage with presigned URLs, real multi-workspace teams with roles, the Pins/Clipboard/Snippets three-tier reuse system and a Recharts usage dashboard. Self-hosted end to end. Deploy on your hardware. Run it as your own SaaS. You own the whole stack.
TypingMind stores chats in browser storage by default. Cherry uses Postgres on your infrastructure.
Postgres entities power the Cherry workspace.
Cherry ships three content reuse tiers: Pins, Clipboard and Snippets.
Four moments a licensed browser chat stops scaling.
TypingMind ships as a licensed chat frontend with BYO keys. It solves the "one interface for many models" problem cleanly for one person. It doesn't try to be the production workspace a real team runs on.
Browser-first storage
TypingMind stores chats in browser storage with cloud sync as an add-on. If a browser profile blows up or you switch devices without sync configured, work stops. Cherry ships PostgreSQL through Prisma as the primary store from day one. Every chat, folder, snippet, file and UsageEvent lives in a real database on your infrastructure with real backups.
A license, not a codebase
TypingMind is software you buy a license to. Custom behavior means feature requests. Cherry is code you deploy end to end: Next.js 14 frontend, Express backend, Postgres, Redis and MinIO, all orchestrated by Docker Compose. Extend it, brand it, wire it to your own auth, run it as your own SaaS. No license, no vendor gatekeeping.
Analytics, not attribution
TypingMind Team surfaces analytics at the account level. Cherry ships a UsageEvent per message with tokens, dollar cost and latency attributed to user, workspace, chat and model. Consultants can pull "what did the ACME project cost in AI last quarter" in a single query. That's attribution, not a dashboard.
Prompt Library vs three-tier reuse
TypingMind's Prompt Library is a saved-prompt shelf. Cherry ships three primitives: Pins bookmark any message with scroll-to-highlight, Clipboard saves passages per chat with drag-reorder, Snippets are project-scoped reusable text with tags, folder scoping and source-message tracking. Promote a Clipboard passage into a Snippet when it's worth keeping.
A workspace with a spine, not a chat frontend with cloud sync.
TypingMind ships as a licensed chat with BYO keys, browser-first storage and TypingMind Team as the collaboration surface. Cherry sits underneath that pattern. A real Postgres schema replaces browser storage as the primary store. MinIO with presigned URLs replaces TypingMind Cloud sync. Three reuse tiers (Pins, Clipboard, Snippets) replace a Prompt Library. Per-message UsageEvent attribution replaces account-level analytics. And a full Docker Compose stack replaces "buy a license" as the deployment story.
TypingMind vs Cherry.
Both let you route multiple providers with your own keys. The gap opens the moment you scale past one user or want to own the whole stack.
| Feature | TypingMind | Cherry |
|---|---|---|
| Primary storage | Browser storage with cloud sync | PostgreSQL via Prisma on your infrastructure |
| Model providers | OpenAI, Anthropic, Google, others (BYO keys) | OpenAI + Anthropic shipping, typed adapter for any provider |
| Deployment | SaaS + licensed self-host | Self-hosted. On-prem, cloud, run as your own SaaS. You decide |
| Ownership | You buy a license | You own the code, the data, the deployment |
| Data model | Chats + folders + tags + Prompt Library | 15+ entity Postgres schema (Workspaces, Presets, UsageEvents, more) |
| Folder nesting | Folders + projects | Infinite nested self-referential tree |
| Per-message bookmarks | No | Pins with scroll-to-highlight animation |
| Per-chat clipboard | No | Drag-reorderable saved passages, promote to Snippet |
| Cross-chat snippets | Prompt Library | Tagged, folder-scoped, source-tracked, one-click injection |
| Model presets | Custom Instructions per assistant | Agent Library with model + temp + prompt + tier gating |
| Model comparison | Not first-class | Fire one prompt at every provider side by side |
| Cost per prompt | Account-level analytics | Tokens, dollar cost, latency on every message |
| Cost attribution | Team-wide | Per user, per workspace, per chat, per model |
| Usage dashboard | TypingMind Team analytics | Recharts. Today / 7d / 30d / billing cycle |
| File storage | TypingMind Cloud sync | Self-hosted MinIO with local-disk fallback, presigned URLs |
| Bulk folder upload | No | Replicates an entire OS folder tree transactionally |
| Knowledge Base / RAG | Yes (Knowledge Base) | Files + Snippets addressable per chat, RAG roadmap |
| Plugins / MCP | Plugins + MCP servers | Cherry outbound API + Apps (Canvas, Code Interpreter, Image Gen) |
| Streaming transport | SSE | Server-Sent Events with real cancel-mid-stream |
| Team surface | TypingMind Team (branded workspace) | Multi-workspace with Owner/Admin/Member roles |
| SSO | Team tier | Available in Enterprise, configurable on your infrastructure |
| Keyboard shortcuts | Basic | 18 mapped across Navigation / Chat / Editor / Files |
Frequently asked questions.
Can I still use my own API keys?
Yes. Cherry runs on shared server-side keys by default, and Enterprise deployments support per-user or per-workspace BYO keys. Every prompt hits the vendor API directly. There's no proxy adding cost or telemetry between you and OpenAI / Anthropic / whoever.
What happens to my TypingMind chats?
TypingMind exports chat history as JSON. Cherry ships an import path that walks the export, recreates folders in the Folder tree, restores messages, files and cloud-sync metadata into Postgres. Presets in the Agent Library capture the equivalent of TypingMind's Assistants.
Is Cherry a chat frontend or a workspace?
A workspace with chat as one surface. The fifteen-plus entity data model, three-tier content reuse, per-message UsageEvent attribution, MinIO file storage discipline, multi-workspace teams with roles and modular Apps (Canvas, Code Interpreter, Image Generation) are all first-class, not add-ons layered on a chat.
Does Cherry support plugins or MCP servers?
Cherry ships an outbound API for third-party integration plus modular Apps (Canvas for live rendering, Code Interpreter beta, Image Generation). MCP support is on the roadmap. Every provider adapter is a typed interface so plugging a new capability is a single-file addition.
How is Cherry deployed?
Cherry is self-hosted. Docker Compose orchestrates nginx, the Next.js frontend, the Express backend, Postgres, Redis and MinIO. Deploy it on your own hardware for internal use, run it in your cloud or spin it up as your own SaaS product. You own the code, the data and the deployment.
What does Cherry cost?
Contact sales for pricing. Every engagement is scoped to how you plan to deploy, who your users are, which provider adapters you need lit up and what support terms fit your organization.
Ready to graduate from a licensed chat to a workspace you own?
Tell us how your team uses TypingMind today, how many concurrent projects you juggle and where the browser-first architecture starts biting. We'll respond within one business day with an honest read on whether Cherry fits.