nlqdb
Pre-beta · free while we build

Your autonomous DBA. No data modeling.

Write rows from day one. nlqdb infers the schema from your inserts, evolves it as your app changes, keeps it fast — and shows you every change before it lands.

Spin up a database from a sentence.

Anonymous — no sign-in. Your DB lives 72h; sign in (always free) to keep it.

Not sure? Start from —

How it works

You write app data. The DBA does the rest.

  1. 1

    Write rows, not DDL

    Describe what you're building, then insert like the tables already exist. There is no CREATE TABLE to write on any surface.

    // first write — no schema yet
    add an order: 2 lattes, table 4
  2. 2

    The schema is inferred — and evolves

    A field nobody modeled? The preview names the added column and the row lands in the same commit. Old queries keep answering.

    + table  orders (drink, qty, table_no)
    + column orders.tip numeric ← later
  3. 3

    It optimizes; you click in progress

    Indexes, retypes, engine moves — each proposal previewed with its expected effect and its inverse recorded first. Apply once; undo once.

    proposal  index orders(created_at)
    effect    "orders today" scans less
    [ apply ]  [ undo ]

Before anything changes

Every write shows its diff. You confirm.

Writes come back as requires_confirm with a diff and the compiled SQL. Nothing runs until you say so.

  • One preview, one confirm — no undo needed after a write you approved
  • The trace is always attached: cache · plan · validate · exec · summarize
  • Reads are validated against a fail-closed allow-list before they run
›add a $2 tip to order 418
requires_confirm
verb
UPDATE
table
orders
rows
1
schema
+ column orders.tip numeric
UPDATE orders SET tip = 2.00 WHERE id = 418;
A representative preview — the diff names the row effect and any column the write adds.

One engine, every surface

Use it from wherever you build.

  • SDK npm i @nlqdb/sdk

    The only HTTP client — create, ask, run, stream.

    Integrate →
  • Element <nlq-data goal="orders today">

    One tag answers a question inline on any page.

    Embed →
  • MCP mcp.nlqdb.com/mcp

    Your agent writes and queries its own database.

    For agents →
  • CLI phase 2 nlq ask "orders today"

    Same engine from the terminal; bootstrap landed.

    Install →

Also a fit if

Your agent needs memory, or your data already lives somewhere.

Use it as agent memory

A real Postgres your agent writes to as it learns — typed rows, queried in English, installed in your host over MCP.

Install in your agent.

  • Claude Code: Run in your terminal.
  • Codex: Add to ~/.codex/config.toml.
  • Claude: Settings → Connectors → Add custom connector — paste the URL.
  • Windsurf: Cascade → MCPs → Configure, or ~/.codeium/windsurf/mcp_config.json.
  • Zed: Agent Panel → Add Custom Server, or ~/.config/zed/settings.json.

Anonymous — the configs ship with the pk_live_REPLACE_ME placeholder.

Question the warehouse you already run

Point nlqdb at your ClickHouse or Postgres with a read-only connection. It reads the schema; you ask in English.

Sealed server-side — the connection string is never stored in your browser.

Connect a warehouse →

Sign in (always free), then connect read-only.

What we’re building next

AI can’t replace you if you become AI.

Turn what you know into a structured knowledge product agents can query — and earn when they use it. The first pilot is for language tutors.

See how Become AI will work →
A 3D map of the nlqdb engine: three lit zones — you ask, the engine, your data — connected by flowing jade request paths. Under the hood

One engine, seen from above.

Fly through the request path — five surfaces, one engine, your data — and click every moving piece. Explore the 3D map →

Describe what you're building.

One sentence gets you a working database — no account, no card, no config. Sign in later to keep it and its history.

Describe your data →
  • 16.4 ms p50 on cache hits measured 2026-07-27
  • $0 free tier no card, ever
  • 0 % markup on your own LLM key
  • Every write previewed diff before commit