mrkeyoor.com_
Fri 16 Oct 18:51 UTC
Dataevaluationupdated 12 Oct 2026

nao review

nao lets a data team prepare database descriptions and business rules, then give colleagues a chat interface for asking analytics questions. It generates SQL and charts using that context, with tools for evaluating answers against queries the team supplies.

+19 / 3dstars / 7d
Verdict

Our nao run installed 1,875 packages in 16 seconds and reported 51 known vulnerabilities, including 7 critical, so I would require dependency review before giving it production warehouse access. Trial it when a data team can own the context and reference queries. Keep existing reporting in place if saved stories must automatically follow metric-definition changes.

We ran it

Lab card: what happened when we ran naoScreenshot of nao (docs.getnao.io)
Install✓ · 16s1875 packages · 2045 MB
Buildn/ano build script
Testsn/ano test script
Known vulns517 critical · 13 high · 15 moderate · 16 low (npm audit)
Repo2412 files~331,042 lines of source · 45.6 MB · 12 CI workflows · Dockerfile

Answers from our run

Does nao build from source?

Dependencies installed in 16 seconds (1875 packages), and the project has no separate build step. We cloned commit 5bde830 into a clean Debian container with 3 CPUs and no project-specific setup.

Does nao have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does nao have known vulnerabilities in its dependencies?

npm audit flagged 51 known advisories in the dependency tree, including 7 critical at the time of our run.

Who should not use nao?

Teams expecting accurate analytics without writing reference queries: the evaluation workflow asks you to supply questions and expected SQL.

What are the alternatives to nao?

Metabase, Apache Superset, Vanna. Our nao run installed 1,875 packages in 16 seconds and reported 51 known vulnerabilities, including 7 critical, so I would require dependency review before giving it production warehouse access.

Setup2/516-second install, 2,045 MB, and several runtime services to configure
Docs4/5Detailed context, evaluation, deployment, and MCP guidance
Community3/5October push, recent release, and active issues and PRs
Maturity2/551 audit findings and reported metric drift in saved stories

Discussed on

  1. hnShow HN: Nao Open Source Analytics Agent – build context agent as a file system5 points

Who it’s for

Data teams willing to maintain metric definitions, documented joins, and reference SQL for their analytics agent.
Organizations that want a self-hosted chat interface connected to their existing warehouse and selected model provider.
MCP users who want another assistant to query analytics through nao, and Claude Code users preparing project context.

Who it’s NOT for

Teams expecting accurate analytics without writing reference queries: the evaluation workflow asks you to supply questions and expected SQL.
Reporting teams requiring saved stories to follow every metric-definition change: open issue 1852 reports that existing stories retain the earlier compiled SQL.
OpenMetadata users requiring native context synchronization: open issue 1879 asks for that connector and describes duplicated metadata work without it.
Teams treating the dependency install as production clearance: our audit found 51 known vulnerabilities, including 7 critical and 13 high, and the lab skipped build and tests.

Setup reality

Our run of commit 5bde830 on October 11, 2026 installed 1,875 packages in 16 seconds and occupied 2,045 MB. The lab found no build or tests script or target, so both steps were skipped. Npm audit reported 51 known vulnerabilities: 7 critical, 13 high, 15 moderate, and 16 low. The sandbox had 3 CPUs, 8 GB of RAM, and no secrets.

Useful analytics needs warehouse access, a configured model endpoint, and maintained context. The CLI creates nao_config.yaml and RULES.md before synchronization. Source development needs an authentication secret, a public app URL, and a project path. The cloud deployment guide adds PostgreSQL and persistent attachment storage.

The repository uses Node workspaces and Bun, alongside the Python nao-core CLI. Development lists nvm and uv too, with pinned Node and npm versions. Our scan found 12 CI workflows, a Dockerfile, and a compose file. Those assets do not establish a working application from this run, and choosing an external model provider changes where data travels.

The data team has to define what an answer means

Before giving nao access to a warehouse, decide what a question such as "revenue last month" should count. The project combines a context-building CLI with a chat application that turns questions into analysis. Its context principles call for one canonical definition per metric and documented joins. Choose nao if someone can own those definitions after the demo.

Our checkout contained 2,412 files and about 331,042 lines of source in 45.6 MB. This is a workspace monorepo with a TypeScript application and a separate Python CLI. That scope suits a data team serving colleagues more than someone querying a local table.

What happened when we ran it

Our run installed commit 5bde830 in 16 seconds on October 11, 2026, adding 1,875 packages and occupying 2,045 MB on disk. The unprivileged lab-node:22 sandbox had 3 CPUs, 8 GB of RAM, and no secrets. The lab identified a Node project using Bun. Its build and tests were skipped because it found no script or target for either step.

Npm audit reported 51 known vulnerabilities: 7 critical, 13 high, 15 moderate, and 16 low. The scan found 12 CI workflow files, a Dockerfile, and a compose file, but no tests directory. The installation succeeded, but these measurements provide no application build or agent accuracy result. A missing detected test target also doesn't prove there are no checks elsewhere in the workspaces.

The audit findings deserve attention before warehouse access

The 7 critical and 13 high findings make a production trial conditional on dependency review. The supplied lab summary does not identify the packages, affected paths, or whether deployed code can reach them. The totals establish a review requirement, without proving that an attacker could exploit the deployed app.

The 51-vulnerability result belongs to the installed environment at commit 5bde830. A published container may have a different dependency tree. Ask for the detailed audit and inspect the version you intend to ship. A team with a policy against unresolved critical advisories has enough evidence to postpone adoption until that review is complete.

The Python quick start differs from source development

The documented CLI route uses nao init to create a project, then nao debug and nao sync before starting chat. The configuration guide separates database access from model-provider settings and repository sources. Initialization can defer configuration, but useful warehouse questions still need a working data connection and model endpoint.

Our 2,045 MB installation measured the repository environment, rather than timing that Python quick start. Source development also needs nvm, Bun, and uv, an authentication secret, the public app URL, and a project path. The contributor guide pins Node and npm versions. The local browser app and packaged chat use different documented addresses, so copy the configuration for your chosen route instead of mixing examples.

Self-hosting still needs durable storage and a model policy

The deployment guide uses PostgreSQL for the application database and tells operators to keep BETTER_AUTH_SECRET stable across restarts. It also warns that container-local attachment storage is ephemeral on platforms such as Cloud Run. Choose a durable volume or object storage before users start saving exports.

A 16-second install with no secrets could not exercise your authentication, warehouse permissions, or provider configuration. The chat guide says external data transmission depends on configuring an external LLM provider. Self-hosting the interface therefore does not by itself keep model calls inside your network. Also read the actual license: Enterprise-marked files have commercial terms separate from the mostly Apache-licensed code.

The evaluation suite needs your own reference SQL

The evaluation workflow asks you to write questions and expected SQL in YAML. It then compares the agent's returned data with the reference query's result. That can catch context changes that damage business answers. It requires someone who already knows the right query, and the reference itself needs review when a metric definition changes.

The lab's 1,875-package installation produced no measured test result, so the presence of this evaluation feature cannot support a claim that nao answered correctly for us. Start your own acceptance work with questions whose results you can inspect. The project also publishes context-engineering skills for Claude Code and other coding agents, but generated rules and evaluation cases still need a data owner's approval before becoming the standard for an answer.

Saved stories can retain an outdated metric definition

Open issue 1852 reports that stories retain compiled SQL after the underlying MetricFlow metric definition changes. The request asks for existing stories to resolve the current definition or be refreshable. It gives teams relying on centrally governed metrics a reason to delay replacement of their established reporting setup.

The 51 audit findings and this stale-definition report address different adoption risks: dependencies need review, while saved analytics need a maintenance policy. The MCP endpoint lets external clients delegate questions or directly browse context and execute SQL. Calls run as the token owner. Extending access into another assistant increases the importance of agreeing which definitions and results users should trust.

October changes show active work without settling readiness

The last push was October 9, 2026, and GitHub listed 267 open issues and PRs combined. Release v0.3.22 arrived on October 7 with provider fixes and changes to project-file access. Recent issue activity includes the semantic-layer request. Those dates show maintenance, without settling the audit or saved-metric concerns.

For fixed reports, compare Metabase or Apache Superset before adopting the 1,875 packages we measured. Vanna is another option when you want to build a SQL assistant into your own application. nao earns a trial when your data team wants both editable context and a shared chat interface. Start with a warehouse question your analyst can answer exactly, then change its metric definition and check whether the saved story follows.

Alternatives

ProjectWhat it isPick it when
Metabase gh↗A business intelligence application for saved questions, dashboards, and exploration.pick this instead when shared dashboards and reviewed queries are your primary deliverable.
Apache Superset gh↗A data exploration and visualization platform with a SQL workspace.pick this instead when analysts want to work directly with SQL and maintain dashboard charts.
VannaA framework for building an AI assistant that queries SQL databases.pick this instead when you want to integrate a SQL assistant into your own application.

What people are saying

  1. [github-trending] getnao/nao

Sources

  1. nao repository and quick start
  2. nao documentation
  3. Self-hosted deployment guide
  4. MCP endpoint modes and authentication
  5. Source development and Enterprise boundaries
  6. Saved stories retain earlier metric SQL, issue 1852
  7. OpenMetadata context connector request, issue 1879
  8. nao v0.3.22 release

More data reviews

wine-quality-svc-tuning · dhis2-immunisation-audit · OpenTerminal · The-Quant-Trading-Vault · multimodal-product-discovery · edgequake · the whole board →