mothermachine

Browse / SMB ops and CRM

Chatwoot

Omnichannel support desk with documented Application, Platform and Client APIs; MIT core, env-configured.

AdaptableOperable Business appWeb app Hybrid RubyJavaScript API License: MIT with enterprise/ under commercial license

Live chat, email, WhatsApp, social and SMS in one inbox, with help center, campaigns, reports and the Captain AI agent. Self-host under MIT (enterprise/ is commercial) and configure through documented env vars. The Builder documents three REST APIs; there is no official MCP, though community wrappers exist.

Use it when
  • I want WhatsApp, email and website chat in one queue on our own server and our agent drafting replies through the API
  • I am paying per seat for Intercom or Zendesk and want a flat self-hosted desk
Gotchas
  • Platform API is self-hosted or managed hosting only, not cloud
  • enterprise/ directory (Captain and others) is commercially licensed; MIT covers the core
  • README warns of breakages if channel env vars are not set
  • 1,300+ open issues: large surface, expect rough edges

Last activity Sep 3, 2026. Fit: adaptable 3, operable 3.

Editions

Community (self-hosted) · Free open source

  • Clonegit clone https://github.com/chatwoot/chatwoot
  • DeployDeploy
  • ImageContainer

Cloud · Free closed source

Enterprise (self-hosted) · Free closed source

No distribution recorded.

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only25 things to editadmin-ui surface

The named env vars (.env.example) are deployment configuration: SECRET_KEY_BASE, FRONTEND_URL, POSTGRES_*, REDIS_URL, SMTP_*, inbound-mail ingress, storage and per-channel app ids; only INSTALLATION_NAME/BRAND_NAME/LOGO overrides in config/installation_config.yml touch branding. Business adaptation lives in the admin UI: inboxes and channels, teams and agents, canned responses, macros, automation rules, labels, help center and Captain settings.

Env vars
FRONTEND_URL SECRET_KEY_BASE POSTGRES_HOST POSTGRES_USERNAME POSTGRES_PASSWORD REDIS_URL SMTP_ADDRESS SMTP_USERNAME SMTP_PASSWORD MAILER_SENDER_EMAIL MAILER_INBOUND_EMAIL_DOMAIN RAILS_INBOUND_EMAIL_SERVICE ENABLE_ACCOUNT_SIGNUP FB_APP_ID FB_APP_SECRET SLACK_CLIENT_ID SLACK_CLIENT_SECRET GOOGLE_OAUTH_CLIENT_ID AZURE_APP_ID ACTIVE_STORAGE_SERVICE S3_BUCKET_NAME DEFAULT_LOCALE
Config files
.env.example docker-compose.yaml config/installation_config.yml
Prompt files
none
Accounts you need
SMTP providerMeta developer app (Facebook, Instagram, WhatsApp)Twilio (SMS, optional)OpenAI (Captain, optional)

Source

Operable: what an agent can drive

Interface

OfficialAPIpublished by the builderremote or local

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
developers.chatwoot.com/api-reference/introduction

Reach

Partial coverage. 6 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Read and reply to conversationsReachableApplication API conversations and messages endpoints
Manage contacts and their attributesReachableApplication API contacts endpoints
Create and configure inboxesReachableApplication API inboxes; Platform API for installation-level setup
Manage agents and teamsReachableApplication API agents; Platform API users and accounts
Receive eventsReachableWebhooks documented in the API reference
Run reports (conversation, agent, CSAT)UndeterminedNot confirmed on the API introduction page; check the Application API reports section
Automation rules, labels, canned responsesUndeterminedNot confirmed on the introduction page
Publish help center articlesUndeterminedNot confirmed on the introduction page
Configure the Captain AI agentUndeterminedCaptain is an enterprise/ feature; API coverage not documented on the intro page
Embed a custom chat widgetReachableClient API with inbox_identifier and contact_identifier

Code stack

Languages
RubyJavaScript
Frameworks
Ruby on RailsVue.jsSidekiq
Package manager
bundler + pnpm
Database
PostgreSQLRedis
Hosting target
DockerHerokuDigitalOcean Kubernetes
Built
Human-written (recorded, never ranked)

Model stack

Providers
OpenAI (Captain)
Models
none
Keys you need
none
Prompts live in
none

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME: Rails app deployed with Docker, Heroku, Kubernetes95%
executionModelREADME Captain AI agent on top of a deterministic desk80%
operabilitydevelopers.chatwoot.com: Application, Client and Platform APIs with access tokens95%
effortREADME Deployment: link to environment-variables docs; .env.example with 120+ named vars85%
editionsREADME: MIT core, enterprise/ commercial; chatwoot.com cloud70%
activeGitHub pushedAt 2026-09-03–
reach65%

Open questions

  • Cloud plan prices and whether a free cloud plan exists
  • Confirm API coverage for reports, automation rules, labels, canned responses and help center
  • Which model provider does Captain require?

Sources