Sign inSign up

getnao/nao

By getnao

โ€ขUpdated about 3 hours 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 agentic BI builder

Your data team builds the analytics agent and owns the context layer. Everyone in the company builds on data.

Build your own agentic BI with nao. Build your data context layer with the nao-core CLI (or let your coding agent do it with the nao skills), then deploy this image so anyone in the company can chat with your data and build live dashboards, data apps and slides.

๐ŸŒ 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:78d20f9b6โ€ฆ

Size

1.1 GB

Last updated

about 3 hours ago

docker pull getnao/nao