OrmAI
🛠️

Internal data agents over production data

Let internal tools and Slack bots answer questions from production data with per-principal policies and a tamper-evident audit trail.

The problem

Internal “ask the database” bots are the fastest way to leak data across teams. Finance shouldn’t read HR rows; a bot shouldn’t run an unbounded join at 3am. But building bespoke guardrails per bot is slow and inconsistent.

With OrmAI

One declarative policy per principal governs which models, fields, and operations each internal agent can touch. Every call is logged with the principal and a trace ID, so access is auditable after the fact.

The primitives doing the work

Per-principal policy

Different agents/teams get different model, field, and write permissions from the same policy model.

Immutable audit log

principal, trace ID, sanitized inputs, and policy decision are written before every result returns.

Join-depth & timeout limits

Runaway analytical queries are rejected at compile time.

The policy, in a few lines

policy = (
    PolicyBuilder(DEFAULT_PROD)
    .register_models([Deal, Account, Usage])
    .deny_fields("*ssn*", "*salary*")
    .max_join_depth(3)
    .statement_timeout_ms(2000)
    .build()

Keep reading


Other use cases