Guides

Self-hosted live chat: a practical guide

Behind the “self-hosted live chat” search is one clear demand: a chat widget embedded in your site — with data, cost and customization under your control. This guide offers an actionable evaluation checklist and a path from selection to production. It is vendor-neutral, using IMCore as the worked example.

A seven-point evaluation checklist

Self-hosting is not “install a chat room on a box”. Run every candidate (open source or commercial) through these seven checks — a miss on any one turns into an incident or a rewrite in production:

  • Delivery guarantees: ACKs, retries, ordering — “occasionally drops a message” is not acceptable
  • Fan-out throughput: measured numbers for broadcast scenarios, not marketing claims
  • Agent workspace: queueing, assignment, transfer and human↔AI collaboration are the daily surface
  • AI: can it plug into your own model and knowledge base; are answers grounded
  • Client SDKs: coverage and customization depth across web widgets and mobile (Flutter / React Native, etc.)
  • Deployment footprint: minimum viable single node, and a scale-out path that does not touch clients
  • Licensing: open source ≠ free for production; check which capabilities sit behind paid editions

What the three routes really cost

SaaS live chat (Intercom, MeiQia et al.) bills per seat — fast, but the vendor holds both your data and your cost curve. Open-source assembly (Chatwoot-class plus a self-built messaging layer) looks free until you price delivery guarantees and mobile SDKs. Commercial self-hosted engines (IMCore-class) are buyout-oriented and ship the full server plus clients — the line-by-line comparison lives on the comparison pages.

From zero to production

Using IMCore as the example: pull the one-command local stack (PostgreSQL + Redis + server) first and verify messaging plus the agent workbench; then follow the production Compose guide onto a VPS — automatic HTTPS via Caddy, database and Redis never exposed; finally embed the web widget and mint JWTs from your backend. Scaling to a cluster later touches no client code.

Capacity reference: one 4C8G node measured at 10,000 concurrent connections, ~40k fan-out messages per second, p99 153 ms — far beyond the support traffic of most sites.

FAQ

How much do you save versus SaaS?

It depends on seats and horizon: subscriptions scale linearly and never stop; self-hosted buyout is one-time. The rule of thumb: more seats and longer horizons favor self-hosting on total cost of ownership — bring your seat count and horizon and we will run the numbers.

Aren’t open-source options (e.g. Chatwoot) free?

The license may be free, but production costs are not: reliable delivery, mobile SDKs, cluster scaling, moderation and monitoring are either in paid editions or cost your team’s engineering time. Price those in before comparing with a commercial engine — the conclusion often flips.

Do I have to build the web widget myself?

No. IMCore ships a chat bubble + conversation window for the web, plus Web/React and Flutter UIKits for deeper customization; the live demo on this site shows the embedded result.

Keep reading

Head-to-head comparisons

/en/compare/ →

Production deployment with Docker Compose

/en/docs/deploy-docker-compose/ →

Self-hosting a chat server

/en/docs/self-hosted-chat-server/ →

Self-hosted customer service software: why and how to choose

/en/topics/self-hosted-customer-service/ →

Self-hosted AI customer service: an on-prem selection guide

/en/topics/self-hosted-ai-customer-service/ →

Air-gapped instant messaging: selection and deployment

/en/topics/air-gapped-instant-messaging/ →

READY TO OWN THE CONVERSATION?

Bring your workload. We’ll size the architecture.

Share your concurrent connections, daily message volume and deployment environment for a concrete edition and topology recommendation.

We usually reply within one business day