Skip to main content
FrogBot is database agnostic. You bring your own database and own your data. FrogBot interacts with the database through a database adapter — a thin layer that translates platform operations into your database’s native data structures. The database adapter is configured through the db property in your FrogBot Config:
The database adapter is an external dependency. Install it in your project separately from frogbot.

Supported adapters

FrogBot officially supports the following database adapters. Each is a thin wrapper around the matching FrogBot adapter: Self-hosted Docker installs are expected to start with MongoDB.

Collection search status

You can store supplied vectors on ordinary records using a vector field without a search index. Native ranked search is separate: the collection search API runs only on adapters that implement it. Cloudflare D1 has no native vector search, so an index with vector fails setup there with an engine-gap error. On an adapter without search, any configured collection search index, including lexical-only, fails setup with a not-implemented error identifying the collection, index, and mode. On a MongoDB deployment without a search process, it fails with missing-prerequisite instead. With no search index configured, setup does not emit a search capability report.

Selecting a database

There are two main categories of databases to choose from. FrogBot has no opinion on which one you choose.

Non-relational (MongoDB)

Each FrogBot record is stored as a single document. The shape of your data in the database closely mirrors the shape of your collections, with minimal mapping overhead. Prefer MongoDB if:
  • You want simple schema evolution
  • You do not want to manage DDL changes between staging and production
  • Most of your data leverages arrays, blocks, or hasMany relationships

Relational (Postgres)

Postgres is a strong fit when you want strict, enforced schemas and relationships at the database level. Prefer Postgres if:
  • You are comfortable with Migrations
  • You require database-level data consistency
  • You have many relationships across collections that should be enforced

Default storage

Docker-based installs are expected to start with MongoDB:
Postgres support is configured the same way through its adapter:

Core collections

FrogBot always registers a fixed set of core collections, regardless of database choice. These collections are the framework:
Plugins can add collections by extending _collections during config resolution. Enterprise features such as Billing, Subscriptions, Plans, Invoices, and ApiUsageLogs are contributed by the enterprise plugin and are not part of core.

Boot-loaded content

Several config values point at default content directories that are loaded into the database on boot:
  • skills/*/SKILL.md is parsed and upserted into the Skills collection
  • agents/*/AGENT.md is parsed and upserted into Agents
  • mcps/*.json is upserted into MCPs
  • flows/*.json is upserted into Flows
After boot, the filesystem is never read again. All edits happen in the UI and are persisted to the database.