Type-safe queries. Policy-aware execution. Zero dependencies.

Define your schema. LatticeQL handles validation, authorization, cost control, pagination, and caching — in pure Go or TypeScript.

Parse
Validate
Policy
Plan
Execute
Respond

Built for production from day one

Type Safety

Schema-validated queries catch errors before execution

Role-Aware Queries

One endpoint, same query — admins see everything, viewers see only their data. Policies scope results and strip fields per role automatically.

Cost Control

Query cost estimation and admission control prevent expensive queries

TypeScript Codegen

Generated clients, hooks, and builders from your schema

Same endpoint. Same query. Different results per role.

LatticeQL's policy engine sits in the request pipeline — not bolted on after. Admins, users, and viewers all query /query with the same payload. The policy layer injects filters, strips sensitive fields, and scopes results per role — all before your adapter ever executes.

Every role sends
POST /query
{
  "from": "users",
  "select": [
    { "name": "name" },
    { "name": "email" },
    { "name": "role" }
  ]
}
Admin response
{
  "data": [
    { "name": "Ada",
      "email": "ada@acme.io",
      "role": "admin" },
    { "name": "Bob",
      "email": "bob@other.co",
      "role": "viewer" }
  ]
}

All users, all fields

Viewer response
{
  "data": [
    { "name": "Ada",
      "role": "admin" }
  ]
}

Scoped rows, email field gone

No separate admin API. No role-checking middleware. No duplicated query logic. LatticeQL complements your database's RLS by enforcing policy where role semantics, tenant context, and field-level sensitivity actually live — at the application layer.

Schema in, API out

Define entities in FSDL. Query them with a typed JSON protocol.

schema.fsdl
entity users {
  id:     ID!
  name:   String
  email:  String @sensitive
  orders: [orders] @relation(remote: user_id)
}
POST /query
{
  "from": "users",
  "select": [
    { "name": "name" },
    { "name": "orders", "include": [
      { "name": "total" }
    ] }
  ],
  "limit": 10
}

Get early access

LatticeQL is in private beta. Join the waitlist and be the first to know when we open up.