The open-source platform for accelerated business software development
Define data objects, relationships, and logic at runtime — Ion Drive turns them into live REST, GraphQL, and MCP APIs. Self-hosted, in your repo, one command.
runtime-dynamic data objects · automatic REST/GraphQL/MCP · built for LLM agents
Apache-2.0 · TypeScript · PostgreSQL 17 · Node 22+
Runtime schema
Define an object. Every API is already live.
Create tables through the admin console or one API call — no migrations, no deploys, no downtime. The moment it returns, the object is live on every surface:
- REST —
GET/POST/PATCH/DELETE /api/v1/data/contacts - GraphQL —
contacts,create_contacts, … - MCP — tools for any connected LLM agent
- OpenAPI — reflected in
/api/v1/openapi.json
Data objects explains the model.
curl -X POST http://localhost:3000/api/v1/schema/objects \
-H 'content-type: application/json' \
-d '{
"name": "contacts",
"displayName": "Contacts",
"fields": [
{ "name": "full_name", "columnType": "text", "isRequired": true },
{ "name": "email", "columnType": "email" },
{ "name": "status", "columnType": "enum" }
]
}' Querying
One query language on every list endpoint
Full-text search, per-property operators, multi-sort, and two pagination
styles — readable in a URL and identical across REST, GraphQL, and MCP. The
zero-dependency client SDK
builds these queries for you, Supabase-style.
The querying guide has the full operator table.
GET /api/v1/data/contacts?search=acme
GET /api/v1/data/contacts?status[neq]=archived&age[gte]=21
GET /api/v1/data/contacts?sort=-created_at&page=1
{
"data": [ /* records */ ],
"pagination": { "page": 1, "pageSize": 25, "totalCount": 42, "hasNextPage": true }
} Building blocks
Blocks are yours. The engine is a dependency.
Pulling in a building block applies its schema and drops its business
logic into /blocks/<name> in your repo — like shadcn/ui, but for
backend features. Core and the infrastructure plugins stay npm packages you upgrade;
future block updates arrive as diffs you review, never overwrites.
Every artifact in the registry is sha256-digest-verified before it touches your project. Browse the registry or read how blocks work.
npx ion-drive list # browse the registry catalog
npx ion-drive add crm # schema-only: objects + APIs light up instantly
npx ion-drive add invoicing # vendored logic lands in blocks/invoicing/
# edit blocks/invoicing/stripe.ts — it's your code, hot-reloaded Agent-first
MCP is a first-class surface, not an add-on
The built-in MCP server at /api/v1/mcp gives any MCP-compatible agent
schema introspection and CRUD with zero integration code — the same query semantics
your application uses, because the same object definitions drive all three surfaces.
- Schema tools —
list_objects,create_object,add_field, … - Data tools —
query_data,get_record,create_record, … - Block actions reflect as tools automatically
// POST /api/v1/mcp — tool: query_data
{
"object_name": "contacts",
"search": "acme",
"filters": [{ "field": "status", "operator": "neq", "value": "archived" }],
"sort": [{ "field": "created_at", "direction": "desc" }],
"expand": ["company"]
} Everything included
Batteries included, ownership retained
Runtime data objects
Create, modify, and delete tables through the admin console or API. No migrations, no deploys, no downtime.
Automatic API surface
Every data object instantly gets REST endpoints, GraphQL types, and MCP tools. Download an always-current OpenAPI spec.
Rich querying
Full-text search, per-property operators, sorting, and pagination on every list endpoint — with a typed client SDK that builds the queries for you.
LLM/agent native
Built-in MCP server lets AI agents introspect your schema and CRUD data with zero integration code.
Building blocks
Pull in pre-built modules (CRM, invoicing, communications, audit) like shadcn/ui — you own the code, customize freely.
Multi-tenant by design
Designed for per-tenant database isolation. Tenant management is on the roadmap.
Built-in observability
OpenTelemetry instrumentation with an optional Grafana stack. Pre-built dashboards included.
Pluggable auth
Better Auth (self-hosted) by default; swap the provider via the plugin system.
Admin console
Visual schema designer, Airtable-like data grid, user management, secrets vault, monitoring dashboards.
Quick start
Zero to live APIs in five minutes
Node 22+ and Docker are the only prerequisites. What you own is deliberately small —
a server.ts composition root and a /blocks directory; the
platform arrives as npm dependencies.
The first user to sign up in the admin console becomes the admin. The full guide takes it from here.
npx @ion-drive/cli init my-app
cd my-app
docker compose up -d # PostgreSQL
npm install
npm run dev # the whole backend + admin console, one command Ecosystem