Butterbase logo

Butterbase

OrganizationPopular
butterbase-ai

Open-source backend-as-a-service. Postgres, auth, storage, functions, AI gateway, MCP.

Publisherbutterbase-ai
Repositorybutterbase
LanguageTypeScript
Forks
171
Stars
3.6K
Available tools
0
Transport typestdio
Categories
LicenseApache-2.0
Links
  • Connect tools to AI workflows

    Butterbase exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 0 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    3.6K stars and 171 forks from the linked repository.


Butterbase gives you the building blocks for AI-driven applications without lock-in: a Postgres-backed backend with row-level security, serverless functions, an LLM gateway, realtime subscriptions, key-value store, file storage, RAG, durable per-key actors, and a built-in Model Context Protocol (MCP) server so agents can operate your backend with tools instead of glue code.

Features

Data

  • Postgres data plane — per-app databases with declarative schema (/schema), automatic REST endpoints (/auto-api), and migrations.
  • Row-Level Security — first-class RLS policy management with user-isolation helpers (/rls).
  • Key-Value store — regional, quota-protected KV with TTL, audit trail, and dashboard expose rules (/v1/:app/kv/*). New in v0.2.0.
  • File storage — S3/R2-backed object storage with presigned URLs, ACLs, and async indexing (/storage).

Compute

  • Serverless functions — TypeScript functions executed on the Deno runtime (/functions).
  • Durable Objects — stateful per-key actors for chat rooms, multiplayer, rate limiters, long-running agents (/durable-objects).
  • Realtime — WebSocket subscriptions to table changes for live UIs and presence (/realtime).
  • Edge SSR — deploy Next.js / Remix / Astro edge handlers from source (/edge-ssr, /edge-ssr-from-source).
  • Frontend hosting — zip or build-from-source static / SPA deploys with custom domains (/frontend, /custom-domains).

AI

  • AI gateway — single endpoint for chat, embeddings, model listing; pluggable router adapters (/gateway, /ai-config).
  • RAG — managed collections, document ingestion, semantic search and synthesized answers (/rag).
  • Integrations — third-party tool access via Composio (/integrations).

Identity & ops

  • Auth — email + OAuth (Google, GitHub, Apple, X, …), JWT tuning, post-login hooks, service keys (/auth, /oauth-config, /api-keys).
  • Audit logs — structured request audit trail across KV and other surfaces (/audit-logs).
  • Webhooks — outbound webhooks for app events (/webhooks).
  • Multi-region app moves — relocate an app across regions with retained source replicas (scripts/move-app/).

Agent surface

  • MCP server — every capability above is exposed as MCP tools at /mcp (HTTP) or via stdio (@butterbase/mcpnpx @butterbase/mcp).
  • Claude Code pluginpackages/plugin (submodule of butterbase-skills) ships 30+ guided skills (idea → plan → schema → auth → functions → deploy → submit) for agentic app building.

Templates

templates/ contains full, production-shaped applications built on Butterbase. These aren't starter skeletons — each one is a complete, running app with schema, RLS policies, deployed functions, auth config, and a React frontend. You clone the backend into your own Butterbase account and own a working product from day one.

How cloning works: butterbase clone <app_id> <name> is a managed-platform operation — it forks the live backend (schema, RLS, functions, auth/storage/realtime/AI configs) into a new app_<id> you own, with its own database, URL, and API key. The butterbase clone path requires an account at butterbase.ai. If you're self-hosting, the backend/ folder in each template contains the schema, RLS policies, and function code you would deploy manually against your own stack.

butterbaseCRM

An open-source CRM for founders. Companies, people, deals (kanban), meetings, notes, and an activity feed — with Gmail and Google Calendar sync, company and person enrichment, email campaigns, multi-platform social publishing (X, LinkedIn, Reddit, TikTok), and a workspace AI agent that can query your CRM and propose actions for you to approve.

Core CRM entities are stored as substrate entities — a cross-app, agent-readable memory layer — so other Butterbase apps you build (like butterSupport) share the same customer identity without any integration code between them.

What's included: 29 Postgres tables · 55+ serverless functions · Workspace AI agent (agent-chat) · Gmail + Calendar ingest via Composio · Enrichment (People Data Labs + Exa) · Social publishing via Composio · Realtime on 7 tables · Google OAuth + email auth · RLS on every table

bash
butterbase clone app_44zjayftl7b3 butterbaseCRM
cd butterbaseCRM
cp frontend/.env.example frontend/.env.local   # fill in your APP_ID
cd frontend && npm install && npm run dev

Full setup: templates/butterbaseCRM/QUICKSTART.md


butterSupport

An AI support agent that diagnoses against your real product data, not just your help-center docs. A per-ticket Durable Object agent loop reads live customer state from substrate (failed payments, auth errors, account tier), drafts a reply, and posts it for founder approval before anything reaches the customer. Ships with an embeddable widget and a founder console (inbox, live reasoning stream, approval flow).

It works in two depths from the same clone:

  • Commodity tier — paste a help-center URL, get a working agent in under 60 seconds. No product integration required.
  • Deep tier — link your main product app so the agent reads live substrate signals and can propose governed actions (resend verification, retry webhook, flag bug, apply credit).

What's included: 20 Postgres tables · 23 serverless functions · 1 Durable Object (SupportTicketDO) · RAG collection over your help center · Embeddable widget (53KB gzipped) · HMAC-signed user identity · Founder approval on every customer-visible reply · Escalation to Slack or Gmail via Composio

bash
butterbase clone app_0ycj4ad7odud my-support
cd my-support

Visit your new subdomain, sign in with magic link, paste your help-center URL. Copy the embed snippet into your product HTML.

Full setup: templates/butterSupport/README.md


Open-source vs. managed

This repo ships the runtime data plane — everything required to self-host a fully featured Butterbase instance. The managed offering at butterbase.ai adds multi-region orchestration, billing, upstream AI router adapters, lease-based quota enforcement, and ops dashboards (those live in a private repo that consumes this one as a submodule).

When you self-host, the AI gateway runs without upstream router adapters, billing uses a no-op provider, and quotas are unlimited. Wire your own implementations via the BillingProvider, QuotaEnforcer, and RouterAdapter interfaces in packages/shared.

Quickstart (self-host)

Requirements: Docker, Node 22+, npm.

1. Clone (with submodules)

The Claude Code plugin containing skills (packages/plugin) is a git submodule (butterbase-skills). A plain clone leaves packages/plugin/ empty and npm install silently skips that workspace.

bash
git clone --recurse-submodules https://github.com/butterbase-ai/butterbase.git
cd butterbase

If you already cloned without submodules:

bash
git submodule update --init --recursive

Optional — keep submodules updated on every pull:

bash
git config --global submodule.recurse true

2. Install dependencies and configure env

bash
npm ci
cp .env.example .env

docker-compose.local.yml sets KV_REDIS_URL_US_EAST_1 for you. Edit .env only if you override defaults (e.g. run control-api on the host — use redis://localhost:6379).

3. Start the stack

First run builds images and can take several minutes.

bash
docker compose -f docker-compose.local.yml up -d

Wait until control-api is healthy:

bash
curl -sf http://localhost:4000/health/ready

4. Run database migrations

Schema is not applied automatically on container start. From the repo root (with the stack running):

bash
export NEON_PLATFORM_PRIMARY_URL=postgresql://butterbase:butterbase_dev@localhost:5433/butterbase_control
export NEON_RUNTIME_PROJECT_ID_US_EAST_1=postgresql://butterbase:butterbase_dev@localhost:5437/butterbase_runtime_us
export BUTTERBASE_REGIONS=us-east-1

npm run migrate:all

5. Seed the local dev user

With AUTH_ENABLED=false, the API uses DEV_OWNER_ID from compose. That user must exist in platform_users (fresh volumes start empty):

bash
export NEON_PLATFORM_PRIMARY_URL=postgresql://butterbase:butterbase_dev@localhost:5433/butterbase_control
npm run seed:dev

6. Smoke test

Auth is disabled in the local compose profile (AUTH_ENABLED=false):

bash
curl -X POST http://localhost:4000/init \
  -H "Content-Type: application/json" \
  -d '{"name": "my-app"}'

curl http://localhost:4000/apps

Local endpoints

ServiceURL / port
Control APIhttp://localhost:4000
MCP (HTTP, via control-api)http://localhost:4000/mcp
Deno runtimehttp://localhost:7133
Docs sitehttp://localhost:4321
Control plane Postgreslocalhost:5433
Data plane Postgreslocalhost:5435
Runtime plane Postgreslocalhost:5437
LocalStack (S3)http://localhost:4566

Full setup (auth, MCP clients, troubleshooting, production notes): SETUP.md.

Architecture

              ┌──────────────────────────────────────────┐
              │    Your app · agent · MCP client · CLI   │
              └──────────────────────┬───────────────────┘
                                     │  REST · WebSocket · MCP
              ┌──────────────────────▼───────────────────┐
              │            control-api (Fastify)         │
              │   apps · auth · schema · auto-api · RLS  │
              │   storage · functions · KV · realtime    │
              │   AI gateway · RAG · DOs · MCP at /mcp   │
              └──┬──────┬───────┬───────┬────────┬───────┘
                 │      │       │       │        │
        ┌────────▼─┐ ┌──▼───┐ ┌─▼──┐ ┌──▼─────┐ ┌▼─────────────┐
        │ Postgres │ │ S3 / │ │Redis│ │ Deno   │ │ Python agent │
        │ 3 planes │ │ R2   │ │ KV  │ │runtime │ │   runtime    │
        └──────────┘ └──────┘ └────┘ └────────┘ └──────────────┘
                                              ┌──────────────────┐
                                              │ Cloudflare:      │
                                              │ build-runner ·   │
                                              │ dispatch-worker  │
                                              └──────────────────┘

Three Postgres planes:

  • control-plane (db/control-plane/) — platform metadata: users, apps, billing, audit.
  • runtime-plane (db/runtime-plane/) — hot-path runtime tables (KV expose rules, realtime channels, sessions).
  • data-plane (db/data-plane/) — per-app user data; each app gets isolated schemas with RLS.

Repo layout

Services (services/)

ServiceLanguageWhat it does
control-apiNode.js / FastifyMain entry point. All public APIs, embeds MCP at /mcp.
mcp-serverNode.jsMCP tool implementations (built into control-api; also ships as butterbase-mcp stdio binary).
deno-runtimeDenoExecutes user serverless functions in isolates.
agent-runtimePython (uv)Long-running agent executor for manage_ai / agent tasks.
build-runnerCloudflare WorkerBuilds frontends and edge-SSR bundles from source.
storage-indexerNode.jsAsync indexer for uploaded objects.
docsAstroPublic documentation site (also served locally at :4321).

Packages (packages/)

PackageDescription
@butterbase/sdkUniversal TypeScript SDK (browser + server).
@butterbase/clibutterbase CLI for scaffolding and backend management.
@butterbase/pluginClaude Code plugin — 30+ guided skills for AI-driven app building. Git submodule of butterbase-skills.
@butterbase/sharedShared types, constants, and pluggable interfaces (BillingProvider, QuotaEnforcer, RouterAdapter).

Other top-level pieces

  • dispatch-worker/ — Cloudflare Worker that routes per-app subdomain traffic.
  • bb-placeholder/ — placeholder origin for unprovisioned subdomains.
  • infra/pgbouncer and traefik configs for self-host.
  • db/ — SQL migrations for the three Postgres planes.
  • Examples/todo-2026-04-02, grocery-list-2026-04-03.
  • templates/ — full production-shaped apps: butterSupport, butterbaseCRM.

What's not in this repo

The OSS / managed boundary is intentional. The following are private to the managed offering:

  • Multi-region orchestration and the cross-region scheduler.
  • Billing logic, lease-based quota math, and Stripe wire-up beyond the no-op provider.
  • Upstream AI router adapters (OpenAI / Anthropic / Bedrock provider integrations beyond the gateway interface).
  • Customer / admin dashboards, hackathon-host dashboards, and ops tooling.

If you need these for self-host, implement against the interfaces in packages/shared — see CONTRIBUTING.md for the scope rules.

Documentation

Project status

Latest release: v0.2.0 (2026-05-25) — adds the KV store across SDK / REST / CLI / MCP. The data plane is production-tested by the managed offering; the OSS distribution is young — please file self-host issues and we'll tighten docs and defaults from feedback. See CHANGELOG.md for the full history.

Community & support

Contributing

See CONTRIBUTING.md. The boundary between OSS and the managed offering is intentional — please read the scope section before opening a PR that touches billing, quota math, or upstream router adapters.

Security

See SECURITY.md. Report vulnerabilities to security@butterbase.ai.

License

Apache-2.0. Copyright 2026 NetGPT Inc.

Contributors

Use Butterbase MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once Butterbase is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add Butterbase as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the Butterbase MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "butterbase": {
      "command": "npx",
      "args": [
        "-y",
        "<mcp-server-package>"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the Butterbase MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the Butterbase MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use Butterbase to help me with this task?
Butterbase
Sure. I read it.
Here is what I found using Butterbase.

Frequently asked questions

What is the Butterbase MCP server used for?

Butterbase is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use Butterbase MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use Butterbase with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use Butterbase MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With Butterbase connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect Butterbase MCP to TypingMind?

Butterbase runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does Butterbase MCP provide in TypingMind?

Butterbase exposes MCP capabilities that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use Butterbase MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If Butterbase requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇