npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

adk-llm-bridge

v0.3.4

Published

Use any LLM with Google ADK TypeScript - supports AI Gateway, OpenRouter, and 100+ models

Readme

adk-llm-bridge

npm version License: MIT

Use any LLM with Google ADK TypeScript in just a few lines of code.

Why?

Google ADK TypeScript comes with built-in Gemini support. This bridge extends it to work with any model from providers like Anthropic, OpenAI, Meta, and more—while keeping all ADK features like multi-agent orchestration, tool calling, and streaming.

Key Benefits

  • Simple — 3 lines to integrate any model
  • Battle-tested — Built on the official OpenAI and Anthropic SDKs
  • Compatible — Works with any OpenAI-compatible API (AI Gateway, OpenRouter, etc.)

Supported Providers

| Provider | Models | Features | |----------|--------|----------| | Vercel AI Gateway | 100+ models (Claude, GPT, Llama, Gemini, etc.) | Simple, fast | | OpenRouter | 100+ models | Provider routing, fallbacks, price optimization | | OpenAI | GPT-4, o1, o3, etc. | Direct API access | | Anthropic | Claude models | Direct API access | | xAI | Grok models | Direct API access | | Custom (OpenAI-compatible) | Any model | Ollama, vLLM, Azure OpenAI, LM Studio, etc. |

Installation

bun add adk-llm-bridge @google/adk
pnpm add adk-llm-bridge @google/adk
npm install adk-llm-bridge @google/adk

Quick Start

import { LlmAgent } from '@google/adk';
import { AIGateway } from 'adk-llm-bridge';

const agent = new LlmAgent({
  name: 'assistant',
  model: AIGateway('anthropic/claude-sonnet-4'),
  instruction: 'You are a helpful assistant.',
});

That's it. All ADK features work: tools, streaming, multi-agent, etc.

Other Providers

import { OpenRouter, OpenAI, Anthropic, XAI, Custom } from 'adk-llm-bridge';

// OpenRouter - 100+ models with routing
model: OpenRouter('anthropic/claude-sonnet-4')

// OpenAI - Direct API
model: OpenAI('gpt-4.1')

// Anthropic - Direct API  
model: Anthropic('claude-sonnet-4-5')

// xAI - Direct API
model: XAI('grok-3-beta')

// Local models (LM Studio, Ollama, etc.)
model: Custom('your-model', { baseURL: 'http://localhost:1234/v1' })

See the examples directory for complete implementations.

Using LLMRegistry (Alternative)

You can also register providers with ADK's LLMRegistry to use string-based model names:

import { LlmAgent, LLMRegistry } from '@google/adk';
import { AnthropicLlm } from 'adk-llm-bridge';

LLMRegistry.register(AnthropicLlm);

const agent = new LlmAgent({
  name: 'assistant',
  model: 'claude-sonnet-4-5',  // String-based model name
  instruction: 'You are a helpful assistant.',
});

Configuration

Environment Variables

AI Gateway:

AI_GATEWAY_API_KEY=your-api-key
AI_GATEWAY_URL=https://ai-gateway.vercel.sh/v1  # optional

OpenRouter:

OPENROUTER_API_KEY=your-api-key
OPENROUTER_SITE_URL=https://your-site.com  # optional, for ranking
OPENROUTER_APP_NAME=Your App Name          # optional, for ranking

Direct Providers:

OPENAI_API_KEY=your-openai-key
ANTHROPIC_API_KEY=your-anthropic-key
XAI_API_KEY=your-xai-key

Programmatic Configuration

Pass options directly to the factory functions:

import { AIGateway, OpenRouter, Anthropic } from 'adk-llm-bridge';

// AI Gateway with custom URL
model: AIGateway('anthropic/claude-sonnet-4', {
  apiKey: process.env.MY_API_KEY,
  baseURL: 'https://my-gateway.example.com/v1',
})

// OpenRouter with site info
model: OpenRouter('anthropic/claude-sonnet-4', {
  apiKey: process.env.OPENROUTER_API_KEY,
  siteUrl: 'https://your-site.com',
  appName: 'Your App',
})

// Anthropic with custom max tokens
model: Anthropic('claude-sonnet-4-5', {
  apiKey: process.env.ANTHROPIC_API_KEY,
  maxTokens: 8192,
})

Model Format

Use the provider/model format:

anthropic/claude-sonnet-4
openai/gpt-5
google/gemini-3-flash
meta/llama-4-maverick
mistral/mistral-large-3
xai/grok-4.1
deepseek/deepseek-chat

Popular Models

| Provider | Models | |----------|--------| | Anthropic | anthropic/claude-sonnet-4, anthropic/claude-opus-4.5 | | OpenAI | openai/gpt-5, openai/gpt-5-mini, openai/o3 | | Google | google/gemini-3-flash, google/gemini-3-pro, google/gemini-2.5-pro | | Meta | meta/llama-4-maverick, meta/llama-4-scout, meta/llama-3.3-70b-instruct | | Mistral | mistral/mistral-large-3, mistral/ministral-3-14b | | xAI | xai/grok-4.1, xai/grok-4, xai/grok-3 | | DeepSeek | deepseek/deepseek-chat, deepseek/deepseek-reasoner |

Browse all models:

Features

  • Text generation - Simple prompt/response
  • Streaming - Real-time token streaming
  • Tool calling - Function calling with automatic conversion
  • Multi-turn - Full conversation history support
  • Multi-agent - Sub-agents and agent transfer
  • Usage metadata - Token counts for monitoring

Tool Calling Example

import { FunctionTool, LlmAgent } from '@google/adk';
import { Anthropic } from 'adk-llm-bridge';
import { z } from 'zod';

const getWeather = new FunctionTool({
  name: 'get_weather',
  description: 'Get current weather for a city',
  parameters: z.object({
    city: z.string().describe('City name'),
  }),
  execute: ({ city }) => {
    return { status: 'success', weather: 'sunny', city };
  },
});

const agent = new LlmAgent({
  name: 'weather-assistant',
  model: Anthropic('claude-sonnet-4-5'),
  instruction: 'You help users check the weather.',
  tools: [getWeather],
});

API Reference

Factory Functions

| Function | Description | |----------|-------------| | AIGateway(model, options?) | Vercel AI Gateway (100+ models) | | OpenRouter(model, options?) | OpenRouter (100+ models) | | OpenAI(model, options?) | OpenAI direct API | | Anthropic(model, options?) | Anthropic direct API | | XAI(model, options?) | xAI direct API | | Custom(model, options) | Any OpenAI-compatible API |

Configuration Options

AIGateway:

| Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | string | process.env.AI_GATEWAY_API_KEY | API key | | baseURL | string | https://ai-gateway.vercel.sh/v1 | Gateway URL | | timeout | number | 60000 | Request timeout (ms) | | maxRetries | number | 2 | Max retry attempts |

**OpenRouter:

| Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | string | process.env.OPENROUTER_API_KEY | API key | | baseURL | string | https://openrouter.ai/api/v1 | API URL | | siteUrl | string | process.env.OPENROUTER_SITE_URL | Your site URL (for ranking) | | appName | string | process.env.OPENROUTER_APP_NAME | Your app name (for ranking) | | provider | object | - | Provider routing preferences | | timeout | number | 60000 | Request timeout (ms) | | maxRetries | number | 2 | Max retry attempts |

**OpenAI:

| Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | string | process.env.OPENAI_API_KEY | API key | | organization | string | process.env.OPENAI_ORGANIZATION | Organization ID | | project | string | process.env.OPENAI_PROJECT | Project ID | | timeout | number | 60000 | Request timeout (ms) | | maxRetries | number | 2 | Max retry attempts |

**Anthropic:

| Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | string | process.env.ANTHROPIC_API_KEY | API key | | maxTokens | number | 4096 | Max tokens in response | | timeout | number | 60000 | Request timeout (ms) | | maxRetries | number | 2 | Max retry attempts |

**XAI:

| Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | string | process.env.XAI_API_KEY | API key | | timeout | number | 60000 | Request timeout (ms) | | maxRetries | number | 2 | Max retry attempts |

**Custom:

| Option | Type | Default | Description | |--------|------|---------|-------------| | model | string | - | Model name (required) | | baseURL | string | - | API base URL (required) | | name | string | "custom" | Provider name for logs/errors | | apiKey | string | - | API key for authentication | | headers | Record<string, string> | - | Additional HTTP headers | | queryParams | Record<string, string> | - | Query parameters for all requests | | providerOptions | Record<string, unknown> | - | Additional options for request body | | timeout | number | 60000 | Request timeout (ms) | | maxRetries | number | 2 | Max retry attempts |

Examples

See the examples directory:

Requirements

  • Node.js >= 18.0.0
  • @google/adk >= 0.2.2

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT