Sign inSign up

getnao/nao

By getnao

โ€ขUpdated 2 days ago

๐Ÿ‘พ nao is an open source analytics agent and a chat interface

Image
Machine learning & AI
1

100K+

getnao/nao repository overview

โ nao - The #1 Open-Source Analytics Agent

nao is a framework to build and deploy analytics agents. Create context for your analytics agent with the nao-core CLI, then deploy a chat UI for anyone to interact with your data.

๐ŸŒ Websiteโ  ยท ๐Ÿ“š Documentationโ  ยท ๐Ÿ’ฌ Slackโ  ยท ๐Ÿ™ GitHubโ 

โ Docker

โ Supported Tags
  • latest - Latest stable release
  • commit-hash - Specific commit hash tags
โ Supported Architectures
  • linux/amd64
โ Base Image
  • Python 3.12 (slim) with Node.js 24 and Bun

โ Quick Start

โ Using Docker Run (SQLite database)
docker run -d \
  --name nao \
  -p 5005:5005 \
  -e OPENAI_API_KEY=sk-... \
  -v /path/to/your/project:/app/project \
  getnao/nao:latest

โ Environment Variables

VariableRequiredDescription
NAO_DEFAULT_PROJECT_PATHYesPath to your nao project (default: /app/example)
OPENAI_API_KEYNo*OpenAI API key
ANTHROPIC_API_KEYNo*Anthropic API key
BETTER_AUTH_SECRETNoSecret key for authentication
DB_URINoPostgreSQL connection string (uses SQLite if not set)
SERVER_PORTNoPort to listen to
NAO_CONTEXT_SOURCENolocal (default), git, or api
NAO_CONTEXT_GIT_URLgit onlyHTTPS or SSH URL of the repo to clone
NAO_CONTEXT_GIT_BRANCHNoBranch to clone (default: main)
NAO_CONTEXT_GIT_TOKENNoAccess token for private HTTPS repos
NAO_CONTEXT_GIT_PLATFORMNoPlatform override for self-hosted GitHub, GitLab, or Bitbucket hosts
NAO_CONTEXT_GIT_SSH_KEYNoRaw SSH private key contents (deploy key) โ€” for git@โ€ฆ/ssh://โ€ฆ URLs
NAO_CONTEXT_GIT_SUBPATHNoSubfolder of the repo to use as the project (sparse checkout, e.g. monorepos)

* At least one LLM API key is required to make AI queries.

โ Ports

PortDescription
5005Web UI and API, can be set via $SERVER_PORT environment variable

โ Volumes

Mount your nao project directory to make it available to the agent:

-v /path/to/your/nao-project:/app/project

Then set NAO_DEFAULT_PROJECT_PATH=/app/project, you can also use the example project by setting NAO_DEFAULT_PROJECT_PATH=/app/example.

โ Docker run example

docker run -d \
  --name nao \
  -p 5005:5005 \
  -e NAO_DEFAULT_PROJECT_PATH=/app/project \
  getnao/nao:latest

Then navigate to http://localhost:5005โ  to access the UI (or to any URL you configured).

โ Git-based context

Instead of mounting a volume, you can have the container clone your nao project from a git repo on startup. This is a fully supported setup. Because it uses one shared credential, pull requests are opened by the account that owns the deployment token; commits still show the person who made each edit. Connecting GitHub in Settings โ†’ Git is recommended when pull requests should be opened as each user.

docker run -d \
  --name nao \
  -p 5005:5005 \
  -e OPENAI_API_KEY=sk-... \
  -e NAO_CONTEXT_SOURCE=git \
  -e NAO_CONTEXT_GIT_URL=https://github.com/your-org/your-nao-context.git \
  -e NAO_CONTEXT_GIT_BRANCH=main \
  -e NAO_CONTEXT_GIT_TOKEN=ghp_xxx \
  -e NAO_DEFAULT_PROJECT_PATH=/app/context \
  getnao/nao:latest

If your nao project lives inside a subfolder of a larger repo (e.g. a monorepo), set NAO_CONTEXT_GIT_SUBPATH and only that folder will be cloned via git sparse checkout:

-e NAO_CONTEXT_GIT_SUBPATH=analytics/finance

The container then expects nao_config.yaml at <NAO_DEFAULT_PROJECT_PATH>/<NAO_CONTEXT_GIT_SUBPATH>/nao_config.yaml.

When a token or SSH deploy key is configured, context admins can edit files and propose changes for review from the UI.

โ Bitbucket HTTPS authentication

Use a repository, workspace, or project access token. Give it Repositories: Read and Write and Pull requests: Read and Write, then set only NAO_CONTEXT_GIT_TOKEN.

An Atlassian API token or legacy app password can instead be embedded in the URL: https://<email-or-username>:<token>@bitbucket.org/<workspace>/<repo>.git. nao uses those credentials for both Git and pull-request API calls.

โ SSH deploy key authentication

For private repos, you can use a GitHub deploy keyโ  instead of a personal access token. Use the SSH URL ([email protected]:org/repo.git) and pass the private key contents via NAO_CONTEXT_GIT_SSH_KEY:

docker run -d \
  --name nao \
  -p 5005:5005 \
  -e OPENAI_API_KEY=sk-... \
  -e NAO_CONTEXT_SOURCE=git \
  -e [email protected]:your-org/your-nao-context.git \
  -e NAO_CONTEXT_GIT_SSH_KEY="$(cat ~/.ssh/nao_deploy_key)" \
  -e NAO_DEFAULT_PROJECT_PATH=/app/context \
  getnao/nao:latest

Enable Allow write access when creating a GitHub deploy key. It is off by default; without it, clones work but pushes fail. GitHub's host keys are pre-pinned, so SSH host verification is strict.

โ Key Features

  • ๐Ÿงฑ Open Context Builder โ€” Create file-system context for your agent
  • ๐Ÿณ๏ธ Data Stack Agnostic โ€” Works with any data warehouse, stack, LLM
  • ๐Ÿ”’ Self-hosted & Secure โ€” Use your own LLM keys for maximum data security
  • ๐Ÿค– Natural Language to Insights โ€” Ask questions in plain English
  • ๐Ÿ“Š Native Data Visualization โ€” Create visualizations directly in chat

โ License

Apache 2.0 - See LICENSEโ 

Tag summary

Content type

Image

Digest

sha256:4e02b9d59โ€ฆ

Size

1 GB

Last updated

2 days ago

docker pull getnao/nao