Revisium
Your schema. Your data. Full control.
Build your own Headless CMS, Dictionary Service, Configuration Store, AI Agent Memory, Knowledge Base — or anything that needs structured data with integrity. Versioning when you need it.
Key Features
One Platform, Many Interfaces
Work with Revisium however fits your workflow — all interfaces access the same data.
- Admin UI — visual schema design, data editing, change review — no code needed
- GraphQL — system API for management + auto-generated typed queries from your schema
- REST — system API + auto-generated OpenAPI endpoints
- MCP — AI agents create schemas, manage data, and commit via Model Context Protocol
- CLI — export schemas and data, generate migrations, seed instances, apply across environments in CI/CD
Admin UI
Visual schema editor, table views with filters/sorts, row editor, diff viewer, change review, branch management, and more.

Data Modeling
Model any data structure based on JSON Schema — strings, numbers, booleans, nested objects, arrays of objects. Schema is enforced on every write.
- Data
- Schema
{
"title": "iPhone 16 Pro",
"price": 999,
"inStock": true,
"specs": {
"weight": 199,
"tags": ["5G", "USB-C", "ProMotion"]
},
"variants": [
{ "color": "Desert Titanium", "storage": 256 },
{ "color": "Black Titanium", "storage": 512 }
]
}
{
"type": "object",
"properties": {
"title": { "type": "string", "default": "" },
"price": { "type": "number", "default": 0 },
"inStock": { "type": "boolean", "default": false },
"specs": {
"type": "object",
"properties": {
"weight": { "type": "number", "default": 0 },
"tags": { "type": "array", "items": { "type": "string", "default": "" } }
},
"required": ["weight", "tags"]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"color": { "type": "string", "default": "" },
"storage": { "type": "number", "default": 0 }
},
"required": ["color", "storage"]
}
}
},
"required": ["title", "price", "inStock", "specs", "variants"]
}
Foreign Keys
Referential integrity between tables — validation on write, cascade rename, delete protection. FK fields are auto-resolved in generated APIs.
- Data
- Schema
{
"title": "iPhone 16 Pro",
"category": "electronics",
"relatedProducts": ["macbook-m4", "airpods-pro"]
}
category → row in categories table, relatedProducts → array of rows in products table.
{
"type": "object",
"properties": {
"title": { "type": "string", "default": "" },
"category": {
"type": "string",
"default": "",
"foreignKey": "categories"
},
"relatedProducts": {
"type": "array",
"items": { "type": "string", "default": "", "foreignKey": "products" }
}
},
"required": ["title", "category", "relatedProducts"]
}
Computed Fields
Read-only fields with x-formula expressions — 40+ built-in functions, aggregations over arrays.
- Data
- Schema
{
"title": "iPhone 16 Pro",
"price": 999,
"quantity": 50,
"total": 49950,
"inStock": true,
"label": "iPhone 16 Pro — $999"
}
{
"type": "object",
"properties": {
"title": { "type": "string", "default": "" },
"price": { "type": "number", "default": 0 },
"quantity": { "type": "number", "default": 0 },
"total": {
"type": "number", "default": 0, "readOnly": true,
"x-formula": { "version": 1, "expression": "price * quantity" }
},
"inStock": {
"type": "boolean", "default": false, "readOnly": true,
"x-formula": { "version": 1, "expression": "quantity > 0" }
},
"label": {
"type": "string", "default": "", "readOnly": true,
"x-formula": { "version": 1, "expression": "title + \" — $\" + price" }
}
},
"required": ["title", "price", "quantity", "total", "inStock", "label"],
"additionalProperties": false
}


total, inStock, label are computed automatically from title, price, quantity.
Files
S3 file attachments at any schema level — images, documents, galleries. Use embedded file fields directly in your tables, or create a dedicated assets table for reuse. Unopinionated — structure it however fits your project.
- Data
- Schema
{
"title": "iPhone 16 Pro",
"cover": {
"status": "uploaded",
"fileId": "abc123",
"url": "https://s3.../cover.jpg",
"fileName": "cover.jpg",
"hash": "sha256...",
"extension": "jpg",
"mimeType": "image/jpeg",
"size": 340000,
"width": 1200,
"height": 800
},
"gallery": [
{
"status": "uploaded",
"fileId": "def456",
"url": "https://s3.../front.jpg",
"fileName": "front.jpg",
"hash": "sha256...",
"extension": "jpg",
"mimeType": "image/jpeg",
"size": 280000,
"width": 1200,
"height": 800
},
{
"status": "uploaded",
"fileId": "ghi789",
"url": "https://s3.../back.jpg",
"fileName": "back.jpg",
"hash": "sha256...",
"extension": "jpg",
"mimeType": "image/jpeg",
"size": 310000,
"width": 1200,
"height": 800
}
]
}
{
"type": "object",
"properties": {
"title": { "type": "string", "default": "" },
"cover": { "$ref": "urn:jsonschema:io:revisium:file-schema:1.0.0" },
"gallery": {
"type": "array",
"items": { "$ref": "urn:jsonschema:io:revisium:file-schema:1.0.0" }
}
},
"required": ["title", "cover", "gallery"]
}
Versioning & Branches
Not row-level versioning. Not table-level versioning. Project-level versioning — one commit captures a full snapshot of all tables, schemas, and data.
Revision #3 (immutable snapshot)
├── Table: products — schema + 150 rows
├── Table: categories — schema + 12 rows
├── Table: settings — schema + 1 row
└── Table: users — schema + 45 rows
Like git commit — but for your entire database. Branches, drafts, full history, diff between any two revisions, rollback to any point.
Versioning is optional — you can work in draft indefinitely without ever committing, just like any other database.


Schema Evolution
Change types, add/remove/move fields — existing data transforms automatically. No manual data migration needed.
- Add field — existing rows get the default value
- Remove field — data cleaned from all rows
- Change type — automatic conversion (string ↔ number ↔ boolean)
- Move field — field relocated, data preserved

Migrations CLI
Auto-generated migrations, portable across environments via CI/CD.
# Export migrations from source instance
npx revisium migrate save --file ./migrations.json
# Apply to target instance
npx revisium migrate apply --file ./migrations.json
Data Portability
Download your schemas and data at any time. Upload to seed a new instance or restore from backup. You own your data — export it, version it in Git, move it between environments.
# Download all schemas
npx revisium schema save --folder ./schemas
# Download all data
npx revisium data save --folder ./data
# Upload to another instance
npx revisium data apply --folder ./data
APIs
Two layers: system API for management + auto-generated typed APIs from your schema.
- Generated GraphQL
- Generated REST
- System GraphQL
- System REST
- MCP
Auto-generated typed schema from your tables. Filtering, sorting, pagination, FK resolution.
query {
products(data: {
where: { data: { path: ["category"], equals: "electronics" } }
orderBy: [{ data: { path: "price", direction: "desc", type: "float" } }]
first: 10
}) {
edges {
node { data { title, price, category { name } } }
}
}
}
Response:
{
"data": {
"products": {
"edges": [
{
"node": {
"data": {
"title": "iPhone 16 Pro",
"price": 999,
"category": { "name": "Electronics" }
}
}
}
]
}
}
}
Generated schema (excerpt):
type ProjectProduct {
title: String!
price: Float!
category: ProjectCategory # FK auto-resolved
}
type ProjectProductNode {
id: String!
createdAt: DateTime!
updatedAt: DateTime!
data: ProjectProduct!
}
type Query {
product(id: String!): ProjectProductNode
products(data: ProjectGetProductsInput): ProjectProductConnection
}
Auto-generated OpenAPI endpoints for each table.
GET /endpoint/rest/<org>/<project>/<branch>/head/tables/products/row/iphone-16
Response:
{
"id": "iphone-16",
"versionId": "R0OIlByTNIo...",
"createdId": "UowRo8yO_AD...",
"createdAt": "2026-03-15T10:30:00Z",
"updatedAt": "2026-03-15T14:20:00Z",
"publishedAt": "2026-03-15T10:30:00Z",
"readonly": true,
"data": {
"title": "iPhone 16 Pro",
"price": 999,
"category": "electronics"
}
}
Generated OpenAPI spec (excerpt):
paths:
/tables/products/row/{rowId}:
get:
operationId: get_products
summary: Get products by ID
/tables/products/rows:
post:
operationId: query_products
summary: Query products rows
components:
schemas:
Products:
type: object
properties:
title: { type: string }
price: { type: number }
category: { type: string }
Full platform management — projects, branches, tables, rows, revisions.
# POST /graphql
mutation {
createTable(data: {
revisionId: "<draftRevisionId>"
tableId: "products"
schema: { ... }
}) { id }
}
Response:
{
"data": {
"createTable": {
"id": "products"
}
}
}
Same operations via REST endpoints.
POST /api/revision/<draftRevisionId>/tables/products/create-row
Content-Type: application/json
{ "rowId": "iphone-16", "data": { "title": "iPhone 16 Pro", "price": 999 } }
Response:
{
"id": "iphone-16",
"versionId": "SN37liH-kBe...",
"createdAt": "2026-03-15T10:30:00Z",
"updatedAt": "2026-03-15T10:30:00Z",
"readonly": false,
"data": {
"title": "iPhone 16 Pro",
"price": 999
}
}
AI agents interact via Model Context Protocol — full CRUD, schema design, commits.
claude mcp add --transport http revisium http://localhost:9222/mcp
You: Create a "products" table with title, price, and category fields
Claude: [Uses createTable tool] Created table "products" with 3 fields.
You: Add row "iphone-16" with title "iPhone 16 Pro" and price 999
Claude: [Uses createRow tool] Created row "iphone-16" in products.
Platform Hierarchy
Separate teams, projects, and environments. Each with its own branches, version history, and API endpoints.
Self-Hosted
Apache 2.0, your infrastructure, no vendor lock-in. Or use Revisium Cloud.
- Standalone —
npx @revisium/standalone@latest(embedded PostgreSQL, zero config) - Docker Compose — full stack with PostgreSQL, recommended for production
- Kubernetes — Helm chart, horizontal scaling
Revisium in Your Stack
- Frontend, Backend, Mobile — consume data via auto-generated REST and GraphQL APIs
- AI Agents — interact via MCP protocol (create schemas, manage data, commit)
- Admin UI — ready-made UI for schema design, data management, and change review
- CI/CD — export schemas to Git, apply migrations across environments with revisium-cli
Next Steps
- Quick Start — Get Revisium running in under 2 minutes
- Core Concepts — Data model, schemas, versioning
- Admin UI — Visual schema design and data management
- APIs — System API, generated APIs, MCP
- Use Cases — Headless CMS, Dictionary, Config Store, AI Memory