<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>github.com/NVIDIA</title>
  <link>https://aggr.aymericbeaumet.com/sources/github.com/NVIDIA/</link>
  <description>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</description>
  <language>en</language>
  <atom:link href="https://aggr.aymericbeaumet.com/sources/github.com/NVIDIA/rss.xml" rel="self" type="application/rss+xml"/>
  <lastBuildDate>Tue, 3 Nov 2026 07:04:50 +0000</lastBuildDate>
  <generator>aggr</generator>
  <item>
    <title>Nvidia – open-source auto-ontology</title>
    <link>https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-03-nvidia-open-source-auto-ontology/</link>
    <guid isPermaLink="false">urn:aggr:item:a0c478a513826555e8d1705bf3598ae367ace478</guid>
    <atom:link href="https://github.com/NVIDIA/auto-ontology" rel="via" type="text/html"/>
    <pubDate>Tue, 3 Nov 2026 07:04:50 +0000</pubDate>
    <dc:creator>campervans</dc:creator>
    <description>Agents can retrieve documents and query databases, but reliability gates agentic analytics: a revenue metric answered faster is worth nothing if the number is wrong. Agents need a context layer that tells them where data lives, what it…</description>
    <content:encoded>&lt;p&gt;Agents can retrieve documents and query databases, but reliability gates agentic analytics: a revenue metric answered faster is worth nothing if the number is wrong. Agents need a context layer that tells them where data lives, what it means, whether to use it, how to use it, where it came from, and what is similar. NVIDIA Auto Ontology is an open library that builds that layer from enterprise metadata, reconciles definitions across systems, and exposes it to any agent harness through MCP, CLI, and API. It complements the semantic models customers already own.&lt;/p&gt;
&lt;p&gt;It enables developers to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover: generate enterprise ontologies from metadata; connect existing ontologies and semantic models; build AI-ready knowledge graphs.&lt;/li&gt;
&lt;li&gt;Ground: give agents trusted business meaning for metrics, entities, and relationships; reconcile inconsistent definitions across systems.&lt;/li&gt;
&lt;li&gt;Validate: check generated queries against certified definitions and lineage; return provenance with every answer.&lt;/li&gt;
&lt;li&gt;Expose: serve context to any agent harness through MCP, CLI, and API. Learn: fold certified corrections and usage back into the ontology, so shared context improves with every question.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Benchmarks&lt;/h2&gt;
&lt;p&gt;To run a text-to-SQL benchmark such as BIRD, refer to the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/ontology-sql-eval/&quot;&gt;ontology SQL evaluation repository&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Licensing &amp;amp; contributions.&lt;/strong&gt; Auto Ontology is distributed under the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/LICENSE&quot;&gt;Apache License 2.0&lt;/a&gt;. Third-party open-source components bundled, linked, or otherwise used by this project are listed in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/THIRD_PARTY_NOTICES.md&quot;&gt;&lt;code&gt;THIRD_PARTY_NOTICES.md&lt;/code&gt;&lt;/a&gt;. &lt;strong&gt;This project is currently not accepting external contributions.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/docs/assets/arch.png&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://github.com/NVIDIA/auto-ontology/raw/main/docs/assets/arch.png&quot; alt=&quot;Auto Ontology Architecture&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Key Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Natural-language querying&lt;/strong&gt; of structured data — questions are translated to SQL and executed against connected databases, powered by NVIDIA NIM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semantic catalog / ontology layer&lt;/strong&gt; over relational sources, stored in Postgres alongside the catalog it describes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication &amp;amp; RBAC&lt;/strong&gt; —using &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/better-auth/better-auth&quot;&gt;Better Auth&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt; for chat, analysis, data catalog, analytics, and settings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible deployment&lt;/strong&gt; — Helm chart for Kubernetes or Docker Compose for a local stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Software Components&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Default port&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Next.js 16 (React 19, TypeScript, Tailwind CSS 4), Better Auth, Prisma&lt;/td&gt;
&lt;td&gt;Web UI, authentication, API gateway&lt;/td&gt;
&lt;td&gt;3000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;FastAPI (Python 3.12+), LangChain&lt;/td&gt;
&lt;td&gt;Chat / NL-to-SQL, catalog, datasource APIs&lt;/td&gt;
&lt;td&gt;3001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ingestion worker&lt;/td&gt;
&lt;td&gt;FastAPI (Python 3.12+)&lt;/td&gt;
&lt;td&gt;Ingests tabular data and writes embeddings&lt;/td&gt;
&lt;td&gt;3002&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Postgres + pgvector&lt;/td&gt;
&lt;td&gt;Relational Database&lt;/td&gt;
&lt;td&gt;App metadata, the catalog and ontology, vector store&lt;/td&gt;
&lt;td&gt;5432&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HashiCorp Vault&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Secure storage of connection credentials&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;NVIDIA NIM&lt;/h3&gt;
&lt;p&gt;Auto Ontology uses NVIDIA NIM endpoints for inference — either the hosted &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://build.nvidia.com&quot;&gt;NVIDIA API catalog&lt;/a&gt; (&lt;code&gt;integrate.api.nvidia.com&lt;/code&gt;) or self-hosted NIMs. The defaults in &lt;code&gt;.env.example&lt;/code&gt; are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM:&lt;/strong&gt; &lt;code&gt;nvidia/nemotron-3-nano-30b-a3b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embeddings:&lt;/strong&gt; &lt;code&gt;nvidia/nemotron-3-embed-1b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reranking:&lt;/strong&gt; &lt;code&gt;nvidia/llama-nemotron-rerank-vl-1b-v2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The endpoints and models are configured via the &lt;code&gt;DEFAULT_MODELS_ENDPOINT&lt;/code&gt;, &lt;code&gt;DEFAULT_MODELS_MODEL&lt;/code&gt;, &lt;code&gt;EMBED_ENDPOINT&lt;/code&gt;, and &lt;code&gt;EMBED_MODEL&lt;/code&gt; environment variables and require a &lt;code&gt;DEFAULT_MODELS_API_KEY&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;Model triplets&lt;/h4&gt;
&lt;p&gt;Each model role is configured by a &lt;strong&gt;triplet&lt;/strong&gt; of environment variables — &lt;code&gt;&amp;lt;PREFIX&amp;gt;_ENDPOINT&lt;/code&gt; (URL), &lt;code&gt;&amp;lt;PREFIX&amp;gt;_API_KEY&lt;/code&gt;, and &lt;code&gt;&amp;lt;PREFIX&amp;gt;_MODEL&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Prefix&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DEFAULT_MODELS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shared default; every field below falls back to it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;REASONING&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Main chat / NL-to-SQL model.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NON_REASONING&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lighter model used for entity extraction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;EMBED&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Text-embedding model (must match between ingest and query).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;RERANK&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reranker used by the retrieval flow.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You can set a full triplet, only some of its fields, or none at all — any field left unset falls back to the matching &lt;code&gt;DEFAULT_MODELS_&amp;lt;FIELD&amp;gt;&lt;/code&gt;. So the simplest setup is to fill in &lt;code&gt;DEFAULT_MODELS_*&lt;/code&gt; and override per-triplet fields only where they differ (e.g. &lt;code&gt;EMBED_MODEL&lt;/code&gt;, &lt;code&gt;NON_REASONING_MODEL&lt;/code&gt;). &lt;code&gt;*_API_KEY&lt;/code&gt; also falls back to the legacy &lt;code&gt;NVIDIA_API_KEY&lt;/code&gt; for backward compatibility.&lt;/p&gt;
&lt;h2&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; with &lt;strong&gt;Docker Compose v2&lt;/strong&gt; (e.g. Docker Desktop on macOS/Windows, Docker Engine on Linux) for the local stack. For Kubernetes deployments see &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/DEPLOYMENT.md&quot;&gt;&lt;code&gt;DEPLOYMENT.md&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;NVIDIA API key&lt;/strong&gt; (&lt;code&gt;nvapi-...&lt;/code&gt;) for NVIDIA NIM (chat and ingestion) from the NVIDIA API catalog at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://build.nvidia.com&quot;&gt;https://build.nvidia.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Connection details for the source database(s) you want to query (Databricks, Postgres, Snowflake, or DuckDB).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To deploy Auto Ontology on a Kubernetes cluster, see &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/DEPLOYMENT.md&quot;&gt;&lt;code&gt;DEPLOYMENT.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Local (Docker Compose)&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone the repository:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;git&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; clone &lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell&quot;&gt;&amp;lt;&lt;/span&gt;repo-url&lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell&quot;&gt;&amp;gt;&lt;/span&gt; auto_ontology&lt;/span&gt; &lt;span class=&quot;syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-support syntax-function syntax-cd syntax-shell&quot;&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; auto_ontology&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create your environment file (.env) from the template and fill in the values (Postgres credentials, &lt;code&gt;DEFAULT_MODELS_API_KEY&lt;/code&gt;, &lt;code&gt;CONNECTION_STRINGS&lt;/code&gt;, etc.). See &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/.env.example&quot;&gt;&lt;code&gt;.env.example&lt;/code&gt;&lt;/a&gt; for the full list of variables:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;cp&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; .env.example .env&lt;/span&gt;
&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell&quot;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt; edit .env&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;AUTH_SECRET&lt;/code&gt; and &lt;code&gt;APP_URL&lt;/code&gt; are &lt;strong&gt;required&lt;/strong&gt; — without them every page fails with a Better Auth &amp;quot;default secret&amp;quot; error.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POSTGRES_PORT&lt;/code&gt; only changes the &lt;strong&gt;host-side&lt;/strong&gt; port mapping (set it if 5432 is already taken on your machine); containers always reach Postgres on the internal network port.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build the images and start the stack:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;docker&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; compose up&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; -&lt;/span&gt;d&lt;/span&gt;&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;build&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This builds the backend (&lt;code&gt;auto_ontology&lt;/code&gt;) and frontend (&lt;code&gt;auto-ontology-frontend&lt;/code&gt;) images, brings up Postgres and pgAdmin, runs the one-shot &lt;code&gt;frontend-migrate&lt;/code&gt; job to sync the database schema, and starts the app (backend, ingestion service, and frontend).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open the UI at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt; (the backend API is on &lt;code&gt;:3001&lt;/code&gt;, pgAdmin on &lt;code&gt;:5050&lt;/code&gt;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Troubleshooting:&lt;/strong&gt; if the UI loads without the left navigation panel (or otherwise looks broken after a restart), your browser is holding a stale session cookie — this happens when &lt;code&gt;AUTH_SECRET&lt;/code&gt; changes or the database is reset. Clear the site data for &lt;code&gt;localhost:3000&lt;/code&gt; (or delete the &lt;code&gt;better-auth.session_token&lt;/code&gt; cookie) and sign in again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Connections Management&lt;/h2&gt;
&lt;p&gt;Auto Ontology resolves the source databases it connects to from two sources:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Added through the UI&lt;/strong&gt; — connections created from within the app. With this option the connection credentials are &lt;strong&gt;stored in plaintext in Postgres unless Vault is configured&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Without Vault:&lt;/strong&gt; the full connection object (including the password) is JSON-serialized and stored, unencrypted, on the catalog&#39;s database row.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;With Vault:&lt;/strong&gt; the credentials are written to Vault, keyed by the database name, and the catalog row stores no credentials (the database name is the lookup key — there is no separate reference field).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vault is enabled only when all of &lt;code&gt;VAULT_ADDR&lt;/code&gt;, &lt;code&gt;VAULT_NAMESPACE&lt;/code&gt;, &lt;code&gt;VAULT_ROLE_ID&lt;/code&gt;, and &lt;code&gt;VAULT_SECRET_ID&lt;/code&gt; are set (&lt;code&gt;VAULT_AUTH_MOUNT&lt;/code&gt; and &lt;code&gt;VAULT_KV_MOUNT&lt;/code&gt; are optional overrides). It is off by default; a partial configuration is ignored with a warning and falls back to plaintext storage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;CONNECTION_STRINGS&lt;/code&gt; environment variable&lt;/strong&gt; — a comma-separated list of connection strings supplied at deploy time (e.g. the Helm &lt;code&gt;--set connectionStrings=&amp;lt;CONNECTION-STRINGS&amp;gt;&lt;/code&gt; flag). This is a fallback: it is used only when there are no UI-added connections.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Authentication&lt;/h2&gt;
&lt;p&gt;Auto Ontology Supports SSO for authentication. The Redirect URI should be configured in the IdP as: APP_URL/api/auth/sso/callback&lt;/p&gt;
&lt;h3&gt;API tokens (scripting)&lt;/h3&gt;
&lt;p&gt;A browser signs in and gets a session cookie, which a script cannot obtain. For scripts, notebooks, and scheduled jobs, mint an &lt;strong&gt;API token&lt;/strong&gt; instead:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the user menu (top right) → &lt;strong&gt;API Tokens&lt;/strong&gt; → &lt;strong&gt;New token&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Name it, optionally pick an expiry (default: never), and &lt;strong&gt;copy the token&lt;/strong&gt;. Auto Ontology stores only a SHA-256 hash of it, so it is shown exactly once. Losing it means minting a new one.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Send it as &lt;code&gt;x-api-key&lt;/code&gt; on any &lt;code&gt;/api/...&lt;/code&gt; call — &lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt; works too:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;curl&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; -&lt;/span&gt;H&lt;/span&gt; &lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell&quot;&gt;&amp;quot;&lt;/span&gt;x-api-key: &lt;span class=&quot;syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-variable syntax-shell&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;syntax-variable syntax-other syntax-readwrite syntax-shell&quot;&gt;AUTO_ONTOLOGY_API_TOKEN&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; https://auto_ontology.example.com/api/terms&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Python&quot;&gt;&lt;span class=&quot;syntax-source syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-statement syntax-import syntax-python&quot;&gt;&lt;span class=&quot;syntax-keyword syntax-control syntax-import syntax-python&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;os&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-statement syntax-import syntax-python&quot;&gt;&lt;span class=&quot;syntax-keyword syntax-control syntax-import syntax-python&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;requests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;session&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-python&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-function-call syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;requests&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-python&quot;&gt;Session&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-item-access syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;headers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-item-access syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-brackets syntax-begin syntax-python&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-item-access syntax-arguments syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;x-api-key&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-item-access syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-brackets syntax-end syntax-python&quot;&gt;]&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-python&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-item-access syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;environ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-item-access syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-brackets syntax-begin syntax-python&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-item-access syntax-arguments syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;AUTO_ONTOLOGY_API_TOKEN&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-item-access syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-brackets syntax-end syntax-python&quot;&gt;]&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;terms&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-python&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-function-call syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-python&quot;&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;https://auto_ontology.example.com/api/terms&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-python&quot;&gt;json&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;answer&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-python&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-function-call syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-generic-name syntax-python&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-python&quot;&gt;post&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-python&quot;&gt;
    &lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;https://auto_ontology.example.com/api/chat/completions&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-separator syntax-arguments syntax-python&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;syntax-variable syntax-parameter syntax-python&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-python&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-structure syntax-dictionary-or-set syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-dictionary-or-set syntax-begin syntax-python&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;question&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-separator syntax-key-value syntax-python&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-string syntax-python&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-python&quot;&gt;How many orders shipped last week?&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-python&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-dictionary-or-set syntax-end syntax-python&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-separator syntax-arguments syntax-python&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-python&quot;&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-accessor syntax-dot syntax-python&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-qualified-name syntax-python&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-python&quot;&gt;json&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Things worth knowing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A token acts as its owner.&lt;/strong&gt; It carries no permissions of its own — every call is authorized against the owner&#39;s role, exactly as it would be in the browser. A viewer&#39;s token cannot do admin things.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The whole API surface accepts it.&lt;/strong&gt; Authentication is resolved in one place (&lt;code&gt;frontend/auth/resolve-user.ts&lt;/code&gt;) for every route, so any endpoint in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/docs/openapi/auto-ontology-api.json&quot;&gt;&lt;code&gt;docs/openapi/auto-ontology-api.json&lt;/code&gt;&lt;/a&gt; that is not &lt;code&gt;withPublic&lt;/code&gt; works with a token.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revocation is immediate.&lt;/strong&gt; Delete the token in the UI, or delete/ban the owning user, and the next request with it gets a 401.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tokens cannot manage tokens.&lt;/strong&gt; Creating and revoking requires a signed-in session, so a leaked token cannot issue itself successors.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Agent API conversations&lt;/h2&gt;
&lt;p&gt;Public clients call the authenticated Next.js gateway at &lt;code&gt;POST /api/chat/completions&lt;/code&gt;. The response is an SSE stream containing &lt;code&gt;step&lt;/code&gt;, &lt;code&gt;result&lt;/code&gt;, or &lt;code&gt;error&lt;/code&gt; events, followed by &lt;code&gt;[DONE]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;conversation_id&lt;/code&gt; is optional:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Omit it for a stateless, one-shot request.&lt;/li&gt;
&lt;li&gt;Supply a client-generated UUID to create or continue a conversation.&lt;/li&gt;
&lt;li&gt;Reuse the same UUID for every turn in the thread. Wait for &lt;code&gt;[DONE]&lt;/code&gt; before sending the next turn; overlapping requests for one conversation return &lt;code&gt;409 Conversation in progress&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;JSON&quot;&gt;&lt;span class=&quot;syntax-source syntax-json&quot;&gt;&lt;span class=&quot;syntax-meta syntax-structure syntax-dictionary syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;question&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;What about last month?&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json&quot;&gt;&lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;conversation_id&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;syntax-string syntax-quoted syntax-double syntax-json&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;d61d8aa3-d496-4fa7-97ce-4f831c162e7f&lt;span class=&quot;syntax-punctuation syntax-definition syntax-string syntax-end syntax-json&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For conversational requests, FastAPI loads up to the five most recent completed turns (bounded to 12,000 characters) and rewrites contextual input such as “What about August?” into a standalone question before running the existing text-to-SQL graph. Independent questions are passed through unchanged. Internal agent thoughts, chart payloads, errors, and raw SQL result sets are not reused as context.&lt;/p&gt;
&lt;p&gt;Conversation history is scoped to the authenticated Auto Ontology user. Browser and service callers should use the Next.js gateway, which resolves the user and forwards the internal &lt;code&gt;x-auto-ontology-user-id&lt;/code&gt; header to FastAPI. The FastAPI port is a trusted internal service boundary: it must not be exposed publicly because that header is not independently verified by FastAPI. A direct FastAPI request without &lt;code&gt;conversation_id&lt;/code&gt; remains stateless; a direct request with &lt;code&gt;conversation_id&lt;/code&gt; requires the trusted identity header.&lt;/p&gt;
&lt;p&gt;The web UI manages the UUID automatically. An API-created conversation can be opened in the UI at &lt;code&gt;/chat?focus=&amp;lt;conversation_id&amp;gt;&lt;/code&gt; when it belongs to the signed-in user.&lt;/p&gt;
&lt;h2&gt;Agent skills&lt;/h2&gt;
&lt;p&gt;Coding agents: start at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/AGENTS.md&quot;&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt;. Skills live in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/skills&quot;&gt;&lt;code&gt;skills/&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;nvidia-ontology-setup&lt;/code&gt;, &lt;code&gt;nvidia-ontology-management&lt;/code&gt;, &lt;code&gt;nvidia-ontology-query&lt;/code&gt;). Maintainers keep using &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/CLAUDE.md&quot;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;MCP server&lt;/h2&gt;
&lt;p&gt;Agent harnesses such as Cursor and Claude Desktop can query your data through Auto Ontology&#39;s &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://modelcontextprotocol.io&quot;&gt;MCP&lt;/a&gt; server. See &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/mcp&quot;&gt;&lt;code&gt;mcp/&lt;/code&gt;&lt;/a&gt; to run it and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/docs/mcp.md&quot;&gt;&lt;code&gt;docs/mcp.md&lt;/code&gt;&lt;/a&gt; for the details.&lt;/p&gt;
&lt;h2&gt;License&lt;/h2&gt;
&lt;p&gt;Auto Ontology is licensed under the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/LICENSE&quot;&gt;Apache License, Version 2.0&lt;/a&gt;. SPDX identifier: &lt;code&gt;Apache-2.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Each NVIDIA-authored source file in this repository carries an SPDX header of the form:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION &amp;amp; AFFILIATES.
All rights reserved.
SPDX-License-Identifier: Apache-2.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Third-party open-source components used by Auto Ontology are enumerated, with their upstream licenses and project URLs, in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/THIRD_PARTY_NOTICES.md&quot;&gt;&lt;code&gt;THIRD_PARTY_NOTICES.md&lt;/code&gt;&lt;/a&gt;. Components added by the container images are listed separately in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/CONTAINER_THIRD_PARTY_NOTICES.md&quot;&gt;&lt;code&gt;CONTAINER_THIRD_PARTY_NOTICES.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Notice and Disclaimer&lt;/h2&gt;
&lt;p&gt;NOTICE AND DISCLAIMER: This software automatically retrieves, accesses or interacts with external materials. Those retrieved materials are not distributed with this software and are governed solely by separate terms, conditions and licenses. You are solely responsible for finding, reviewing and complying with all applicable terms, conditions, and licenses, and for verifying the security, integrity and suitability of any retrieved materials for your specific use case. This software is provided &amp;quot;AS IS&amp;quot;, without warranty of any kind. The author makes no representations or warranties regarding any retrieved materials, and assumes no liability for any losses, damages, liabilities or legal consequences from your use or inability to use this software or any retrieved materials. Use this software and the retrieved materials at your own risk.&lt;/p&gt;
&lt;p&gt;External materials Auto Ontology interacts with at run time:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Material&lt;/th&gt;
&lt;th&gt;When&lt;/th&gt;
&lt;th&gt;Terms&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NVIDIA-hosted model APIs (&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://build.nvidia.com&quot;&gt;build.nvidia.com&lt;/a&gt;, &lt;code&gt;integrate.api.nvidia.com&lt;/code&gt;) for LLM, embedding, and reranking&lt;/td&gt;
&lt;td&gt;Chat, ingestion, and semantic compilation, with the default model configuration&lt;/td&gt;
&lt;td&gt;Terms of the NVIDIA API catalog and of each model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Any other OpenAI-compatible model endpoint you configure (&lt;code&gt;*_ENDPOINT&lt;/code&gt; / &lt;code&gt;*_MODEL&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;td&gt;Terms of that provider and model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KumoRFM predictive-query service&lt;/td&gt;
&lt;td&gt;Only when &lt;code&gt;KUMO_RFM_API_KEY&lt;/code&gt; is set&lt;/td&gt;
&lt;td&gt;Kumo&#39;s terms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your source databases&lt;/td&gt;
&lt;td&gt;Ingestion, profiling, and query execution&lt;/td&gt;
&lt;td&gt;Your agreements for those systems&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Contributing&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;This project is currently not accepting contributions.&lt;/strong&gt; Issues, pull requests, and patches submitted from outside the Auto Ontology maintainer team will not be reviewed or merged. Security-relevant reports should follow the process described in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/SECURITY.md&quot;&gt;&lt;code&gt;SECURITY.md&lt;/code&gt;&lt;/a&gt;. Maintainer workflow is in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/NVIDIA/auto-ontology/blob/main/CONTRIBUTING.md&quot;&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
    <category>news</category>
  </item>
</channel>
</rss>
