Skip to content

FAC Chat ​

FAC Chat is an opt-in, in-Frappe AI chat assistant powered by our managed FAC Cloud subscription. Where the MCP server lets external LLM clients (Claude Desktop, Cursor, ChatGPT desktop) talk to your Frappe data with your own LLM keys, FAC Chat brings the conversation inside Frappe itself — a chat widget on every Desk page and a full-screen SPA at /copilot.

Two ways to use FAC ​

FAC 3.0 offers two ways to use it:

  • BYO-LLM (MCP server, free) — the original FAC. Connect any MCP-ready LLM client (Claude Desktop, Cursor, ChatGPT desktop, etc.) to your Frappe data over MCP. You bring the LLM, you pay your own LLM bill, nothing leaves your stack. Ships enabled by default.
  • FAC Chat (in-Frappe chat UI, SaaS) — opt-in. A native chat widget on every Desk page plus a full-screen SPA at /copilot, powered exclusively by our managed FAC Cloud. One subscription covers LLM access across providers, conversation memory, RAG, and workflow automation. Ships disabled by default.

The split is intentional: BYO-LLM keeps the existing free MCP path untouched; FAC Chat is the managed experience for teams that want the chat inside Frappe without wiring up their own LLM keys.

OptionWhat it isLLMCostWhere the chat lives
BYO-LLM (MCP server)The original FAC. Exposes Frappe data over MCP to any MCP-ready client.You bring your own (Anthropic, OpenAI, Gemini, Bedrock, etc.)Free. You pay your own LLM bill.In your external MCP client (Claude Desktop, Cursor, etc.). No chat UI inside Frappe.
FAC Chat (SaaS)In-Frappe chat widget + /copilot SPA. Streaming, tool use, attachments, history, memory, RAG, workflows.Managed by FAC Cloud. One subscription, multiple providers.Subscription required. Sign-up flow runs inside the chat UI.Inside Frappe Desk.

These are mutually exclusive at the chat layer: the in-Frappe chat UI is only available through FAC Cloud. There is no BYO-LLM path for FAC Chat — if you want to bring your own LLM, use the MCP server.

Both options share the same plugin registry, the same Assistant Audit Log, and the same OAuth-based authentication. Enabling FAC Chat does not change anything for your MCP clients — both can run side by side.

Requirements ​

FAC Chat runs the assistant in FAC Cloud and calls your site back for every action, so your site must be reachable from the public internet. A bench on localhost, on a private network, or behind a firewall with no inbound access cannot use FAC Chat — registration checks this up front and tells you rather than failing later.

That is a limitation of the cloud path only. The free MCP server has no such requirement, and it is the better fit for local and personal use. See Local and private sites for both options.

What you get ​

FAC Chat is an AI assistant embedded in your Frappe site, across three surfaces:

  • a floating widget on every Desk page, built from the same components as the SPA,
  • a full-screen SPA at /copilot,
  • a mobile app over OAuth, coming soon.

It supports streaming responses, tool use against your Frappe data, file attachments, conversation history, and — through the FAC Cloud subscription — conversation memory, RAG over your documents, and workflow automation. Conversations are mirrored into your own Frappe database; the assistant authenticates as a real Frappe user, so it only touches data that user can already see, and every action stays inside your existing permissions and audit trail.

Writes pause for approval — a FAC Chat-only gate ​

Over the plain MCP server, a write runs the instant the model calls it, inside the caller's Frappe permissions — there is no pause, no card, no approver. FAC Chat adds a human-in-the-loop step on top of that: by default, create_document, update_document, delete_document, and document_action calls pause and show you an approval card before they land, and nothing changes in your books until you approve or reject it.

Each user can change this default per tool from their own approval preferences — Block, Ask (the default for writes), or Always Allow — so a trusted workflow doesn't have to click through a card every time. This gate is specific to FAC Chat; it has no effect on MCP clients like Claude Desktop or Cursor.

Installing FAC Chat ​

FAC Chat ships inside the same frappe_assistant_core app you already install for the MCP server — there is nothing extra to install. On a self-hosted bench:

bash
# New install
bench get-app https://github.com/buildswithpaul/Frappe_Assistant_Core
bench --site yoursite install-app frappe_assistant_core

# Existing install — upgrade to the FAC 3.0 stable release
cd apps/frappe_assistant_core && git fetch origin && git checkout main && git pull
cd ../.. && bench --site yoursite migrate && bench restart

Upgrading from 2.x leaves your MCP setup, tools, plugins, and audit log untouched — FAC Chat is additive and starts switched off.

Enabling FAC Chat ​

  1. Go to Assistant Core Settings → FAC Chat tab.
  2. Toggle Enable FAC Chat to ✓ and save.

That is the whole change — no bench restart is required. The chat hooks are always registered and check the setting at runtime, so other workers pick up the new state on their next request.

A discovery banner on the Desk landing page also walks admins through enabling chat — it appears once per admin and can be dismissed.

After enabling:

  • The chat widget appears in the corner of Frappe Desk pages. It looks like FAC Chat, follows Desk's light/dark theme live, and never restyles Desk itself.
  • The full-screen SPA is reachable at /copilot.
  • The first time a user opens chat, they walk through a one-time onboarding that connects the site to FAC Cloud and links it to a subscription.

Who sees the widget ​

The chat widget is not shown to everyone by default. Once FAC Chat is enabled, the launcher appears only for:

  • Members — users an admin has added to FAC Chat from Settings → Users (each holds a seat on your subscription), and
  • Admins — anyone with the System Manager role, and the Administrator account. Admins always see the widget so they can set things up, even before they hold a seat.

A logged-in user who is neither a member nor an admin sees nothing at all — no launcher, no prompt. When an admin adds them from Settings → Users, the widget appears for them on their next page refresh. This keeps the assistant invisible to staff who haven't been given access, and turns it on the moment they are.

Each user can also hide the launcher for themselves from their own preferences, and re-enable it later — that personal choice is always respected, admins included.

What FAC Chat is NOT ​

  • It is not required for MCP server users. Skip it entirely if Claude Desktop or another MCP client is your only access pattern — the free MCP path keeps working exactly as before.
  • It is not a BYO-LLM frontend. The in-Frappe chat UI talks only to FAC Cloud. If you want to bring your own LLM keys, the MCP server is the path for that.
  • It does not change FAC's tool catalog. The same built-in tools are available to MCP clients and to FAC Chat alike.
  • It does not store conversations off-site without consent. Conversation history lives in your Frappe database; only the LLM request payload (messages + tool-call results) is forwarded to FAC Cloud to generate the next response.
  • Files & attachments — what you can attach, the size and type limits, where the bytes are stored, and how attached files reach the model.
  • Welcome suggestions — how the starter tiles on the landing screen are personalised, and how to turn them off.
  • Browser diagnostics — how the widget helps debug a broken page, exactly what it records, what is redacted, and the admin kill switch.
  • Continuing a previous conversation — how the assistant finds and reads your own earlier conversations, and the limitation worth knowing before you rely on it.
  • Technical (client side) — how the widget mounts on Desk pages, how streamed responses are rendered, and how a session follows you between the widget and the SPA (and the mobile app, once it ships).