Cherry is the production alternative to LibreChat.
LibreChat is the honest open-source multi-provider chat. Great starting point, minimal workspace surface. Cherry is the production-grade workspace the LibreChat pattern needs to become: a fifteen-plus entity Postgres data model, per-message UsageEvent attribution across user / workspace / chat / model, the Pins/Clipboard/Snippets three-tier reuse system, presigned MinIO storage with filename sanitization, bulk folder upload that replicates an OS tree transactionally, a Recharts usage dashboard, multi-workspace with roles and modular Apps (Canvas, Code Interpreter and Image Generation). Self-hosted end to end, no fork to maintain. You own the whole stack.
Four things LibreChat leaves you to build yourself.
LibreChat is a good open-source starting point. It stops being enough the moment a real team runs on it and someone asks who spent what, where the assets are and how we onboard the next 20 users.
Shallow workspace primitives
LibreChat gives you conversations, tags and a Prompt Library. Cherry ships a fifteen-plus entity data model on Postgres via Prisma: Users, Workspaces, WorkspaceMembers with roles, Projects, Folders (self-referential, unbounded depth), Chats, Messages, Snippets, Clipboards, Files, Models, Presets, UsageEvents, BillingPlans, StorageUsage. The workspace has a spine, not a folder icon.
No first-class cost attribution
LibreChat surfaces token counts. Cherry ships a full UsageEvent per message with tokens in, tokens out, dollar cost, latency in ms, model, preset, chat, user and workspace, plus a Recharts dashboard that filters by today / 7d / 30d / billing cycle and breaks down by user / model / chat. Consultants attribute AI spend per client engagement in a single query.
Storage discipline is DIY
LibreChat leaves storage strategy to the operator. Cherry ships MinIO by default with local-disk fallback, generates short-TTL presigned URLs per request, sanitizes filenames and never exposes bucket paths in any client response. Bulk folder upload replicates an entire OS folder tree transactionally.
No product ownership, only a fork
LibreChat is a codebase you maintain against upstream. Every custom feature is a fork to rebase. Cherry is a product you deploy and own. There's no upstream to chase. The feature roadmap is set by you and Middle Mann, not by whoever merges to LibreChat main. Docker Compose orchestrates nginx, frontend, backend, Postgres, Redis and MinIO.
Same open-source spirit, without the fork you rebase forever.
LibreChat gets a lot right: MCP servers, Agents, Code Interpreter, Artifacts, OAuth and SAML. Cherry starts from a different data spine. A Postgres schema through Prisma with fifteen-plus entities replaces MongoDB defaults. A UsageEvent per message replaces raw token counts. Three reuse tiers (Pins, Clipboard, Snippets) replace a single Prompt Library. Multi-workspace with roles replaces flat user accounts. And Cherry ships as a product you deploy, not a repo you rebase against upstream forever.
LibreChat vs Cherry.
Both self-hosted, both multi-provider, both open in principle. The difference is depth of the workspace primitives and product ownership.
| Feature | LibreChat | Cherry |
|---|---|---|
| Model providers | Multi-provider (config-driven) | OpenAI + Anthropic shipping, pluggable adapter for any provider |
| Data model depth | Conversations + tags + Prompt Library | 15+ entity Postgres model via Prisma |
| Organization | Bookmarks and tags on conversations | Infinite nested folder tree, self-referential parents |
| 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 | Project-scoped, tagged, source-tracked, one-click injection |
| Model presets | Presets (per-model config) | Agent Library. Presets with model + temp + system prompt + tier gating |
| Model comparison | Not first-class | Fire one prompt at multiple models side by side |
| Cost per prompt | Token counts | Tokens, dollar cost, latency on every message via UsageEvent |
| Cost attribution | DIY | Per user, per workspace, per chat, per model |
| Usage dashboard | Basic | Recharts. Today / 7d / 30d / billing cycle |
| Bulk folder upload | No | Replicates an entire OS folder tree transactionally |
| File storage | Local / configurable | MinIO with local-disk fallback, presigned URLs, sanitized filenames |
| Conversation history | MongoDB default | Postgres via Prisma. Exportable, portable |
| Streaming transport | SSE | Server-Sent Events with cancel-mid-stream |
| Team workspaces | User accounts, limited team surface | Multi-workspace with Owner / Admin / Member roles, BillingPlan, StorageUsage |
| SSO | OAuth, SAML, LDAP, 2FA (config-driven) | Available in Enterprise, configurable on your infrastructure |
| Keyboard shortcuts | Limited | 18 mapped across Navigation / Chat / Editor / Files |
| Connectors | Plugin ecosystem | GitHub + Google Drive shipping, Notion / Slack / Jira on roadmap |
| Apps | Agents, Code Interpreter, Artifacts, MCP servers | Canvas, Code Interpreter (beta), Image Generation, modular |
| Outbound API | Not a product surface | Cherry outbound API for third-party integration |
| Deployment | Self-hosted (fork to customize) | Self-hosted. On-prem, cloud, run as your own SaaS. You decide |
| Ownership | Open source, upstream to chase | You own the code, the data, the deployment. No upstream fork |
Frequently asked questions.
Why not just self-host LibreChat and customize it?
You can. And if the workspace primitives (folders, cost attribution, Pins/Clipboard/Snippets, presigned MinIO storage, roles, modular Apps) don't matter to you, LibreChat is a reasonable answer. The moment they do, you either build them yourself against a fork you'll rebase forever, or you deploy Cherry and skip the maintenance treadmill.
Which providers does Cherry ship?
OpenAI and Anthropic adapters ship today. The provider abstraction is a typed interface, so lighting up Google, xAI, Perplexity Sonar, DeepSeek or any future provider is a single-file adapter addition. Google models are already in the catalog for Preset filtering; the runtime adapter is on the roadmap.
How granular is cost tracking?
Every message generates a UsageEvent record with tokens in, tokens out, dollar cost, latency in ms, model, preset, chat, user and workspace. The Recharts dashboard filters by today, 7 days, 30 days or billing cycle and shows a daily cost bar chart, breakdown by user / model / chat and storage growth in GB.
What's the storage story?
MinIO S3-compatible object storage with local-disk fallback if MinIO isn't wired. The storageKey is stored in the File record. The raw bucket path is never exposed. Every file access goes through a short-TTL presigned URL generated per request. Filenames are sanitized. Bulk folder upload replicates an entire OS folder tree transactionally.
How does Cherry stream responses?
Cherry streams via Server-Sent Events over HTTP. Every provider adapter implements the streaming interface, so tokens appear the moment the model emits them. The Stop button cancels mid-stream. SSE is a standard browser API. There's no proprietary transport.
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 stop chasing a fork?
Tell us how your team uses LibreChat today, what you had to build on top and where the maintenance burden started biting. We'll respond within one business day with an honest read on whether Cherry fits.