Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1266Tools index

Previous survey · No. 1290 ·

Pricing
Open Source
Type
TOOL
Use case
Data, Retrieval & Knowledge
Interfaces
CLI · Web
GitHub
81 stars
Date

About

An open-source, Apache-2.0 text-to-SQL engine that lets you configure and measure every stage of the pipeline (schema enrichment, retrieval, model choice, query verification) against your own database rather than relying on generic benchmark accuracy. It enforces read-only, permission-checked, dialect-valid queries before execution and will explicitly refuse to answer when the schema lacks the needed data, rather than fabricating a plausible result.

What it does

mnemiq turns a plain-English question into SQL, then splits the job in two. A language model drafts the statement; a rule-based gatekeeper decides whether it may run, checking that it only reads data, touches tables the asker is cleared for, compiles for that engine, and survives a dry-run plan. Before questions arrive, it can profile tables and attach meanings to cryptic codes, but only from evidence: lookup tables, standard vocabularies such as ICD-10, or a hand-written dictionary. Every answer comes back with the SQL that ran and the tables it touched, so a person can check the work.

Why it's ranked here

Apache 2.0, a Python 3.12 package with three front doors: a command line, an HTTP API behind a browser workbench, and an MCP (Model Context Protocol) server exposing three tools to agents. The design choice that matters is where trust sits. The model proposes, deterministic checks decide, and access grants nothing until a role is named. The evaluation harness reports right, declined and wrong as separate numbers, and grading lives in a separate repository so the engine does not mark its own homework. The caveat is maturity: the package declares a pre-release development version, so expect interfaces to move.

What's good

Code meanings follow a stated precedence: a standard vocabulary fills gaps, labels found in the data beat it, and an operator dictionary beats everything. A vocabulary only attaches to a column when values, name and eligibility all agree, and two competing matches bind neither. Private definitions are hidden by default; only vocabularies explicitly marked public are shown to everyone. A local-only switch refuses to start if any model endpoint is not a loopback or private-range address, and it does no DNS lookups it cannot trust. Writes exist but are refused unless both a write grant and a deployment setting allow them, and schema changes never run.

Tradeoffs

First install pulls about 230 MB of dependencies, mostly DuckDB, PyArrow and the OpenAI client. Enrichment needs a live model and prints nothing until each table finishes, which reads as a hang on large schemas. The local-only check skips database connection strings by design, so those need verifying by hand. Air-gapped runs are not turnkey: DuckDB downloads its search and source extensions on first use unless the cache is pre-seeded. The browser workbench requires a separate Node build step. The highest-precision answer mode runs five candidates plus a judge, roughly six times the cost of the default.

How to use it well

Built for a data team deciding whether natural-language querying will hold up on its own warehouse before buying a hosted product. Follow the project's own advice: take one schema slice, write 20 to 30 real questions tagged by whether column names, a definition, or nothing should answer them, then compare runs with enrichment on and off and two verifier thresholds. Always pass a role, since an empty one returns deferrals that look like bugs. Supply a dictionary for internal codes. It is not a migration tool, and Postgres, SQLite, Oracle, Snowflake and Databricks are the sources the repository names.

Technical notes+

Entry point is mnemiq.cli:main (pyproject.toml, hatchling build, src/mnemiq package, version 0.1.0.dev0). src/mnemiq/cli.py defines subcommands enrich, build, refresh, ask, write, feedback, config, digest-ontology, serve, metrics and eval; _cmd_enrich aborts before saving a snapshot when profile_outcome returns unread or empty, and applies grounding in the order ontology < correlated < lookup < certified < dictionary (docs/grounding.md documents the four-source chain without the certified tier). _identity delegates to identity_from_settings so CLI, MCP and HTTP resolve roles identically. src/mnemiq/mcp/server.py registers db_read, db_write, get_schema on FastMCP over stdio with a lazily built runtime; src/mnemiq/server/app.py serves /v1/ask, /v1/chat (SSE) and /v1/schema and returns deferrals as HTTP 200. src/mnemiq/verify/__init__.py exports grounding_check, sanity_check and SemanticJudge.

Observed

License
Apache License 2.0, copyright Agentic Fabriq
Language
Python, requires Python 3.12 or later
Packaging
Built with hatchling; installs a mnemiq console command; uv is the documented install path
Core dependencies
DuckDB, psycopg, the OpenAI client, sqlglot, PyArrow, pydantic and the MCP SDK
Optional extras
Oracle, Snowflake, Databricks, an HTTP server (FastAPI, uvicorn) and ontology digestion (rdflib)
Interfaces
CLI, HTTP API with an SSE chat endpoint, and an MCP server over stdio exposing db_read, db_write and get_schema
HTTP API
Serves /v1/ask, /v1/chat and /v1/schema and returns deferrals as HTTP 200 rather than errors
Model endpoints
Any OpenAI-compatible /v1 endpoint, including local servers such as vLLM, Ollama and llama.cpp
Ontology input
Accepts SKOS concept schemes and OWL class hierarchies from TTL files
Testing
pytest, with markers for integration (live database) and live_llm tests
Local services
Docker Compose file defines a Postgres 16 service
Contract
Snapshot and certified-record contract published as a JSON Schema file in the repository

Read from README.md, pyproject.toml, docs/grounding.md, src/mnemiq/__init__.py, src/mnemiq/cli.py, src/mnemiq/mcp/server.py, src/mnemiq/server/app.py, src/mnemiq/contract/__init__.py, src/mnemiq/verify/__init__.py, schemas/mnemiq-contract.schema.json, LICENSE, docker-compose.yml.

What it can do

  • Convert natural language questions into SQL queries

    Natural language question → SQL query

  • Verify generated queries are read-only, permission-checked, and dialect-valid before execution

    SQL query → Validated query or rejection

  • Refuse to answer when the database schema lacks the needed data

    Natural language question and schema → Refusal response

  • Run an evaluation harness to measure text-to-SQL accuracy on a user's own database

    Database and test queries → Accuracy metrics

  • Perform tiered semantic enrichment of database schema

    Database schema → Enriched schema metadata

Tags

text-to-sqlnl2sqlsql-generationllmdatabaseopen-sourceevaluation-harnessduckdb

Tech Stack

Python

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.