●  New: build your backend and app together with AI. Point Claude or Cursor at AppAmbit over MCP.

On mobile?

Email yourself the setup link so you can finish when you're at your computer.

App Database

The database for your app. Query it in one line.

Real SQL, and nothing to run. Create a table, fire a query, and get your rows back in a single call from iOS, Android, Flutter, React Native or .NET. Fully managed and isolated per team, browsable in your dashboard, and ready for your AI Agent over MCP.

Read the docs

Pairs with Cloud Code and push notifications. No infrastructure to maintain.

products · app_db
Active
SELECT * FROM products ORDER BY price DESC run
idINT nameTEXT priceREAL activeINT
4 Halo Ring 129 0
7 Nimbus Speaker 79 1
18 Pulse Band 59 1
12 Aurora Lamp 39 1
23 Terra Mug 15 1
5 rows · 24 ms SELECT · read-only

Real rows from your database, queried in one call.

SQLite

Standard SQL, no new query language.

Managed

No servers to provision or patch.

Isolated

Each team's data walled off on its own.

One bill

Usage counts toward your AppAmbit bill.

One SQL API

Work with your data, your way.

Reach your database through AppAmbitDb: raw SQL when you want full control, a fluent builder when you don't. No connection strings, no drivers, no schema lock-in.

Raw SQL, safely
AppAmbitDb.execute()

Run any statement with ? placeholders. Values are bound for you, so user input never becomes part of the SQL.

Fluent query builder
AppAmbitDb.from()

Build reads and writes without writing SQL: where, whereIn, orderBy, limit, then get, first or count.

CRUD with guardrails
.insert · .update · .delete

Update and delete require a where(), so a missing filter can never wipe a whole table by accident.

Batched and atomic
AppAmbitDb.batch()

Send many statements in one round trip, and wrap them in a transaction so they all land or none do.

Typed rows
From<T>() · typed

Map result rows straight onto your own model types, or read them as plain maps. Your choice per query.

API, Cloud Code, MCP
/api/db · ctx.appambit.db

Reach the same database over the REST API, from a Cloud Code function, or with your AI Agent over MCP.

Cloud Code →
Your AI Agent, on your data

Describe the data. It builds the schema.

Create tables and run SQL yourself in your AppAmbit dashboard, or ask your AI Agent to do it over MCP. It creates the table, seeds rows, and hands you a live database, ready to query from your app.

Prefer to click? Do the same from the AppAmbit dashboard: create tables, run SQL in the editor, and browse every row.

app database over MCP

you › Create a products table and seed a few rows.

→ appambit.database.execute(sql: "CREATE TABLE products …")

products · 3 rows seeded
idnameprice
1 Aurora Lamp 39
2 Nimbus Speaker 79
3 Terra Mug 15

Table products created and seeded. Live at /api/db/query.

Read the docs
What you can build

Real features, a table each.

A table and a few queries cover most of what an app needs to store. Here are clear examples, each reading input to output.

write → read

User profiles

Save each user's profile and settings, then read them straight back on the next launch.

query → list

In-app catalog

Store products or content and query them with filters, sorting and paging, in one call.

batch → commit

Offline-first sync

Queue writes while offline, then flush them in a single atomic batch when the app is back online.

order → limit

Leaderboards

Rank scores with ORDER BY and LIMIT, read fresh from the database every time.

read → apply

Settings and flags

Keep app settings and feature switches in a table your app reads on demand.

insert → query

Activity feed

Append events as they happen and query a per-user feed, sorted and paged, in one query.

From link to live

Create it once. Query it everywhere.

A database goes from created to queryable on its own. Once it is active, reach it from every app on your team, with no servers to run and no connection strings to manage.

STEP 01

Create a database

Spin up a managed database for your app from the dashboard, in a click.

STEP 02

We provision it

AppAmbit creates and configures it for you. No connection strings to wire up.

STEP 03

It goes active

Once active it accepts queries. Share one database across apps on the same team.

STEP 04

Query from your app

Read and write from the SDK, the REST API, or a Cloud Code function, all authenticated.

Three ways to reach it

SDK AppAmbitDb.execute()

Query from your app in one call, on every platform.

REST API POST /api/db/query

Call the HTTP API directly with your consumer token.

Cloud Code ctx.appambit.db()

Reach the same database from a server function.

In your dashboard

Your data, at a glance.

Browse every table, run SQL in the built-in editor, and watch usage as it happens. Link one database, or share it across your team's apps.

Browse tables and run SQL in the editor
Rows read and written, metered daily
One database per app, shareable across your team
app_db · Tables
Active
Engine SQLite Read today 12.4k Written 1.8k Isolation Per team
Table Rows
products 1,204 Ready
users 356 Ready
orders 89 Ready
events 5,320 Ready

Browse tables, run SQL, and watch usage, all in one place.

app_db · Export and import

app_db.sql

4 tables · 6,969 rows

Export

Drop a file to import

Into a new database or this one

Import
products, users, orders, events 6,969 rows in
Export and import

Take it out. Bring it in. Never locked in.

Export a database whenever you want, and import data to seed a new one or move it between apps.

Export the whole database, any time
Import to seed or restore a database
Move data between apps and environments
Safe by default

Your data, walled off and bound tight.

Every query is authenticated, parameterized, and scoped to your app. No standing credentials, no way into another team's data, and risky statements blocked before they run.

App-scoped by default

Every query runs with a consumer token scoped to your app. No connection strings or credentials live in your code.

Parameterized and allowlisted

The ? placeholders bind user input safely, and a server-side allowlist blocks ATTACH, PRAGMA and other risky statements.

Isolated per team

Each team's database is walled off. One app links one database, shared only across apps you own.

Why teams use it

A real database, without the backend team.

Fully managed

No servers to provision, patch, or scale. We run the database, you just write queries.

SQLite-compatible

Standard SQL you already know. No proprietary query language, no new dialect to learn.

SQL or query builder

Write raw, parameterized SQL, or build reads and writes with a fluent, type-safe API.

Batched transactions

Group writes into one round trip and commit them atomically, so partial writes never happen.

Typed results

Map rows onto your own model types, or read them as plain maps. Filters, sorting and paging built in.

Query with your AI Agent

Run SQL from the dashboard editor, from a Cloud Code function, or let your AI Agent do it over MCP.

MCP Agent →
Call it from your app

One query, every platform.

Once your database is active, query it by table with AppAmbitDb, on iOS, Android, Flutter, React Native, .NET MAUI and Avalonia. The SDK adds the base URL, the auth and the JSON: you build a query and read the rows back. Prefer SQL? AppAmbitDb.execute() runs any parameterized statement. Full reference is in the docs.

// read active products from your databaseAppAmbitDb.from("products")  .where("active", value: true)  .orderBy("name")  .get { rows, error in    guard let rows, error == nil else { return }    // rows: [[String: Any]]  }
// read active products from your databaseAppAmbitDb.from("products")  .where("active", true)  .orderBy("name")  .get()  .then { rows ->    // rows: List<Map<String, Any>>  }  .onError { error -> }
// read active products from your databasefinal rows = await AppAmbitDb.from("products")  .where("active", true)  .orderBy("name")  .get();
import { Database } from "appambit"; // read active products from your databaseconst rows = await Database.from("products")  .where("active", true)  .orderBy("name")  .get();
// read active products from your databasevar rows = await AppAmbitDb.From("products")  .Where("active", true)  .OrderBy("name")  .Get();
// read active products from your databasevar rows = await AppAmbitDb.From("products")  .Where("active", true)  .OrderBy("name")  .Get();
Request
POST /api/db/query
{ sql: "SELECT * FROM products WHERE active = ?", params: [1] }
Response · 200
{ results: [{
  columns: ["id", "name", "price"],
  rows: [[12, "Aurora Lamp", 39]],
  rows_read: 5, rows_written: 0
}] }
Returned from your database
Questions

App Database, answered.

What kind of database is it?
A fully managed, SQLite-compatible cloud database, one per app. A single database can be shared across apps that belong to the same team.
How do I query it?
From the SDK with AppAmbitDb (a fluent builder or raw SQL), the REST API at /api/db, a Cloud Code function via ctx.appambit.db, the dashboard SQL editor, or your AI Agent over MCP.
Is my SQL safe from injection?
Yes. Use ? placeholders and your values are bound for you, never concatenated into the statement. A server-side allowlist and blocklist reject risky statements before they reach the database.
Can I use raw SQL, or only a builder?
Both. AppAmbitDb.execute() runs any parameterized statement, and the query builder covers common reads and writes without writing SQL at all.
Do I manage servers or scaling?
No. The database is fully managed and scales with your app. There is nothing to provision, patch, or keep running.
Can I export or import my data?
Yes. Export a database whenever you want, and import data to seed a new database, restore one, or move it between apps and environments. Your data is never locked in.
How is it billed?
Usage-based: rows read and written are metered daily and count toward the same AppAmbit bill, with no separate infrastructure to pay for.
Ready when you are

Give your app a database today. No servers required.

Start free and query your first table in minutes. Create it in your dashboard, or let your AI Agent do it over MCP. No credit card required.

Already have an account? Log in

Give your app a SQL database.