Launch SaaS without rebuilding the backend.
AtomBase is the SaaS-native backend. Give every tenant their own database with organizations, auth, storage, and AI. Powered by distributed SQLite.
What's included
Data API
Query and mutate customer databases over HTTP
Platform API
Onboard customers, manage schemas, run migrations
TypeScript SDK
Type-safe client for Node.js and the browser
CLI
Initialize projects, deploy schemas, manage customers
AI
Coming soon
Authentication
Coming soon
Storage
Coming soon
Realtime
Coming soon
AI with tenant isolation built in.
Every model call is scoped to a tenant. Context includes knowledge bases, database rows, and metadata—all isolated per customer.
No prompt injection across tenants. No data leakage. Just secure, contextual AI for your customers.
const model = ai.model("support-agent");
await model.generate({
tenantId,
input,
context: {
include: [
// Tenant-scoped knowledge base
ai.context.kb("help-center"),
// Query specific rows
ai.context.table("customers")
.where({ id: customerId }),
// Inject metadata
ai.context.vars({ plan: "pro" })
]
}
});Enterprise-grade authentication
SSO, RBAC, and organization management. Coming soon.
Templates keep everything in sync.
Define your schema once. Every customer database stays in sync automatically.
Update the template, push, and the migration engine updates all customer databases—whether you have 10 or 10,000.
SDK
Onboard customers and query data
import { createClient } from "@atombase/sdk";
const db = createClient({
url: "http://localhost:8080",
apiKey: "your-api-key",
});
// Onboard a new customer
await db.tenants.create({
name: "acme-corp",
template: "enterprise"
});
// Query their data
const acme = db.tenant("acme-corp");
await acme.from("users").select();Schema
Define once, use everywhere
import { defineSchema, defineTable, c }
from "@atombase/schema";
export default defineSchema("enterprise", {
users: defineTable({
id: c.integer().primaryKey(),
email: c.text().notNull(),
role: c.text(),
}),
workspaces: defineTable({
id: c.integer().primaryKey(),
name: c.text(),
ownerId: c.integer(),
}),
});CLI
Manage from the terminal
$ npx atombase init
✓ Created atombase.config.ts
$ npx atombase templates push
✓ Pushed enterprise template
$ npx atombase tenants create \
acme-corp --template enterprise
✓ Created tenant: acme-corp