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.
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-...: anapi-keyheader, anx-goog-api-keyheader or a key in the URL is refused. - Model:
tirtha/autoto let Tīrtha pick, orcatalog/<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.
{
"$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"
}
- Set your key:
export TIRTHA_API_KEY=...(PowerShell:$env:TIRTHA_API_KEY = "..."). - Start OpenCode in your project. The footer shows
build · tirtha/auto. - 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_guardand aRetry-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
- Open Cline settings (the gear icon).
- API Provider: OpenAI Compatible. Base URL:
https://api.tirtha.ai/v1. API Key: your key. - Model ID:
tirtha/auto, or a model from the catalogue such ascatalog/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
- In Roo Code settings set API Provider to OpenAI Compatible, Base URL to
https://api.tirtha.ai/v1, and API Key to your key. - Model:
tirtha/autoor a catalogue id such ascatalog/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
- Settings (gear), the Providers tab, then Custom provider.
- Provider ID:
tirtha. Provider API: OpenAI Compatible. Base URL:https://api.tirtha.ai/v1. API key: your key. - Models: add
tirtha/autoand any catalogue ids you want, such ascatalog/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):
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
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
# 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
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"}],
)
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.