Provider Reference

Model providers connect jaato to AI services. Each provider handles authentication, API communication, and type conversion for a specific AI platform.

Available Providers

Provider Name Status Models
Google GenAI google_genai Available Gemini 1.5, 2.0, 2.5
Anthropic anthropic Available Claude 3, 3.5, Sonnet 4, Opus 4
GitHub Models github_models Available GPT-4o, Claude 3.5, Gemini, Llama
Claude CLI claude_cli Available Claude (via subscription)
Antigravity antigravity Available Gemini 3, Claude (via Google)
Ollama ollama Available Qwen, Llama, Mistral (local)
Zhipu AI zhipuai Available GLM-5, GLM-4.7, GLM-4.6, GLM-4.5
NVIDIA NIM nim Available Llama, DeepSeek-R1, Nemotron

Choosing a Provider

Use Case Recommended
Personal development Google GenAI (AI Studio) - free tier available
Claude Pro/Max subscriber Claude CLI - uses subscription, not API credits
Complex reasoning tasks Anthropic - Claude with extended thinking
Multi-model access GitHub Models - GPT, Claude, Gemini via single API
Privacy / Local models Ollama - run models locally, no API costs
GCP integration Google GenAI (Vertex AI)
Access to Gemini 3 Antigravity - Google IDE backend
GLM models / China AI Zhipu AI - GLM-5, GLM-4.7 with chain-of-thought
NVIDIA GPU infrastructure NVIDIA NIM - hosted or self-hosted, Llama/DeepSeek-R1/Nemotron
Using a provider
from jaato import JaatoClient

# Recommended: configure via .env file
# JAATO_PROVIDER=anthropic
# MODEL_NAME=claude-sonnet-4-20250514
client = JaatoClient()
client.connect()  # Reads provider and model from env

# Override provider in code (model still from env)
client = JaatoClient(provider_name="anthropic")
client.connect()

# Override both provider and model in code
client = JaatoClient(provider_name="google_genai")
client.connect(model="gemini-2.5-flash")

client = JaatoClient(provider_name="ollama")
client.connect(model="qwen3:32b")
Discover available providers
from shared import discover_providers, load_provider

# Find what's available
providers = discover_providers()
print(f"Available: {list(providers.keys())}")
# ['google_genai', 'anthropic', 'github_models',
#  'claude_cli', 'antigravity', 'ollama', 'zhipuai', 'nim']

# Load a specific provider
provider = load_provider("anthropic")
print(f"Loaded: {provider.name}")

Provider Selection

There are three ways to select which provider to use, in order of precedence:

1. CLI Flag (highest priority)

Use the --provider flag when running the rich client. This overrides all other settings.

2. Environment Variable

Set JAATO_PROVIDER in your .env file or shell. This is the recommended approach for persistent configuration.

3. Code (explicit)

Pass provider_name to JaatoClient(). Overrides environment variable.

4. Default

If nothing is specified, defaults to google_genai. Set JAATO_PROVIDER to change the default.

Variable Values Description
JAATO_PROVIDER anthropic, google_genai, github_models, claude_cli, antigravity, ollama, zhipuai, nim Default provider for all sessions
CLI flag (overrides env)
# Use GitHub Models for this session
.venv/bin/python jaato-tui/rich_client.py --provider github_models

# Use Google GenAI for this session
.venv/bin/python jaato-tui/rich_client.py --provider google_genai
Environment variable (.env)
# .env file
JAATO_PROVIDER=github_models
MODEL_NAME=openai/gpt-4o
Explicit in code
from jaato import JaatoClient

# Explicit provider (overrides JAATO_PROVIDER env var)
client = JaatoClient(provider_name="anthropic")
client.connect()  # Reads MODEL_NAME from env

# Everything from env
client = JaatoClient()
client.connect()  # Reads JAATO_PROVIDER and MODEL_NAME from env

Provider Comparison

Google GenAI

  • Endpoints: AI Studio (personal) + Vertex AI (enterprise)
  • Auth: API key, ADC, service account
  • Features: Function calling, multimodal, structured output
  • Best for: GCP users, long context needs (1M+ tokens)

Anthropic

  • Endpoints: Direct API
  • Auth: API key (sk-ant-api03-...) or OAuth token (sk-ant-oat01-...)
  • Features: Function calling, extended thinking, prompt caching
  • Best for: Complex reasoning, code generation

GitHub Models

  • Endpoints: GitHub Models API (unified)
  • Auth: GitHub PAT (fine-grained recommended)
  • Features: Multi-model (GPT, Claude, Gemini, Llama), function calling
  • Best for: GitHub Enterprise users, multi-model experimentation

Claude CLI

  • Endpoints: Claude Code CLI wrapper
  • Auth: claude login (uses Pro/Max subscription)
  • Features: Built-in tools, automatic prompt caching
  • Best for: Claude subscribers wanting to avoid API costs

Antigravity

  • Endpoints: Google IDE backend
  • Auth: Google OAuth (via oauth_login())
  • Features: Access to Gemini 3, Claude via Google infrastructure
  • Best for: Early access to Gemini 3 models

Ollama

  • Endpoints: Local Ollama server (localhost:11434)
  • Auth: None (local)
  • Features: Run models locally, no API costs, privacy
  • Best for: Privacy-sensitive use cases, offline work

Zhipu AI

  • Endpoints: Z.AI Anthropic-compatible API
  • Auth: API key
  • Features: GLM models, extended thinking, function calling
  • Best for: GLM model access, chain-of-thought reasoning

NVIDIA NIM

  • Endpoints: NVIDIA hosted API + self-hosted NIM containers
  • Auth: API key (nvapi-...) or none (self-hosted)
  • Features: OpenAI-compatible API, function calling, streaming, reasoning (DeepSeek-R1)
  • Best for: NVIDIA GPU infrastructure, self-hosted models, NIM catalog access
Provider capabilities
# Check provider capabilities
provider = load_provider("anthropic")  # or any provider

# Structured output support
if provider.supports_structured_output():
    response = provider.send_message(
        "Extract data",
        response_schema={"type": "object", ...}
    )

# Context limits
limit = provider.get_context_limit()
print(f"Context window: {limit:,} tokens")

# Token counting
tokens = provider.count_tokens("Hello world")
print(f"Token count: {tokens}")

Next Steps

Provider directory structure
shared/plugins/model_provider/
├── __init__.py
├── base.py              # Protocol definition
├── types.py             # Unified types
├── anthropic/           # Anthropic Claude
├── google_genai/        # Google GenAI / Vertex AI
├── github_models/       # GitHub Models API
├── claude_cli/          # Claude CLI wrapper
├── antigravity/         # Google IDE backend
├── ollama/              # Ollama local models
├── zhipuai/             # Zhipu AI GLM models
└── nim/                 # NVIDIA NIM (hosted + self-hosted)