The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Nlqdb — analytical memory for AI agents listing page.
Build a real app from day one with no data modeling. nlqdb infers your schema from how you use it, evolves it, and keeps it optimized — and shows you every change before it lands.
Your app talks to its database in plain English — over HTTP, the SDK, the
nlq CLI, or MCP from Claude, Cursor and Codex. The first insert creates the
shape; later inserts and reads evolve it; the DBA builds the indexes and
places data on the right engine, and every change is previewed, versioned and
one click to undo. The LLM never emits SQL: it returns a typed plan, our
compiler emits the parameterised statement, and you see the exact SQL every time.
No backend to build. You write HTML; each component asks for what it wants in plain English; nlqdb infers the schema, writes the SQL, runs it, and renders the result. There is no backend for you to build.
Two actions. That's the whole product:
That's the entire backend for a live order list — no API to write, no schema to define, no JSON to parse. Engine choice (Postgres / Mongo / Redis / DuckDB / pgvector / …), schema inference, indexing, backups, and auto-migration between engines based on your real workload are background concerns you never have to see.
nlqdb is early and built in the open, but fully public — no gate, no
invite code. The marketing site, the /v1/ask pipeline, the <nlq-data> /
<nlq-action> elements, the chat app, the TypeScript SDK, the hosted MCP
server, and the nlq CLI are all live in some form (see the surface table
below). Natural-language → SQL accuracy is still climbing toward our public
bar (BIRD ≥ 0.65, Spider 2.0 ≥ 0.75 on the free model chain), so answers can
be wrong — every response carries a confidence signal and the SQL it ran.
Connecting an agent over MCP? On Claude Code, one marketplace add wires the hosted server and both memory skills in a single step:
On any other MCP host, connect your agent
with one browser-OAuth approval; headless hosts skip the browser with
npx -y @nlqdb/mcp (0.1.1) and an sk_mcp_* MCP key
(MCP setup). @nlqdb/sdk (0.4.0) and
@nlqdb/mcp (0.1.1) are both published and importable from npm.
The 60-second walkthrough — plain HTML, CLI, and ten framework wrappers —
lives at docs.nlqdb.com. Start with the
HTML tutorial or the
CLI tutorial.
You don't generate an API key separately: describe your database at
nlqdb.com, and the chat hands you a
<nlq-data> snippet with the key already inlined.
examples/ — minimal scaffolds in plain HTML, Next.js,
Nuxt, SvelteKit, Astro, plus a CLI-only walkthrough. Each is the smallest
valid integration around one <nlq-data> element or one CLI session.
Four things every release has to move, none allowed to regress
(GLOBAL-025):
The bet: get this right on free, open models and it only gets better on frontier ones — the scaffolding compounds with whatever model is underneath.
The hosted-premium model lane went live 2026-08-14. The full model strategy is in
GLOBAL-026.
| Surface | Status | Where |
|---|---|---|
HTTP API (POST /v1/ask, POST /v1/run) | ✓ shipped | apps/api/src/ask/** |
<nlq-data> + <nlq-action> elements | ✓ shipped (v0.1) | packages/elements/** |
@nlqdb/sdk (TypeScript) | ✓ shipped (incl. runSql + cross-tenant grant + pack-import runner verbs) — installable from npm (0.4.0) | packages/sdk/** |
| Framework wrappers (React / Next / Vue / Nuxt / Svelte / SvelteKit / Astro / Solid + Swift) | ~ built + CI-tested; npm / SPM publish pending | packages/{react,next,…}/** |
Chat app nlqdb.com/app | ✓ shipped | apps/web/** |
Hosted MCP server mcp.nlqdb.com/mcp | ✓ shipped (host auto-detect pending) | apps/mcp/**, packages/mcp/** |
Local stdio MCP server @nlqdb/mcp | ✓ shipped (0.1.1) — npx -y @nlqdb/mcp with an sk_mcp_* key | packages/mcp/** |
| Droppable agent artifacts (AGENTS.md · Claude Code skill + plugin · Cursor rules · Codex config) | ✓ shipped — /plugin marketplace add nlqdb/nlqdb installs the server + skills in one step | apps/web/public/agent-artifacts/** |
nlq CLI (Go) | ✓ shipped (core verbs; device-login pending) | cli/** |
Full integration matrix in docs/progress.md.
Published to the public npm registry with build provenance
(SK-CIPERM-003). Version badges
are live from npm; the table itself is generated from the workspace by
scripts/sync-readme-packages.mjs, so it
lists exactly the packages that are un-gated ("private" removed) and nothing
that isn't.
| Package | Version | What it is | Source |
|---|---|---|---|
@nlqdb/cli | Shim that installs the nlq CLI binary for the host platform. | packages/cli-shim | |
@nlqdb/mcp | Analytical-memory MCP server for nlqdb — a real database your AI agent can GROUP BY / JOIN / aggregate over in natural language, not just recall. | packages/mcp | |
@nlqdb/sdk | Typed HTTP client for the nlqdb /v1 API — works in browsers, Node, Bun, Workers. | packages/sdk |
The two sections below are the live focus; the numbered phases after
them are the engine roadmap. Canonical plan + exit gates:
docs/phase-plan.md. Legend:
✓ shipped · ~ in progress · ◯ planned.
This roadmap is yours to shape. Want something added, reprioritised, or dropped? Open a PR editing this section (and
docs/phase-plan.mdif it's engine-facing), or open an issue to float it first. Say why now — which of the four north-star pillars (engine quality, onboarding, UX, performance) it moves. New to the codebase? Point your coding agent at this repo and paste:Setup, branch naming, and the CLA are in CONTRIBUTING.md.
GLOBAL-041)The first insert creates the shape; later inserts and reads evolve it. KPI:
first-insert inference rate ≥ 95 % at Phase A exit on the dogfood workload.
Build order in GLOBAL-041.
kind=extend typed plan — a write naming an unseen table or field widens
the schema in the same transaction as the insert, never a schema_mismatch
(both unseen-table and unseen-column cases merged to main + executor-walked;
awaiting a prod deploy, live rate 0 %)trace.widen live on SDK · MCP ·
<nlq-data>; CLI/web render pendingasks_extend_ok / asks_extend_failed on the /v1/ask write path
(SK-SCHEMA-010; the rate reads on /app/admin)pg_stat_* + EXPLAIN collection → typed proposals (index /
retype / drop / rename / move-to-engine) → /app/dba dashboard with
1-click apply + undoagent_memory_v1 preset, nlqdb_remember / nlqdb_read MCP tools,
per-agent RLS isolation, the Claude Code plugin, /agentsNon-technical professionals turn their expertise into structured,
queryable knowledge that AI agents pay to use. Decisions locked; build
gated on Phase A (SK-EKP-005)
(docs/features/expert-knowledge-platform/).
/v1/ask (schema-only plan, rows-only
egress, exactly-once per-query metering proven at the route boundary);
revoke-in-flight bound measured against live PostgresWorker skeleton · KV + D1 + R2 bindings · Neon adapter + OTel · LLM router
(free chain) · Better Auth (GitHub + Google + magic link) · /v1/ask
end-to-end · events queue + drain · Stripe webhook · CI/CD + PR preview
environments.
A stranger lands on nlqdb.com, creates a DB in plain English, embeds it,
and shares the link — in under 60 seconds, no card, no config.
nlqdb.com)<nlq-data> + <nlq-action> elements (v0.1)/app/keys)mcp.nlqdb.com/mcp) — host auto-detect pending;
local stdio @nlqdb/mcp@0.1.1 is on npm, so npx -y @nlqdb/mcp with an
sk_mcp_* key is a headless route in with no browser consent step
(/agents now carries it; the per-host install panel is still OAuth-only).
On Claude Code, /plugin marketplace add nlqdb/nlqdb installs the server +
both memory skills in one stepnlq (Go) — core verbs + raw-SQL escape hatch; device-login +
chat REPL pending@nlqdb/sdk — basic methods + runSql + cross-tenant grant +
pack-import runner verbs; published and importable from the registry
(0.4.0)/llms.txt for
agents now live; tutorial polish remainsPREMIUM_METER_LIVE flipped)POST /v1/db/connect + web UI, CLI, SDK, query dispatch); prod-gated on
the BYO_SECRET_KEK secret. Supabase adds one-click OAuth connect over
the read-only Management-API (no DSN to paste); prod-gated on the
SUPABASE_OAUTH_CLIENT_ID / _SECRET secrets, with a graceful fall-back to
paste when unsetbootstrap-dev.sh stands up the whole toolchain in one shot — Bun, Node
20+, Go 1.25+, uv; Biome / gofumpt / golangci-lint / ruff; lefthook git
hooks; the cloud CLIs (wrangler, flyctl, stripe, gh); a local Ollama so the
LLM router works offline; and a .envrc with self-generated dev secrets.
Details in
docs/history/infrastructure-setup.md §8.
Day-to-day:
E2E coverage is persona-driven and manually triggered so cost stays
inside the free-tier envelope — one workflow_dispatch workflow per
surface:
Run the hermetic surfaces locally without GitHub:
Only execution is manual: tests/e2e/{sdk,mcp,examples} live outside the root
workspace, so CI's typecheck-e2e job tscs them on every PR — the free
backstop against a suite that compiles today and rots before the next dispatch.
Conventions, persona mapping, and cassette governance are in
docs/features/e2e-coverage/FEATURE.md.
docs/architecture.md — system design (auth,
pricing, the $0 stack, model selection, hosted db.create, hello-world).docs/phase-plan.md — canonical phase plan and
exit gates.docs/decisions.md — cross-cutting GLOBAL-NNN
decisions; per-feature records live under
docs/features/.docs/performance.md — SLOs, latency budgets,
span/metric catalog.docs/competitors.md — competitive landscape.conduct@nlqdb.com.security@nlqdb.com). 90-day fix target.FSL-1.1-ALv2 — Functional Source License, Apache 2.0 future license. Source-available for any non-competing use; auto-converts to Apache 2.0 two years after each release. (Pattern used by Sentry, Convex, and others.)
nlqdb™ is an unregistered trademark of the project's licensor. See
TRADEMARKS.md for usage guidelines.