The idea
Most software is an app with a database behind it. oozmi is the database — the app is just what reads it.
Your tables, fields, forms, business rules and permissions aren’t compiled into the product. They live as rows in one PostgreSQL database that a single program reads on every request. You change how the business works by changing the rows — not by waiting on a new build.
- table
ordersa table - field
orders.delivery_notea field - form
order : newa form - acl
finance → reada rule - data
ord-7741an order - audit
price €12.90→€10.90a change
Schema and data are the same kind of thing — rows. One program reads them on every request and becomes your CRM, your storefront, your ledger.
One pipeline No fast path
Every change takes the same path — and the AI gets no shortcut.
A person saving a record, a business rule firing, an agent applying a proposal: all three enter one staged pipeline, inside one database transaction. If any stage fails, the whole change rolls back — the audit record included. Nothing on disk ever says something happened when it didn’t.
- Validate
- Security
- Before
- Compute
- Data-policy
- Write
- After
- Async
tableaudit_events actoroozmi AI · agent_id: ai-88 changeorder.price · €12.90 → €10.90 rolled backno · committed 14:11:04
The agent is just another client of this pipeline. Same stages, same transaction, same
audit row — only with agent_id filled in. There is no admin
API that skips security, and no back door for the AI.
In the box
The pieces other stacks sell as add-ons — already in the box.
These aren’t line items on a roadmap. They’re how the platform is built, so every module inherits them for free — the same primitives most teams spend a year bolting on.
-
audit_events Change records by default
Every write commits an audit row in the same transaction — not a sidecar log.
-
core_acl Field-level permissions
Default-deny, checked by table and field before the database is touched.
-
core_field Operator-editable schema
Add a field by inserting a row; the next request already sees it.
-
git · mod_count Versioned, diffable apps
Export what you build as records, diff them, and ship through your git.
-
sandboxed JS Safe business rules
Before, after and compute logic runs in isolated VMs — never the host.
-
OIDC · SAML Identity built in
Single sign-on, MFA via TOTP and WebAuthn, role inheritance, hashed keys.
-
OpenTelemetry Observability you own
Traces across every stage and metrics your Grafana already reads.
-
metadata forms Forms follow the schema
A form is just a view of the table and the ACLs that apply to it.
Compliance
A subject-access request is a query — not a fire drill.
GDPR is mostly a data-architecture problem wearing a legal costume. When the customer is one row that every module writes to, the legal answers fall out of questions the database can already answer.
Erasure runs through Approvals. The DPO signs off, the platform anonymises or deletes by the retention rules declared on each field, and the erasure itself writes an audit row under the same account. Consent is a versioned record on the customer — withdrawn on the same path it was granted.
Northgate Bakery
requested 14 Apr · account #88- Orders 38
- Invoices 41
- Tickets 7
- Consents 3
- Messages 112
- Audit trail all
- Orders today 128 ↑ 12%
- Overdue invoices €8.2k ↓ 4%
Live indicators
Your numbers move the moment your business does.
Every dashboard claims to be live. The real test is whether a number is already right the instant an order is placed — instead of catching up a few minutes later from somewhere else.
- Every figure reads the same orders, customers and invoices the rest of the business runs on — so the dashboard and the books can never quietly disagree.
- The history sits right next to the live numbers, so you get trends without a separate warehouse or a nightly export to wait on.
- Set a target and an alert in plain settings — and like everything else on the platform, every change is tracked.
Yours to run
One program. Your PostgreSQL, or ours.
Same software either way. The only thing that changes is who holds the connection string and who answers the page at 3 a.m.
Self-host
on your own machine
Your own database, wherever you keep it — on-prem, your private cloud, or fully offline. It never phones home, and the source is yours to read and verify.
oozmi-hosted
we run it for you
Managed in an EU data centre, with daily backups and recovery. Upgrades only land inside a window you choose — and it’s the exact same software.
Your AI keys stay yours. The AI runtime connects to OpenAI, Anthropic or a local model through endpoints you control. We never hold them and never proxy them.
No lock-in by construction. If oozmi disappeared tomorrow, every row still opens in standard PostgreSQL. There is no proprietary format to escape.
Lineage
We didn’t invent this pattern. We made it yours to hold.
The idea that an application’s shape can live as records the engine reads — not files a developer compiles — has serious prior art. We name it honestly, and we name where we depart.
- prior art · 2004
ServiceNow Now Platform
sys_dictionarysys_security_aclBusiness RulesThe discipline of the application living in the database. We borrow the discipline.
- prior art · metadata API
Salesforce
Custom ObjectsCustom FieldsProfilesAn app described as records the engine reads, not compiled code. We borrow the vocabulary.
- today · yours to hold
oozmi
single-tenantone Go binaryself-hostableThe same pattern — but yours to run on your own PostgreSQL, and to verify. We make it yours to hold.
We don’t claim their distribution or partner army — two decades earns that. What we claim is the pattern, in a shape they can’t match: sovereignty, not price.
Boundary
What ships in production — and what we don’t claim yet.
The architecture is live in production today. The formal attestations around it are honest about their stage. We’d rather draw the line than oversell the edge.
- Metadata-driven runtime — tables, fields, rules and ACLs are rows
- One staged write pipeline; every change inside a single transaction
- audit_events written in the same transaction as the change it records
- Default-deny, field-level ACL for users, scripts and the AI alike
- Self-host or oozmi-hosted on one Go binary against your PostgreSQL
- SOC 2 planned
- ISO 27001 planned
- Self-host support model in pilot
- Big-4 partner ecosystem not yet
- Confirmed third-party security audit — only once it’s real
Bring one change you’d like to trace end to end.
We open the admin and run your change through every stage — validate, security,
before, compute, data-policy, write, after, async — then show you the exact row in
audit_events that closes the transaction.
Where something is still planned, we say so and name the boundary. If the architecture
survives your questions, we talk pilot.