Schemas in the dashboard.
Register a schema from the dashboard, then browse the schemas catalog grouped by namespace, with ad-hoc chip-style tags you can attach to any row. You'll need a running instance — schemas are scoped per-instance.
- 1. Open the sidebar and click Schema (or jump to /app/schema).
- 2. Pick your instance from the Instance dropdown — schemas, tags, and collapsed-group state are all scoped to the active instance.
- 3. Scroll to Register a schema, paste your TOML manifest into the editor.
- 4. Click Register →. The new row appears under its namespace group in Registered.
- 5. Click any row's view link to see the parsed manifest plus per-schema config cards (vector mode, FTS analyzer, relations, migration history).
Categorisation
Schemas auto-group by the namespace prefix of their id. shop.customers, shop.orders, and shop.products all collect under shop. Click the namespace header to collapse or expand a group; collapsed state is persisted per-instance in localStorage.
Click + tag on any schema row to attach an ad-hoc label (prod, draft, archive, anything you like). Tags surface in the chip bar at the top — click a chip to AND-filter the list. The search box matches against schema id and tags simultaneously.
Tag data is stored under oc:schema:tags:<instance-id> in the browser; switching instances or organisations never bleeds tag data across tenants.
TOML manifest sample
Here's a minimal manifest for a shop.customers table with a unique-email index. Paste this into the registration editor as-is.
namespace = "shop"
table = "customers"
primary_key = ["id"]
[[columns]]
name = "id"
ty = "str"
required = true
[[columns]]
name = "email"
ty = "str"
required = true
[[columns]]
name = "region"
ty = "str"
[[indexes]]
name = "by_email"
columns = ["email"]
unique = true Common errors
TOML parse error— string values need double quotes; column types must be one ofi64 · u64 · f64 · str · bytes · bool.duplicate manifest— the schema id already exists. Drop it (DELETE /v1/schemas/<id>) or pick a new namespace.permission denied— bearer is for a different instance scope. Re-paste the bearer for the active instance.primary_key column missing— every column listed inprimary_keymust also appear in[[columns]]withrequired = true.addon required— schemas with vector or FTS extractions need the matching add-on; enable from /app/billing/addons.