Nia
Nia by Nozomio Labs is an API for technical, up-to-date context. It lets you index docs, repos, PDFs, and datasets, then search them with AI so your agent gets real answers instead of hallucinations. The @nozomioai/nia-ai-sdk package integrates Nia with the AI SDK through tools, middleware, and direct streaming helpers.
It is designed for workflows where you want to:
- Call Nia Tracer as a tool for public GitHub and documentation research
- Call Nia Oracle as a tool for grounded research over indexed repositories, docs, PDFs, and datasets
- Call Nia Document Agent as a tool for deep document analysis and structured extraction
- Augment an existing AI SDK model with Nia-backed middleware
- Stream Tracer, Oracle, or Document Agent events directly in your app
Learn more in the Nia documentation.
Setup
The Nia adapter is available in the @nozomioai/nia-ai-sdk package. You can install it with:
pnpm add @nozomioai/nia-ai-sdk
If you want to use Nia middleware with a model provider, install that provider as well. For example:
pnpm add @ai-sdk/openaiSet your Nia API key:
export NIA_API_KEY=nia_your_api_keyYou can get your API key from the Nia dashboard.
Tool Usage
Nia works well as a set of AI SDK tools that you pass to generateText or streamText.
generateText
import { generateText } from 'ai';import { openai } from '@ai-sdk/openai';import { createNiaResearchTools } from '@nozomioai/nia-ai-sdk';
const tools = createNiaResearchTools({ apiKey: process.env.NIA_API_KEY!, tracer: { defaultRequest: { mode: 'tracer-deep', }, }, oracle: { defaultRequest: { repositories: ['vercel/ai'], dataSources: ['Vercel AI SDK'], }, }, documentAgent: { defaultRequest: { sourceId: 'src_abc123', }, },});
const result = await generateText({ model: openai('gpt-4.1'), prompt: 'Research how AI SDK middleware works, then summarize the best integration pattern.', tools,});
console.log(result.text);You can pass false to any service key to disable it entirely, e.g. oracle: false if you only need Tracer. Per-service transport options (such as a separate apiKey) override the top-level ones when provided.
The SDK also exports createTracerTool(), createOracleTool(), and createDocumentAgentTool() for when you only need a single tool.
Middleware Usage
Use middleware when you want Nia to enrich the last user message before your base model runs.
withOracleContext
import { generateText } from "ai";import { openai } from "@ai-sdk/openai";import { withOracleContext } from "@nozomioai/nia-ai-sdk";
const model = withOracleContext(openai("gpt-4.1"), { apiKey: process.env.NIA_API_KEY!, defaultRequest: { repositories: ["vercel/ai"], dataSources: ["Vercel AI SDK"], },});
const result = await generateText({ model, prompt: "How should I think about AI SDK middleware for retrieval?",});
console.log(result.text);You can use withTracerContext() in the same way for public GitHub research and withDocumentAgentContext() when working with indexed PDFs or documents.
For more control, the lower-level createTracerMiddleware(), createOracleMiddleware(), and createDocumentAgentMiddleware() exports return raw LanguageModelMiddleware objects you can compose yourself.
Direct Streaming Helpers
If you want raw Nia job events, use the direct streaming helpers:
streamTracer()streamOracle()streamOracleSessionChat()streamDocumentAgent()
import { streamTracer } from "@nozomioai/nia-ai-sdk";
const session = await streamTracer( { apiKey: process.env.NIA_API_KEY!, }, { query: "How does generateText stream responses?", repositories: ["vercel/ai"], mode: "tracer-fast", });
for await (const event of session.events) { console.log(event.event, event.data);}