Browse documentation
Docs target stable release v0.9.1.Stable vs main checked 2026-10-09

Model adapters

The native Agentaccepts any object implementing opentine's asyncModel protocol. These are current examples, not a model allowlist: adapters pass model identifiers through to their provider and record provider and model as opaque provenance.

models.py
1from opentine import Agent
2from opentine.models.anthropic import Anthropic
3from opentine.models.google import Google
4from opentine.models.ollama import Ollama
5from opentine.models.openai import OpenAI
6
7Agent(model=OpenAI("gpt-5.6"))
8Agent(model=Anthropic("claude-sonnet-5"))
9Agent(model=Google("gemini-3.5-flash"))
10Agent(model=Ollama("qwen3"))

Install extras

Terminal
pip install "opentine[anthropic]==0.9.1"
pip install "opentine[openai]==0.9.1"
pip install "opentine[google]==0.9.1"
pip install "opentine[compat]==0.9.1"
# Ollama uses core httpx

Thirty providers from the CLI

tine run --model PROVIDER[:MODEL] --prompt ... recognizes 30 names:

  • Native: anthropic, google,ollama, and openai.
  • Hosted compatible: deepseek, glm,grok, groq, hermes, kimi,ministral, mistral, openrouter,qwen, together, and zai.
  • Local runtimes: jan, koboldcpp,litellm, llama-cpp-python, llamacpp,lmstudio, localai, mlx-lm,nvidia-nim, sglang, tensorrt-llm,tgi, unsloth, and vllm.
Terminal
tine run --model vllm:served-model --prompt "Explain the current branch"
tine run --model lmstudio --prompt "Summarize README.md"
tine run --model ollama:llama3.1:8b --prompt "Review this change"

Each local preset points to its server's conventional localhost URL. A different port or exact nonstandard prefix uses LocalOpenAICompatible(host=...)or base_url=... in Python.

Hosted and local compatible wrappers

compatible.py
from opentine.models.compat import (
    DeepSeek, GLM, Grok, Groq, Hermes, Kimi, Ministral,
    Mistral, OpenRouter, Qwen, Together,
    Jan, KoboldCpp, LlamaCpp, LlamaCppPython, LiteLLM,
    LMStudio, LocalAI, MLXLM, NvidiaNIM, SGLang, TGI,
    TensorRTLLM, Unsloth, VLLM,
)

Hosted wrappers use provider-scoped identities so unknown models never inherit another provider's price. Named local wrappers are endpoint conveniences over the same Chat Completions transport, not separate protocol implementations.

Support versus billing coverage

Any model ID accepted by an endpoint can run. The signed pricing catalog is a curated set of exact, effective-dated cards; missing cards produce explicitunknown billing instead of blocking execution or guessing a price. Local runtimes default to unmetered; LiteLLM defaults tounknown because it can proxy paid backends.

Expanded catalog coverage

The shipped catalog includes cards for claude-fable-5-1,gpt-6-astra, qwen3.8-27b, the hostedqwen3.8-flash, and deepseek-v4-flash-vision-exp. This is pricing coverage, independent of adapter model identifiers, and ships in the v0.9.1 PyPI package.

qwen3.8-flash-next is a separate open-weight model and remains intentionally uncarded and unaliased. It can be addressed through a compatible local runtime, but billing stays unknown unless you provide a local overlay. See the stable-versus-main release status.

Capability properties

supports_tools and supports_thinking are adapter or runtime hints. Actual support depends on the selected model, provider, chat template, and server flags.

See usage and pricing for streamed usage, post-hoc pricing, and rate-card caveats.