Nvidia Ontology Setup
NVIDIAOfficialCreated by NVIDIA
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured approach to deploying and maintaining the Auto Ontology runtime. It covers official Helm chart installations for Kubernetes, local Docker Compose setups, and developer-specific workflows. It also includes guidance on connecting MCP clients to existing deployments and troubleshooting common runtime issues, such as authentication failures, database connection problems, and ingestion errors.
What it does
- Guides users through official Helm chart deployment for Kubernetes.
- Provides instructions for running the full stack locally via Docker Compose.
- Supports developer-specific workflows for modifying the Auto Ontology codebase.
- Facilitates MCP client connection to existing Auto Ontology instances.
- Offers troubleshooting steps for common runtime, authentication, and ingestion issues.
- Explains how to manage database connections via the UI or environment variables.
When to use it
- When you need to perform a fresh installation of the Auto Ontology runtime.
- When you need to troubleshoot connectivity, authentication, or ingestion failures.
- When you are a developer looking to set up a local environment to modify the platform.
- When you need to connect an MCP client to an already running Auto Ontology deployment.
Advantages
- Centralizes installation and troubleshooting procedures in one place.
- Provides clear distinctions between production (Helm) and local (Compose) deployment paths.
- Includes specific guidance for MCP integration and OAuth discovery.
- Reduces reliance on external documentation by providing built-in troubleshooting steps.
Usage examples
- “How do I install Auto Ontology on Kubernetes?”
- The agent will guide you through using the official Helm chart, including setting up the required values file for secrets and configuration.
- “My Auto Ontology ingestion is failing, what should I check?”
- The agent will direct you to verify your NVIDIA NIM key, check database connection strings, and review the ingestion service logs.
- “How do I connect an MCP client to my existing Auto Ontology instance?”
- The agent will explain how to point the MCP client to your web app URL and verify OAuth discovery before connecting.
- “I am a developer, how do I set up the environment to work on the code?”
- The agent will provide instructions for using the developer setup scripts and configuring the local environment for frontend and backend development.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/nvidia-ontology-setup/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip nvidia-ontology-setup.zip -d .agents/skills
Documentation by NVIDIA
<!-- SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0 -->
Auto Ontology setup
Purpose
Bring up the current Auto Ontology implementation, troubleshoot it, or connect an agent
to an instance that is already running. Do not invent a second installer:
the official installation is the Helm chart in repository-root DEPLOYMENT.md;
Docker Compose runs the same stack on one machine. dev_tools/setup_env.sh is a
developer tool, not an installer. Typed setup, connection, ingestion,
compilation, and readiness artifacts are in
runtime-contract.yaml.
On failure, read troubleshooting.md instead of searching the web.
Instructions
Required questions
Ask these if not already clear. Do not guess a default and emit a command.
Target — Helm on Kubernetes (the official install, and the default recommendation), Docker Compose on one machine, a developer workflow (
--dev/--ds, only when changing Auto Ontology itself), or "Auto Ontology is already up, I only need MCP"?NVIDIA NIM key — is
DEFAULT_MODELS_API_KEY(Helm:defaultModelsApiKey) available? Chat and ingest need it.Admin account — the email and password for the bootstrap admin. Self-service sign-up is disabled, so this is the only way to sign in.
Source database — a connection string (
CONNECTION_STRINGS/connectionStrings), or will connections be added in the UI?Helm only — which chart version, and the URL users will browse to (
appUrl).Compose only — is host
5432free?POSTGRES_PORTonly remaps the host side; containers still use 5432 internally.
Never ask the user to paste secrets into the conversation, and never put them
in command arguments. Have the user write them into a values file or .env.
Install with Helm (official)
Releases are published to the public NGC nvidia org (chart and images). Follow
DEPLOYMENT.md with the version the user named:
The user creates a values file in an editor (not on the command line, so values stay out of shell history and process arguments), readable only by them, and out of git:
# auto-ontology-values.yaml
defaultModelsApiKey: <API-KEY>
postgresPassword: <POSTGRES-PASSWORD>
adminEmail: <ADMIN-EMAIL>
adminPassword: <ADMIN-PASSWORD>
connectionStrings: <CONNECTION-STRINGS> # optional; or add connections in the UIhelm fetch https://helm.ngc.nvidia.com/nvidia/charts/auto-ontology-<VERSION>.tgz
helm install auto-ontology auto-ontology-<VERSION>.tgz -f auto-ontology-values.yaml
kubectl port-forward svc/frontend 3000:3000adminEmailandadminPasswordare required; the install fails without them.appUrlmust be the exact origin users browse to. The default (http://localhost:3000) only fits the port-forward above; set it for a NodePort, ingress, or HTTPS origin.authSecretis generated on first install and kept across upgrades; set it only to share one value across environments.If the chart fetch returns 404, that version is not published yet. Ask the user; do not fall back to the internal staging registry.
This skill does not cover Astra GitOps.
Local: Docker Compose
For running the whole stack on one machine. In the repository root, the user
copies .env.example to .env and fills in AUTH_SECRET, APP_URL,
AUTO_ONTOLOGY_ADMIN_EMAIL, and AUTO_ONTOLOGY_ADMIN_PASSWORD (all required).
Then:
docker compose up -d --buildAUTH_SECRET and APP_URL are required. Without them every page fails with a
Better Auth "default secret" error. Fill DEFAULT_MODELS_API_KEY and a
CONNECTION_STRINGS value (or plan to add connections in the UI). The full
variable list is .env.example.
This builds auto-ontology and auto-ontology-frontend, starts Postgres,
pgAdmin, and the ingestion service, runs two one-shot migrate jobs, and starts
the app:
auto-ontology-migrateapplies Alembic migrations to the backend'spublicschema (catalog and semantic tier). The backend waits for it.frontend-migratesyncs the Prismafrontendschema: users, sessions, API keys, and the OAuth tables MCP sign-in uses. The frontend waits for it.
If sign-in or MCP login fails, check both with docker compose ps -a and
docker compose logs frontend-migrate. Read the frontend-migrate log even
when it exited 0: it has finished without an error before while leaving MCP
login broken.
| Service | URL |
|---|---|
| UI | http://localhost:3000 |
| FastAPI (internal) | http://localhost:3001 |
| Ingestion | http://localhost:3002 |
| pgAdmin | http://localhost:5050 |
| Postgres | localhost:$POSTGRES_PORT (from .env, default 5432) |
Developer workflows (--dev, --ds)
Only for people changing Auto Ontology itself; these are not installations.
dev_tools/setup_env.sh starts part of the stack in Docker and leaves the rest
to run from the checkout. Both need the .env above plus:
cd frontend && pnpm install # Next.js
# from repo root:
uv sync--dev runs infra only (Postgres, pgAdmin, ingestion); you run Next.js and FastAPI:
./dev_tools/setup_env.sh --dev
cd frontend && pnpm dev
# repo root:
uv run uvicorn auto_ontology.server.__main__:create_app --factory --reload --host 127.0.0.1 --port 3001The app factory is create_app() in auto_ontology/server/__main__.py. There is no
auto_ontology/server/main.py. uv run python -m auto_ontology.server is the same app without
reload (what the container runs).
--ds runs the frontend in Docker and FastAPI on the host:
./dev_tools/setup_env.sh --ds
uv run python -m auto_ontology.serverThe frontend image bakes PYTHON_API_URL=http://host.docker.internal:3001, so
the API must accept connections from the container, not just loopback.
python -m auto_ontology.server binds 0.0.0.0:3001 (what setup_env.sh --ds
prints); a --host 127.0.0.1 uvicorn is unreachable from the container on
Linux. Because FastAPI trusts x-auto-ontology-user-id, keep port 3001
firewalled from other machines. On native Linux Docker you may need
--add-host=host.docker.internal:host-gateway.
Limitations
This skill uses the repository's existing Helm chart and Compose file and does not cover Astra GitOps, change semantic definitions, or treat partial Vault configuration as secret storage. Ask before destructive volume deletion.
Auto Ontology is already up — MCP only
Do not reinstall. Point AUTO_ONTOLOGY_API_URL at the web app (Compose UI is
:3000, not FastAPI :3001):
AUTO_ONTOLOGY_API_URL=http://localhost:3000 uvx --from "git+https://github.com/NVIDIA/auto-ontology.git#subdirectory=mcp" auto-ontology-mcpUntil the package is on PyPI this needs GitHub credentials that can read
NVIDIA/auto-ontology. Client config uses the MCP server URL with a /mcp suffix.
People sign in through Auto Ontology; do not put a token on the MCP server.
Confirm the deployment is new enough to be an authorization server:
curl -s -o /dev/null -w '%{http_code}\n' "$AUTO_ONTOLOGY_API_URL/.well-known/oauth-authorization-server"200 is required. Anything else: run the frontend from the checkout
(pnpm dev) and point AUTO_ONTOLOGY_API_URL at that port.
Examples
Kubernetes: install the published Helm chart from
DEPLOYMENT.mdwith the admin account andappUrlset.One machine:
docker compose up -d --buildafter filling.env.Existing deployment: do not reinstall; configure
AUTO_ONTOLOGY_API_URLand verify OAuth discovery before connecting the MCP client.
Connect a source
Connections come from one of two places, and only one is used:
UI-managed (Settings → Connections, or the API below). When any exist,
CONNECTION_STRINGSis ignored.CONNECTION_STRINGSin.envis a fallback used only when there are no UI-managed connections.GET /api/connections/sourcereports whether it is set; it cannot carry schema or table filters.
To add a UI-managed connection (permission connection:manage):
POST /api/connections/testvalidates credentials and returns the schemas for the allowlist. A 422 carries the driver's error; fix it before creating.POST /api/connectionsstores the connection. The 201 only means it was saved: ingestion is triggered best-effort and may fail or still be running.Verify it landed:
GET /api/datasources/dbs(catalog:read) lists the database with the expected tables,GET /api/semantic-compilation/statusreports progress, and MCPcheck_readinessreports no blockers.
Scope is set per connection: a schema allowlist, plus table_allow_regex /
table_deny_regex applied at catalog extraction (deny wins; unqualified,
case-sensitive names). Env connections have neither. The full table-level scope
guarantee is still open in
#255, so if particular tables must never be
catalogued, sampled, or embedded, say that this is not yet enforceable
end-to-end rather than implying it is.
Verify
UI loads at http://localhost:3000 (or the deployed
APP_URL/ HelmappUrl) and shows the left navigation. Missing nav → stale cookie; see troubleshooting.md.GET /api/semantic-compilation/statuson the web origin authenticates (cookie,x-api-key, or SSO bearer) and returns JSON.calculated: falsemeans the glossary is empty — ingest / compile, do not keep retrying chat.MCP: OAuth discovery returns 200 (above). Then
check_readinessonce a client is connected.
Stop
helm uninstall auto-ontology # Helm; also deletes the postgres-data PVC and its data
docker compose down # Compose; keep volumes
docker compose down -v # Compose; wipe Postgres / pgAdmin dataBoth helm uninstall and docker compose down -v destroy data; ask first.
Troubleshooting
Use troubleshooting.md for stale sessions, model-key failures, embedding mismatches, port conflicts, and partial Vault configuration. Redact secrets before sharing command output as evidence.
See also
nvidia-ontology-query— call Auto Ontology once it is runningnvidia-ontology-management— edit the semantic layerCLAUDE.md— maintain Auto Ontology itself
Files
- ATTRIBUTION.mdAdded by AutoGineer921 B
- BENCHMARK.md9.0 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md10.8 KiB
- assets/runtime-contract.yaml2.2 KiB
- evals/evals.json9.1 KiB
- references/troubleshooting.md4.5 KiB
- skill-card.md4.8 KiB
- skill.oms.sig5.0 KiB
evals/evals.json
{
"skill_name": "nvidia-ontology-setup",
"evals": [
{
"id": "setup-eval-001-underspecified",
"prompt": "Use the nvidia-ontology-setup skill to handle this request safely: Install Auto Ontology for me.",
"expected_output": "The request is underspecified, so the agent asks the required questions before running a command: target (Helm on Kubernetes as the official install, Docker Compose on one machine, a developer --dev/--ds workflow, or MCP-only against an existing instance), whether DEFAULT_MODELS_API_KEY is available, the bootstrap admin account, source database / CONNECTION_STRINGS vs UI connections, and for Compose whether host port 5432 is free. It does not guess a target and run it silently.",
"assertions": [
"Loads nvidia-ontology-setup before choosing an installation path",
"Asks which target is wanted \u2014 Helm, Compose, a developer workflow, or MCP-only \u2014 and presents Helm as the official install",
"Asks about DEFAULT_MODELS_API_KEY / NIM credentials",
"Does not silently assume defaults and emit a single install command"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-002-use-existing-scripts",
"prompt": "I cloned NVIDIA/auto-ontology and filled in .env. Host port 5432 is free. How do I start the full local stack?",
"expected_output": "The agent uses the existing Compose file from the repository root: docker compose up -d --build after .env is filled. It does not write a new docker-compose file or a custom install script, and it does not present dev_tools/setup_env.sh as the installer.",
"assertions": [
"Uses docker compose up -d --build from the repo root",
"Does not invent a second installer",
"Does not treat the developer script dev_tools/setup_env.sh as the installation"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-003-auth-secret-cookies",
"prompt": "After I restarted docker compose the Auto Ontology UI at localhost:3000 loads but the left navigation is missing.",
"expected_output": "Stale Better Auth session cookie, typically after AUTH_SECRET changed or the database was reset. Clear site data for localhost:3000 or delete better-auth.session_token and sign in again. This is not a compose or frontend-build failure.",
"assertions": [
"Identifies a stale Better Auth cookie / AUTH_SECRET change",
"Tells the user to clear site data or better-auth.session_token and sign in again",
"Does not rebuild images as the first fix"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-004-postgres-port-host-only",
"prompt": "5432 is taken on my laptop so I set POSTGRES_PORT=15432 in .env. The Auto Ontology container still talks to Postgres on 5432. Is that a bug?",
"expected_output": "Not a bug. POSTGRES_PORT only changes the host-side port mapping. Containers always reach Postgres on 5432 on the compose network. Host access becomes localhost:15432.",
"assertions": [
"States that POSTGRES_PORT is host-side only",
"States that containers still use 5432 internally",
"Does not tell the user to change the container Postgres port"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-005-mcp-already-up",
"prompt": "Auto Ontology is already running at https://ontology.example.com. I only need my coding agent to query it.",
"expected_output": "Do not reinstall. Point AUTO_ONTOLOGY_API_URL at the web app and run auto-ontology-mcp (uvx from the mcp subdirectory). Confirm GET $AUTO_ONTOLOGY_API_URL/.well-known/oauth-authorization-server returns 200. Client config uses the /mcp suffix; the user signs in; no token on the MCP server.",
"assertions": [
"Does not run docker compose or setup_env.sh",
"Sets AUTO_ONTOLOGY_API_URL to the web app URL, not FastAPI :3001",
"Checks OAuth discovery returns 200",
"Does not configure a server-side API token on auto-ontology-mcp"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-006-vault-partial",
"prompt": "I set VAULT_ADDR and VAULT_NAMESPACE but left ROLE_ID empty. Are my UI-added connection passwords in Vault?",
"expected_output": "No. Vault is enabled only when VAULT_ADDR, VAULT_NAMESPACE, VAULT_ROLE_ID, and VAULT_SECRET_ID are all set. Partial configuration is ignored with a warning and credentials stay plaintext on the catalog row.",
"assertions": [
"Requires all four Vault variables",
"States that partial config falls back to plaintext",
"Does not claim passwords are in Vault"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-007-embed-triplet-mismatch",
"prompt": "Ingest succeeded but every question comes back as if there were no matching data. EMBED_MODEL at query time is not the one I used at ingest.",
"expected_output": "EMBED_ENDPOINT and EMBED_MODEL must be identical for ingest and query. A mismatch puts stored vectors and query vectors in different spaces. Align the embed triplet and re-ingest; this is not a chat-prompt problem.",
"assertions": [
"States embed endpoint and model must match between ingest and query",
"Recommends aligning the embed triplet rather than rewriting the question"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-008-connect-source-workflow",
"prompt": "Auto Ontology is running and I'm signed in as an admin. Add our Postgres warehouse as a source and tell me when it's ready to answer questions.",
"expected_output": "Test first with POST /api/connections/test (connection:manage), fix any 422 before creating, then POST /api/connections. A 201 only means the connection was saved; ingestion is triggered best-effort, so do not report readiness yet. Verify the database and expected tables appear in GET /api/datasources/dbs, check semantic-compilation status, and run MCP check_readiness before saying it can answer questions.",
"assertions": [
"Tests the connection before creating it",
"Does not treat the 201 from POST /api/connections as proof that ingestion finished",
"Verifies the catalog, semantic compilation, and check_readiness before claiming readiness"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-009-env-vs-ui-connections",
"prompt": "CONNECTION_STRINGS in .env points at our warehouse, but after I added a different database in Settings -> Connections the warehouse disappeared from answers. Why? Also, can I exclude our telemetry tables from the warehouse?",
"expected_output": "CONNECTION_STRINGS is only a fallback used when there are no UI-managed connections; once a UI connection exists, the env connections are ignored. Add the warehouse as a UI connection too. Table exclusion is only available on UI-managed connections (table_allow_regex / table_deny_regex at catalog extraction); env connections cannot carry filters, and the full table-level guarantee is still tracked in #255, so do not promise that excluded tables can never be catalogued, sampled, or embedded.",
"assertions": [
"Explains that CONNECTION_STRINGS is ignored once any UI-managed connection exists",
"Recommends adding the warehouse as a UI-managed connection",
"States table filters exist only on UI-managed connections and does not overstate the guarantee"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
},
{
"id": "setup-eval-010-helm-install",
"prompt": "Install Auto Ontology 1.0.0 on our Kubernetes cluster. I have kubectl and helm access and a NIM API key.",
"expected_output": "Use the published Helm chart from DEPLOYMENT.md: helm fetch https://helm.ngc.nvidia.com/nvidia/charts/auto-ontology-1.0.0.tgz, then helm install -f with a values file the user creates containing defaultModelsApiKey, postgresPassword, adminEmail and adminPassword (required, or the install fails), and optionally connectionStrings; secrets are not passed with --set. Set appUrl to the origin users will browse to unless they use kubectl port-forward svc/frontend 3000:3000. The user sets the secret values themselves rather than pasting them into the conversation. Do not use dev_tools/setup_env.sh or build images.",
"assertions": [
"Uses the published Helm chart rather than dev_tools/setup_env.sh or docker compose",
"Includes adminEmail and adminPassword in the install",
"Passes secrets through a values file rather than --set arguments",
"Addresses appUrl for the origin users will browse to",
"Does not ask the user to paste secrets into the conversation"
],
"expected_skill": "nvidia-ontology-setup",
"expected_script": null
}
]
}
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server, Needs network access, Needs an API key, Needs a command-line tool, Needs Python, Needs Node.js
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- NVIDIA
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/nvidia-ontology-setup · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by NVIDIA or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download nvidia-ontology-setup.zip