๐พ nao is an open source analytics agent and a chat interface
100K+
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โ
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:4e02b9d59โฆ
Size
1 GB
Last updated
2 days ago
docker pull getnao/nao