Overview

ShappyChat is one chat backend for all your apps. You run Shappy Backend on your own server and connect each app that must have a chat. Then you manage the models, tools, access and history of all these apps in one place.

Four apps connect to one Shappy Backend on your server: an internal tool, a customer product, the Chrome extension and your own chat app. Each app has its own credential. The backend is the control plane: models, connected apps, tools and history. It runs each conversation in a celld cell and calls your model server and your MCP tools.

Status: Version 0.1.0 is a self-hosted release for one operator. The SDK is not on npm; your backend serves it as a package file. The Chrome extension is a zip file and is not in the Chrome Web Store.

In one minute

  • Put it in any app. Use it in internal tools or in a product that your customers use. You can also use it in the Chrome extension or in your own chat app. Each app gets its own look, tools and credential.
  • One control plane. You manage the models, connected apps, MCP tools and history of every app in one place. When you revoke one app, the other apps continue to run.
  • Your tools and your screen. The chat calls the MCP tools that your app already has, and it can use page controls that you tag.
  • Durable. celld keeps the conversations. They stay after a restart.

Note: A credential is for one app. It is not for one user. In a product that your customers use, your server must decide which user can see which conversation. See Security and data.

The parts

Part What it does Read
Shappy Backend Serves the backend pages and API, keeps settings, checks access and serves the SDK Shappy Backend
celld Runs and stores each conversation in its own cell Self-host
Embedded chat SDK @shappychat/chat: the chat UI and the runtime clients for your web app Embed the chat
Chrome extension The chat in the Chrome side panel, connected to your backend or to a local model Chrome extension
Your MCP tools The operations of your app that the chat can call App tools (MCP)
Model server LM Studio, Ollama or any OpenAI-compatible endpoint Shappy Backend

How the parts connect

The chat UI does not do the work. A runtime does the work. The runtime sends messages to a model, calls tools and keeps the conversation history. The UI shows the conversation of one runtime.

  • The host app is your app. It owns its data and its operations.
  • App tools are the operations of your app, available through the Model Context Protocol (MCP). The chat calls these tools. The chat does not copy your business logic.
  • UI tools let the chat use controls on the page, such as buttons and fields, that you mark for the chat.
  • The runtime can run behind Shappy Backend, in the browser, or in a Node process such as an Electron main process.

Which runtime to use

Runtime Conversation history Use when
Shappy Backend (remote) celld cells behind the backend Several apps share models, tools and one control plane. This is the main path.
Durable Chat (celld) Pi Durable in a celld host that you configure Your own trusted server binds conversations to cells. See Durable Chat.
Browser-local IndexedDB in the browser The browser can reach your MCP server and model endpoint directly.
Node SQLite in a folder that you choose You build a desktop app, for example with Electron.

See Runtimes for the setup of each runtime.

Next steps

  1. Run the backend on your server. See Self-host.
  2. Add the chat to your app, or let your coding agent do it. See Embed the chat and Set up with your agent.
  3. Connect the operations of your app. See App tools (MCP).
  4. To try ShappyChat without a server first, run the Notes demo. See Quickstart.

↑ ↓ select · Enter open · Escape close