LangChain
Use ChatOpenAI with base_url set to the Nemo Router endpoint. Every chain, tool, and agent runs unchanged.
pip install langchain-openaiProvider docsA fully OpenAI-compatible REST API: every framework, SDK, and tool that already talks to OpenAI talks to Nemo Router. Change two lines — keep one key, one bill, and built-in guardrails across 97+ models.
No bespoke plugins needed — compatibility is the integration
There is no Nemo Router SDK you are forced to adopt. These snippets are generated from the canonical SDK examples — the same source the playground and keys page use.
Sign up at nemorouter.ai, generate a Nemo Router virtual key (sk-nemo-…), and grab the base URL.
Set base_url to the Nemo Router endpoint and api_key to your key. That is the entire integration.
Your framework, SDK, and observability tooling all run unchanged — now with one key, one bill, and built-in guardrails.
pip install nemoroutersdk| 1 | # Cache: enabled (org default). Pass nemo_cache: false to skip. |
| 2 | from nemoroutersdk import NemoRouter, NemoGuardrailBlockedError |
| 3 | |
| 4 | client = NemoRouter() # reads NEMOROUTER_API_KEY from env |
| 5 | |
| 6 | try: |
| 7 | response = client.chat.completions.create( |
| 8 | model="gemini-2.5-flash-lite", |
| 9 | temperature=1, |
| 10 | max_tokens=1024, |
| 11 | top_p=1, |
| 12 | messages=[ |
| 13 | {"role": "user", "content": "Hello! What models do you support?"}, |
| 14 | ], |
| 15 | # nemo_cache=False, # Uncomment to skip cache |
| 16 | ) |
| 17 | print(response.choices[0].message.content) |
| 18 | |
| 19 | # Auto-captured metadata |
| 20 | meta = client.last_response |
| 21 | if meta: |
| 22 | print(f"Cost: ${meta.cost}") |
| 23 | print(f"Guardrails: {meta.guardrails_applied}") |
| 24 | |
| 25 | except NemoGuardrailBlockedError as e: |
| 26 | print(f"Blocked by guardrail: {e}") |
Base URL is always https://api.nemorouter.ai/v1. Works with the official OpenAI SDKs and any OpenAI-compatible client.
Each of these is a standard OpenAI-API client. Nemo Router does not ship a bespoke plugin for them — it does not need to. They work because the API surface is identical.
Use ChatOpenAI with base_url set to the Nemo Router endpoint. Every chain, tool, and agent runs unchanged.
pip install langchain-openaiProvider docsPoint the OpenAI LLM class at Nemo Router. Query engines and retrievers keep working — only the endpoint moves.
pip install llama-index-llms-openaiProvider docsConfigure the @ai-sdk/openai provider with a custom baseURL. streamText and generateText route through Nemo Router.
npm install ai @ai-sdk/openaiProvider docsOpenAIGenerator and OpenAIChatGenerator accept an api_base_url — set it to Nemo Router and your pipelines are unchanged.
pip install haystack-aiProvider docsCrewAI reads OpenAI-style env vars. Set OPENAI_API_BASE to the Nemo Router endpoint and your crews run on managed models.
pip install crewaiProvider docsAutoGen LLM configs take a base_url field. Drop in the Nemo Router endpoint and every agent message routes through the gateway.
pip install autogen-agentchatProvider docsADK speaks the OpenAI-compatible interface — point it at Nemo Router to keep one key and one bill.
pip install google-adkInstructor, Marvin, DSPy, Semantic Kernel… If a library accepts an OpenAI base URL or honors OPENAI_API_BASE, it works. No SDK fork, no shim.
Python
pip install nemoroutersdk
Nemo Router SDK or openai
Python (OpenAI)
pip install openai
openai.OpenAI(base_url=…)
Node.js / TypeScript
npm install openai
new OpenAI({ baseURL })
Go
go get github.com/sashabaranov/go-openai
openai.ClientConfig{ BaseURL }
Java
Maven / Gradle — openai-java
OpenAIOkHttpClient.builder()
Ruby
gem install ruby-openai
OpenAI::Client.new(uri_base:)
PHP
composer require openai-php/client
OpenAI::factory()->withBaseUri()
cURL / HTTP
Any HTTP client
POST /v1/chat/completions
Live, runnable snippets for every language are on the playground and your dashboard keys page. If a library honors OPENAI_API_BASE, it already works.
Pointing your client at Nemo Router is two lines — but those two lines move every request behind a managed gateway: one key for every model, guardrails at the gateway instead of in your framework code, and real cost accounting on every call.
Your code
OpenAI SDK, unchanged
base_url + api_key — two lines, nothing else moves
Nemo gateway
Guardrails · budgets · cost tracking
Every request guarded, attributed, and settled exactly
Providers
97+ models, one bill
We manage every provider key and relationship
Request logs, traces, and metrics forwarded to the tools your platform team already runs — configured from Logging → Callbacks, with zero changes to your application code. Alerts also fan out over generic webhooks.
Langfuse
Traces, spans, and token usage for prompt analytics and evals — configured once under Logging → Callbacks.
Datadog
Request logs and latency metrics alongside the rest of your service telemetry.
Amazon S3
Raw request logs archived to a bucket you control — retention, audit, batch analysis.
Slack
LLM errors, budget thresholds, and provider outages routed to a channel — 8 alert types.
Terraform provider — manage keys, teams, budgets, and guardrails as code. Planned — not yet published to the Terraform registry.
CLI tool — a nemo command for keys, usage, and config from the terminal. In design — no install command to publish yet.
These are full product builds, not marketing pages — we track them as committed roadmap items, not shipped features. Want early access? sales@nemorouter.ai
Keep your framework, keep your SDK, keep your observability tooling. Change the base URL and the key — get one bill, built-in guardrails, and real cost tracking.
OpenAI-compatible · one key · guardrails included