Your backend. Already there.

Every Botflow project ships with Convex — a typed database, serverless functions, real-time sync, and a built-in admin dashboard. No accounts to create. No glue code to write.

Start building

Defined in TypeScript

Your schema, queries, and mutations are just TypeScript files. The AI reads them like any other code — no dashboards to crawl, no REST to guess at.

Real-time by default

Data changes stream to your UI the moment they happen. No polling, no cache invalidation, no websocket glue you have to wire up yourself.

Admin UI, built in

The real Convex dashboard lives inside the Database tab. Browse tables, run functions, inspect logs — without leaving the workspace.

Synced 2m ago
The Database tab

The admin UI, right here

Open the Database tab and you're looking at the real Convex dashboard, authenticated against your project's deployment — embedded seamlessly into your workspace.

  • Browse tables and inspect every document
  • Run queries and mutations with live arguments
  • Watch function logs stream in real time
  • Edit schema indexes without leaving the IDE
Built for AI-first development

A backend the AI actually understands

Most backend services were designed for humans. Convex happens to be perfect for AI.

The schema is a file. Queries are functions. Mutations are functions. Validators are imports. There's no proprietary dashboard for the agent to crawl, no SQL migration format to translate, no REST contract to infer.

The agent reads the same convex/ folder you do — and writes the same patterns it uses everywhere else in your codebase.

convex/schema.ts
1import { defineSchema, defineTable } from "convex/server";
2import { v } from "convex/values";
3 
4export default defineSchema({
5 tasks: defineTable({
6 text: v.string(),
7 done: v.boolean(),
8 userId: v.id("users"),
9 }).index("by_user", ["userId"]),
10});
convex/tasks.ts
1export const add = mutation({
2 args: { text: v.string() },
3 handler: async (ctx, { text }) => {
4 const user = await getAuthedUser(ctx);
5 return await ctx.db.insert("tasks", {
6 text, done: false, userId: user._id,
7 });
8 },
9});
Less to pay for, less to debug

One platform, not five

A typical modern app stitches together a database provider, an auth service, a file store, a job runner, and a pile of glue code. Convex bundles the first four — so you and the agent have fewer services to wire up, fewer bills to reconcile, and fewer integrations to debug.

That's not just a developer-experience win. It's a measurably cheaper stack.

Without Convex

  • Database service
  • Auth provider
  • File/object storage
  • Job queue + scheduler
  • HTTP/webhook gateway
  • The glue code that stitches them together

With Botflow + Convex

One TypeScript project.

Deployed by the agent, inspected from the Database tab.

Power-user option

Already a Convex user? Bring your own.

Connect your Convex account via OAuth and Botflow will deploy to your team's deployment instead of the platform's. You keep full billing control, observability, and team access. Botflow just drives.

Your credentials

OAuth links your Convex account — keys never leave their vault.

Your billing

Usage stays on your Convex invoice, not ours.

Your team

Invite collaborators with Convex team permissions you already use.

Build with a real backend

Start a new project and your Convex deployment is waiting.