Skip to main content

nao Core is your analytics context builder with the best chat interface.

Project description

nao CLI

Command-line interface for nao chat.

Installation

pip install nao-core

Usage

nao --help
Usage: nao COMMAND

╭─ Commands ────────────────────────────────────────────────────────────────╮
│ chat         Start the nao chat UI.                                       │
│ debug        Test connectivity to configured resources.                   │
│ init         Initialize a new nao project.                                │
│ sync         Sync resources to local files.                               │
│ test         Run and explore nao tests.                                   │
│ --help (-h)  Display this message and exit.                               │
│ --version    Display application version.                                 │
╰───────────────────────────────────────────────────────────────────────────╯

Initialize a new nao project

nao init

This will create a new nao project in the current directory. It will prompt you for a project name and ask you to configure:

  • Database connections (BigQuery, DuckDB, Databricks, Snowflake, PostgreSQL, Redshift, MSSQL, Trino)
  • Git repositories to sync
  • LLM provider (OpenAI, Anthropic, Mistral, Gemini)
  • Slack integration
  • Notion integration

The resulting project structure looks like:

<project>/
├── nao_config.yaml
├── .naoignore
├── RULES.md
├── databases/
├── queries/
├── docs/
├── semantics/
├── repos/
├── agent/
│   ├── tools/
│   └── mcps/
└── tests/

Options:

  • --force / -f: Force re-initialization even if the project already exists

Start the nao chat UI

nao chat

This will start the nao chat UI. It will open the chat interface in your browser at http://localhost:5005.

Test connectivity

nao debug

Tests connectivity to all configured databases and LLM providers. Displays a summary table showing connection status and details for each resource.

Sync resources

nao sync

Syncs configured resources to local files:

  • Databases — generates markdown docs (columns.md, preview.md, description.md, profiling.md) for each table into databases/
  • Git repositories — clones or pulls repos into repos/
  • Notion pages — exports pages as markdown into docs/notion/

After syncing, any Jinja templates (*.j2 files) in the project directory are rendered with the nao context.

Run tests

nao test

Runs test cases defined as YAML files in tests/. Each test has a name, prompt, and expected sql. Results are saved to tests/outputs/.

Options:

  • --model / -m: Models to test against (default: openai:gpt-4.1). Can be specified multiple times.
  • --threads / -t: Number of parallel threads (default: 1)

Examples:

nao test -m openai:gpt-4.1
nao test -m openai:gpt-4.1 -m anthropic:claude-sonnet-4-20250514
nao test --threads 4

Explore test results

nao test server

Starts a local web server to explore test results in a browser UI showing pass/fail status, token usage, cost, and detailed data comparisons.

Options:

  • --port / -p: Port to run the server on (default: 8765)
  • --no-open: Don't automatically open the browser

BigQuery service account permissions

When you connect BigQuery during nao init, the service account used by credentials_path/ADC must be able to list datasets and run read-only queries to generate docs. Grant the account:

  • Project: roles/bigquery.jobUser (or roles/bigquery.user) so the CLI can submit queries
  • Each dataset you sync: roles/bigquery.dataViewer (or higher) to read tables

The combination above mirrors the typical "BigQuery User" setup and is sufficient for nao's metadata and preview pulls.

Snowflake authentication

Snowflake supports three authentication methods during nao init:

  • SSO: Browser-based authentication (recommended for organizations with SSO policies)
  • Password: Traditional username/password
  • Key-pair: Private key file with optional passphrase

Development

Building the package

cd cli
python build.py --help
Usage: build.py [OPTIONS]

Build and package nao-core CLI.

╭─ Parameters ──────────────────────────────────────────────────────────────────╮
│ --force -f --no-force              Force rebuild the server binary             │
│ --skip-server -s --no-skip-server  Skip server build, only build Python pkg   │
│ --bump                             Bump version (patch, minor, major)          │
╰───────────────────────────────────────────────────────────────────────────────╯

This will:

  1. Build the frontend with Vite
  2. Compile the backend with Bun into a standalone binary
  3. Bundle everything into a Python wheel in dist/

Installing for development

cd cli
pip install -e .

Publishing to PyPI

# Build first
python build.py

# Publish
uv publish dist/*

Architecture

nao chat (CLI command)
    ↓ spawns
nao-chat-server (Bun-compiled binary, port 5005)
  + FastAPI server (port 8005)
    ↓ serves
Backend API + Frontend Static Files
    ↓
Browser at http://localhost:5005

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

nao_core-0.0.52-py3-none-manylinux2014_x86_64.whl (44.5 MB view details)

Uploaded Python 3

nao_core-0.0.52-py3-none-manylinux2014_aarch64.whl (43.7 MB view details)

Uploaded Python 3

nao_core-0.0.52-py3-none-macosx_15_0_x86_64.whl (29.4 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

nao_core-0.0.52-py3-none-macosx_15_0_arm64.whl (27.1 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

nao_core-0.0.52-py3-none-macosx_14_0_arm64.whl (27.1 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file nao_core-0.0.52-py3-none-manylinux2014_x86_64.whl.

File metadata

  • Download URL: nao_core-0.0.52-py3-none-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 44.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for nao_core-0.0.52-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a6b50d1578b7e48f908643482db9c8b5ec80a3fced98369c9e5a00a6cfcc3ed
MD5 5c842a0fa226b92b2b35d0349a1cb229
BLAKE2b-256 3c3bed98cd7ec67b2306622f24344b9995825a03648075fcef2a7d2cc47371cf

See more details on using hashes here.

File details

Details for the file nao_core-0.0.52-py3-none-manylinux2014_aarch64.whl.

File metadata

  • Download URL: nao_core-0.0.52-py3-none-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 43.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for nao_core-0.0.52-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f4649481ea7b71c51e9450c4faa187dfbc8bb52a09621189554b7f8cd2ff72db
MD5 99499ce6dbd3a882cf33d29d77701542
BLAKE2b-256 e0c70522d64f132c5b194ad5aebf3bcb6fe60fbaba68461d6ba6a7fad26a1d75

See more details on using hashes here.

File details

Details for the file nao_core-0.0.52-py3-none-macosx_15_0_x86_64.whl.

File metadata

  • Download URL: nao_core-0.0.52-py3-none-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 29.4 MB
  • Tags: Python 3, macOS 15.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for nao_core-0.0.52-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 cab986a4558d9f5ce075ea4a5e412aaf4b105e9ccf728c838f091b29c2185698
MD5 4cf6122bca5ce5267b1c45430b552932
BLAKE2b-256 efb04bfa042ac2a09c34ef2d8d6091a80bbedc4379e796ddede379059debe929

See more details on using hashes here.

File details

Details for the file nao_core-0.0.52-py3-none-macosx_15_0_arm64.whl.

File metadata

  • Download URL: nao_core-0.0.52-py3-none-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 27.1 MB
  • Tags: Python 3, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for nao_core-0.0.52-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c8918a1daa76ee6cbe6ef8b3d135a1243e547f21772de1c0cef4a6cf1f5f981a
MD5 6109d757f925b320ecd93706f9eb982f
BLAKE2b-256 795940e1abecdb165f36c21397dce3a40ff71521a3910400c42e7710f97fe54d

See more details on using hashes here.

File details

Details for the file nao_core-0.0.52-py3-none-macosx_14_0_arm64.whl.

File metadata

  • Download URL: nao_core-0.0.52-py3-none-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 27.1 MB
  • Tags: Python 3, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for nao_core-0.0.52-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0b033352cb0eb427f2c01983eccf2ad218901b266562f05bf7b76969d386ae23
MD5 10369f7229940618f9df600fab6855ca
BLAKE2b-256 495f23d4565a0c4431769308382288ae80ce20e4054dc94a3e0545f37b68c0b7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page