← all posts
the landscape

Own your customer conversations: self-hosted chat

Put customer chat in your own database — not a vendor's. Self-hosted Krispy costs $0/month on Cloudflare's free tier and keeps conversation history in infrastructure you control.

Shai Snir
self-hostingdata-ownershipopen-sourcelive-chatvendor-lock-in
Buttr the croissant mascot

🥐 Buttr: your conversations are in their database. wild, when you think about it.

When you install Intercom, Crisp, or Zendesk on your site, your customer conversations live in their database — not yours. Self-hosted chat changes that: your history, AI context, and contacts sit in infrastructure you control, at a cost that can reach $0/month. No contract clause holds you; you just stop paying.

What does vendor lock-in actually look like?

It starts small. You paste a snippet, answer some tickets. Six months later you have:

  • Hundreds of conversations that trained your AI assistant — inside their platform
  • Saved replies and macros your team relies on — inside their platform
  • Customer tags, segments, and conversation metadata — inside their platform
  • A helpdesk email routing through their servers

Now you want to leave. You get a CSV export with stripped-down history and no way to port the AI context. Your saved replies are copy-paste jobs. And you're looking at $100–400/month to stay.

According to Intercom's published pricing, the cheapest plan with AI features starts at $74/month — teams of three or more land between $200–400/month before usage fees. Crisp's team plan runs $95/month. Zendesk charges $55 per agent per month, AI suite sold separately.

That's the lock-in — not a contract clause, just gravity.

How does self-hosted chat keep your data yours?

Self-hosted chat means conversations sit in your database. The AI context belongs to you. The message history is queryable with your own tools. Nobody can raise the price or shut off access on 30 days' notice.

Krispy is open-source AI live chat built on this idea. It has a Telegram-based human-in-the-loop handoff — when the bot can't handle something, a real person gets a Telegram message and replies directly from their phone. No proprietary inbox, no seat licenses per agent.

The whole stack runs on Cloudflare Workers and Workers AI. You can deploy it for $0/month on Cloudflare's free tier, including the AI layer — Cloudflare Workers AI's free tier covers roughly 10,000 inference requests per day with no external API key required.

Buttr the croissant mascot

🥐 Buttr: no OpenAI key, no Anthropic key. i find that very soothing.

What does self-hosted Krispy cost vs. paid chat tools?

ToolEntry planWith AI + teammates
Intercom~$74/mo$200–400+/mo
Crisp$25/mo (2 seats)$95/mo (team)
Zendesk$55/agent/moAI suite sold separately
Krispy (self-hosted)$0/mo$0–5/mo

Self-hosted Krispy on Cloudflare's free tier: $0/month. If you scale past the free Workers limits, the Workers paid plan is $5/month and AI inference costs fractions of a cent per conversation. The math isn't close.

What do you give up with self-hosted chat?

This is the part most "just self-host it" posts skip. Here's the honest version:

You run the deployment. It's a wrangler deploy away, but that's still something you do. If the worker crashes, you debug it.

No polished web inbox. Krispy's human handoff routes through Telegram. If you need a fully-featured web inbox with team routing, assignments, and SLA timers, Crisp or Intercom is genuinely better for that right now.

You wire the integrations. CRM sync, Slack notifications, custom webhooks — Krispy is open-source, so you can build them, but they don't come pre-assembled.

For a solo founder or a small dev-friendly team, the tradeoffs land in Krispy's favor. For a 50-person support team that needs enterprise workflows, a paid tool probably makes more sense.

Buttr the croissant mascot

🥐 Buttr: i said it. yes, i'm open-source and i'm telling you when the paid tools win. you're welcome.

How do you deploy self-hosted chat in five minutes?

git clone https://github.com/lonormaly/krispyai
cd krispy
npm install
npx wrangler deploy

That's the short version. The 5-minute self-host setup guide for Cloudflare walks through the Cloudflare bindings, the Telegram bot token, and embedding the widget. Once running, your conversations log to Durable Objects in your own Cloudflare account — not our servers, not anyone else's.

Buttr reviews the deployment docs buttr already deployed. took 4 minutes. he's a croissant.

Why does data ownership matter beyond the monthly bill?

When conversations live in your infrastructure, you can run your own analytics, feed summaries into your product tooling, or grep through them when a customer says "we talked about this six months ago." None of that requires a data export request or an API that breaks when the vendor changes their schema.

Your customer conversations are where feature requests hide and where trust gets built or lost. Owning that data — not renting access to it — changes what you can do with it long-term.

We wrote about why we built Krispy as open-source software, and this is the core of it: the default for developer tools should be "you own the data," not "we host it for you."

Self-host it: star the repo on GitHub and deploy in five minutes. Rather skip the terminal? Krispy Cloud has a 14-day free trial at $19/month flat — no per-seat pricing, no surprises.

FAQ

Does self-hosted chat mean I keep my conversation history when I switch platforms?

Yes — that's exactly the point. When you self-host Krispy, conversation history lives in your own Cloudflare account (Durable Objects or configurable storage). You can export it, migrate it, or query it on your terms. You're not waiting on a vendor's export feature or CSV download. Switching away from a self-hosted tool is a data migration you control, not a hostage negotiation.

Can I really own my data with a SaaS chat tool?

Some offer data export, but owning it in a meaningful sense — in your own database, queryable in real time, not subject to vendor retention policies — requires self-hosting. A CSV export after the fact isn't the same as live access to your own records. Most SaaS chat tools also tie AI context (trained on your conversations) to their platform; when you leave, that context stays behind.

What AI does Krispy use without requiring an API key?

Krispy uses Cloudflare Workers AI, which runs inference on Cloudflare's hardware. There's no OpenAI or Anthropic key to configure — the free tier covers thousands of conversations per day. If you want to plug in your own model or API key, that's supported too.

Is there a risk Krispy changes its license or goes paid later?

Krispy is MIT-licensed. You can fork it, run it, modify it — and the license cannot be revoked retroactively on any version you already have. If a proprietary vendor changes pricing or shuts down, you have no recourse. With MIT, the worst case is you're maintaining a fork of working software.

Does self-hosting fix per-seat pricing too?

Yes. There are no seats in Krispy. You add team members to your Telegram group and the cost doesn't move. Per-seat pricing punishes you for growing your team; self-hosting with open-source software means your infrastructure costs scale with actual usage, not headcount. A team of ten costs the same to run as a team of two.

Buttr the croissant mascot

that's the whole thing. want me to answer your visitors like this? i self-host in one command. 🥐