Skip to content

tama.toml

tama.toml is the project configuration file, created by tama init in the project root.

[project]
name = "my-project"
entrypoint = "researcher"
[models]
thinker = { name = "anthropic:claude-opus-4-6", temperature = 1.0 }
worker = { name = "anthropic:claude-sonnet-4-6", temperature = 0.0 }
default = { name = "anthropic:claude-haiku-4-5-20251001" }
# Optional: infrastructure overrides (non-secret, safe to commit)
[providers.anthropic]
base_url = "https://my-proxy.internal/anthropic"
[providers.ollama]
base_url = "http://192.168.1.10:11434"

[project]
name = "my-project"

Project name. Lowercase letters, digits, hyphens only.

[project]
entrypoint = "researcher"

The agent that runs when you execute:

Terminal window
tama run "task input"

Override at runtime:

Terminal window
TAMA_ENTRYPOINT_AGENT=summarizer tama run "task input"

Maps role names to model configurations. Supports shorthand (name only) and extended forms:

[models]
thinker = "anthropic:claude-opus-4-6"
worker = "anthropic:claude-sonnet-4-6"
default = "anthropic:claude-haiku-4-5-20251001"
[models]
thinker = { name = "anthropic:claude-opus-4-6", temperature = 1.0 }
worker = { name = "anthropic:claude-sonnet-4-6", temperature = 0.0, max_tokens = 4096 }
default = { name = "anthropic:claude-haiku-4-5-20251001" }

Both forms are valid and can be mixed. Extended fields:

FieldTypeDescription
namestringprovider:model-id (required)
temperaturefloatGeneration temperature. Overrides role built-in default.
max_tokensintegerMax output tokens. Defaults to not set (∞).
base_urlstringCustom endpoint for self-hosted/proxy. Non-secret; safe to commit.
RoleTemperaturemax_tokens
thinker1.0not set
worker0.0not set
default0.8not set

If temperature is not specified in tama.toml or env, the built-in default is used. max_tokens is never set by default — provider limit applies.

When an agent or step has no model: config, tama picks a role by pattern:

PatternDefault role
reactthinker
All othersworker
Fallbackdefault

Every field can be overridden at runtime. See Model Configuration for the full override chains.

Quick reference for role overrides (replace {ROLE} with uppercase role name, hyphens → underscores):

Terminal window
TAMA_MODEL_THINKER_NAME=anthropic:claude-sonnet-4-6
TAMA_MODEL_THINKER_TEMPERATURE=0.5
TAMA_MODEL_THINKER_MAX_TOKENS=8192
TAMA_MODEL_THINKER_API_KEY=sk-ant-...
TAMA_MODEL_THINKER_BASE_URL=https://my-proxy.internal

Optional section for provider-level infrastructure config. Non-secret fields only — API keys go in environment variables.

[providers.anthropic]
base_url = "https://my-proxy.internal/anthropic"
[providers.openai]
base_url = "https://my-openai.openai.azure.com/openai"
[providers.google]
base_url = "https://generativelanguage.googleapis.com"
[providers.ollama]
base_url = "http://192.168.1.10:11434"
FieldDescription
base_urlCustom endpoint. Overridden by TAMA_PROVIDER_{PROVIDER}_BASE_URL or TAMA_MODEL_{ROLE}_BASE_URL.

All model references use provider:model-id:

ProviderFormatExample
Anthropicanthropic:model-idanthropic:claude-opus-4-6
OpenAIopenai:model-idopenai:gpt-4o
Googlegoogle:model-idgoogle:gemini-2.0-flash
Ollamaollama:model-idollama:qwen2.5:14b

VariableDescription
TAMA_ENTRYPOINT_AGENTOverride [project].entrypoint
TAMA_MODEL_{ROLE}_NAMEOverride model name for a role
TAMA_MODEL_{ROLE}_TEMPERATUREOverride temperature for a role
TAMA_MODEL_{ROLE}_MAX_TOKENSOverride max_tokens for a role
TAMA_MODEL_{ROLE}_API_KEYOverride API key for a role
TAMA_MODEL_{ROLE}_BASE_URLOverride base URL for a role
ANTHROPIC_API_KEYAnthropic API key (all Anthropic roles)
OPENAI_API_KEYOpenAI API key (all OpenAI roles)
GEMINI_API_KEYGoogle API key (all Google roles)
TAMA_PROVIDER_ANTHROPIC_BASE_URLBase URL for all Anthropic roles
TAMA_PROVIDER_OPENAI_BASE_URLBase URL for all OpenAI roles
TAMA_PROVIDER_GOOGLE_BASE_URLBase URL for all Google roles
TAMA_PROVIDER_OLLAMA_BASE_URLBase URL for Ollama