Tīrtha is still being built, so some features and models may not work as expected yet. Billing always follows the prices shown. Something broken? Email [email protected].

Tīrtha
Docs · Coding agents

Use Tīrtha in your coding agent.

Let your favourite frontier model do the design, then hand the build to Tīrtha. With tirtha/auto, a lower-cost model does the work, every tool call is checked against your schema, and only the calls that fail the check move up a level (Plus, then Max).

Tīrtha is still in internal testing. Keys, limits and prices may change.

Update (2026-10-26). The OpenCode issue from October 18 is fixed: tool calls come back as real tool calls. Replies are also no longer cut at 1,024 tokens; when you do not set max_tokens, a tool reply can now run to 8,192 tokens (16,384 on Plus). Slow streamed turns now send a keepalive line every 5 to 10 seconds, so your agent and any proxy in between keep the connection open. One known gap remains: a single very long file write can still time out on Plus. Until that fix ships, ask the agent to write large files in parts. If anything else breaks, write to [email protected] with the agent name and version.

The three settings every agent needs

  • Base URL: https://api.tirtha.ai/v1 (OpenAI-compatible chat completions)
  • API key: from your dashboard. Keep it in an environment variable, not in a file you commit. It must be sent as Authorization: Bearer sk-tirtha-...: an api-key header, an x-goog-api-key header or a key in the URL is refused.
  • Model: tirtha/auto to let Tīrtha pick, or catalog/<slug> for one model from the catalogue (each model card shows its id).

OpenCode

OpenCode's settings screen does not accept custom providers; it answers "user providers are not available". Add Tīrtha in the config file instead: opencode.json in your project, or ~/.config/opencode/opencode.json for every project.

opencode.jsontested with OpenCode 1.18.34
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "tirtha": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Tirtha",
      "options": {
        "baseURL": "https://api.tirtha.ai/v1",
        "apiKey": "{env:TIRTHA_API_KEY}"
      },
      "models": { "tirtha/auto": { "name": "Tirtha Auto" } }
    }
  },
  "model": "tirtha/tirtha/auto"
}
  1. Set your key: export TIRTHA_API_KEY=... (PowerShell: $env:TIRTHA_API_KEY = "...").
  2. Start OpenCode in your project. The footer shows build · tirtha/auto.
  3. Running headless with opencode run? File writes need approval, which a non-interactive run cannot give, so add --auto (it approves edits, so use it in a project you trust).

To use one model instead of letting Tīrtha pick, add its id under models, for example "catalog/qwen3.8-flash": { "name": "Qwen3.8 Flash" }, and set "model" to "tirtha/catalog/qwen3.8-flash". OpenCode writes models as provider, then model id.

Source: OpenCode docs, providers.

Limits that apply to agents

  • Session cap (auto mode): one session, meaning the same key and the same first message, can make up to 80 requests or spend $2. After that the reply is a short message asking the agent to stop and report its progress, and the response carries tirtha.session_stop.
  • Max is for single calls: from the 4th tool step, or 24,000 input tokens, a request that would go to Max is served and billed as Plus, and the response says max_redirect.
  • Context: tool requests can carry up to 125,000 tokens. Over that you get a 400 asking you to compact the conversation.
  • Runaway guard: if a key sends the same large request in a loop, the API pauses it with a 429 runaway_guard and a Retry-After.

Setting up other tools

Each tool below is set up from its own current docs, linked under it, except Cursor, whose steps come from its community forum. OpenCode is the one we have run end to end; for the others, tell us if a step does not match what you see and we will fix it.

Cline

  1. Open Cline settings (the gear icon).
  2. API Provider: OpenAI Compatible. Base URL: https://api.tirtha.ai/v1. API Key: your key.
  3. Model ID: tirtha/auto, or a model from the catalogue such as catalog/qwen3.8-flash. Cline can list them from our model list.

Source: Cline docs, OpenAI Compatible. Set up from that page; we have not run it end to end yet.

Roo Code

  1. In Roo Code settings set API Provider to OpenAI Compatible, Base URL to https://api.tirtha.ai/v1, and API Key to your key.
  2. Model: tirtha/auto or a catalogue id such as catalog/qwen3.8-flash.

Roo Code only works with models that make real tool calls, so pick a model whose card shows tool calling, or use tirtha/auto.

Source: Roo Code docs, OpenAI Compatible. Set up from that page; we have not run it end to end yet.

Kilo Code

  1. Settings (gear), the Providers tab, then Custom provider.
  2. Provider ID: tirtha. Provider API: OpenAI Compatible. Base URL: https://api.tirtha.ai/v1. API key: your key.
  3. Models: add tirtha/auto and any catalogue ids you want, such as catalog/qwen3.8-flash, then Submit. Kilo can also fetch them: Fetch models reads our model list, which includes every catalogue id.

Source: Kilo docs, OpenAI Compatible. Set up from that page; we have not run it end to end yet.

Continue

Add a model to ~/.continue/config.yaml (on Windows %USERPROFILE%\.continue\config.yaml):

config.yamlfrom Continue's docs
name: My Config
version: 0.0.1
schema: v1
models:
  - name: Tirtha
    provider: openai
    model: catalog/qwen3.8-flash
    apiBase: https://api.tirtha.ai/v1
    apiKey: YOUR_TIRTHA_KEY
    capabilities:
      - tool_use

tool_use turns on tool calling, which Agent mode needs.

Source: Continue docs, OpenAI and compatible providers. Set up from that page; we have not run it end to end yet.

Aider

terminalfrom Aider's docs
export OPENAI_API_BASE=https://api.tirtha.ai/v1
export OPENAI_API_KEY=YOUR_TIRTHA_KEY
aider --model openai/catalog/qwen3.8-flash

Aider needs the openai/ prefix in front of our model id. It may warn that it does not know the model's context size or cost; its docs say you can ignore that.

Source: Aider docs, OpenAI compatible APIs. Set up from that page; we have not run it end to end yet.

Cursor

In Cursor Settings > Models, add your Tīrtha key as the OpenAI API key, turn on Override OpenAI Base URL with https://api.tirtha.ai/v1, and add the model name catalog/qwen3.8-flash.

Cursor's own docs do not describe the base URL override; these steps come from its community forum. Two things its forum reports: the override sends all OpenAI-family requests to Tīrtha until you turn it off, and Tab completion always uses Cursor's own models. Cursor may change or remove this setting.

Sources: Cursor docs, API keys and Cursor forum guide. We have not run it end to end yet.

LangChain

pythonfrom LangChain's docs
# pip install -U langchain-openai
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model="catalog/qwen3.8-flash",
    base_url="https://api.tirtha.ai/v1",
    api_key="YOUR_TIRTHA_KEY",
)
print(llm.invoke("Hello").content)

Source: LangChain docs, ChatOpenAI. Set up from that page; we have not run it end to end yet.

LiteLLM

pythonfrom LiteLLM's docs
import litellm
r = litellm.completion(
    model="openai/catalog/qwen3.8-flash",
    api_base="https://api.tirtha.ai/v1",
    api_key="YOUR_TIRTHA_KEY",
    messages=[{"role": "user", "content": "Hello"}],
)
proxy config.yamlfrom LiteLLM's docs
model_list:
  - model_name: tirtha-qwen3.8-flash
    litellm_params:
      model: openai/catalog/qwen3.8-flash
      api_base: https://api.tirtha.ai/v1
      api_key: YOUR_TIRTHA_KEY

LiteLLM needs the openai/ prefix. Do not add /chat/completions to api_base.

Source: LiteLLM docs, OpenAI-compatible endpoints. Set up from that page; we have not run it end to end yet.

Other agents

Any agent that lets you set an OpenAI-compatible base URL can use the three settings above; some tools want a prefix on the model name (Aider and LiteLLM use openai/catalog/<slug>). Tell us what you use and we will add it here.

Something not working?

Write to [email protected]. A failing tool call with the agent name and version is the most useful thing you can send us.