๐พ nao is an open source analytics agent and a chat interface
100K+
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โ
latest - Latest stable releasecommit-hash - Specific commit hash tagslinux/amd64docker run -d \
--name nao \
-p 5005:5005 \
-e OPENAI_API_KEY=sk-... \
-v /path/to/your/project:/app/project \
getnao/nao:latest
| Variable | Required | Description |
|---|---|---|
NAO_DEFAULT_PROJECT_PATH | Yes | Path to your nao project (default: /app/example) |
OPENAI_API_KEY | No* | OpenAI API key |
ANTHROPIC_API_KEY | No* | Anthropic API key |
BETTER_AUTH_SECRET | No | Secret key for authentication |
DB_URI | No | PostgreSQL connection string (uses SQLite if not set) |
SERVER_PORT | No | Port to listen to |
NAO_CONTEXT_SOURCE | No | local (default), git, or api |
NAO_CONTEXT_GIT_URL | git only | HTTPS or SSH URL of the repo to clone |
NAO_CONTEXT_GIT_BRANCH | No | Branch to clone (default: main) |
NAO_CONTEXT_GIT_TOKEN | No | Access token for private HTTPS repos |
NAO_CONTEXT_GIT_PLATFORM | No | Platform override for self-hosted GitHub, GitLab, or Bitbucket hosts |
NAO_CONTEXT_GIT_SSH_KEY | No | Raw SSH private key contents (deploy key), for git@โฆ/ssh://โฆ URLs |
NAO_CONTEXT_GIT_SUBPATH | No | Subfolder 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.
| Port | Description |
|---|---|
5005 | Web UI and API, can be set via $SERVER_PORT environment variable |
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 -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).
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.
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.
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.
Apache 2.0 - See LICENSEโ
Content type
Image
Digest
sha256:78d20f9b6โฆ
Size
1.1 GB
Last updated
about 3 hours ago
docker pull getnao/nao