Configuration
TAU can be configured via config files, environment variables, and project-specific settings.
Configuration Priority
Settings are loaded in order (later overrides earlier):
- 1. Defaults — Built-in defaults
- 2. Global config —
~/.config/tau/config.toml - 3. Project config —
.tau/config.toml - 4. Environment variables —
TAU_* - 5. CLI arguments —
--model, etc.
Global Config
Location: ~/.config/tau/config.toml
# General settings
[general]
log_level = "info" # trace, debug, info, warn, error
telemetry_enabled = false
# Default provider and model
[providers]
default_provider = "anthropic"
default_model = "claude-sonnet-4-5"
# Provider-specific settings
[providers.anthropic]
api_key_source = "keyring" # keyring, env, or inline
# api_key = "sk-ant-xxx" # if api_key_source = "inline"
[providers.openai]
api_key_source = "env"
[providers.ollama]
host = "http://localhost:11434"
# Embeddings configuration
[embeddings]
provider = "mlx" # mlx, ollama, google, openai
fallback_provider = "google"
fallback_model = "text-embedding-004"
offline = false
auto_download = true
# MLX settings (macOS only)
[mlx]
model = "nomic-ai/nomic-embed-text-v1.5-GGUF"
model_base_url = "https://huggingface.co"
models_dir = "~/.local/share/tau/mlx_models"
warmup = true
# Indexing settings
[indexing]
enabled = true
watch = true
debounce_ms = 500
max_file_size_mb = 10
vector_search_enabled = true
# TUI settings
[tui]
theme = "windsurf" # windsurf, monokini, light
tab_size = 4
show_line_numbers = trueProject Config
Location: .tau/config.toml (per-project)
# Project name (optional)
[general]
name = "MyProject"
# Override default model for this project
[providers]
default_model = "claude-opus-4-5"
# Indexing exclusions
[indexing]
ignore_patterns = [
"target/",
"node_modules/",
"*.test.ts",
"**/__pycache__/",
"dist/",
"build/",
]
# Tantivy index settings
[indexing.tantivy]
heap_size_mb = 50
# LanceDB vector index settings
[indexing.lancedb]
embedding_dims = 768
ivf_partitions = 256
pq_sub_vectors = 96
# Hooks (run after specific events)
[hooks]
file_edit = ["./scripts/format.sh"] # After file edits
session_start = ["./scripts/setup.sh"] # On session startEnvironment Variables
| Variable | Default | Description |
|---|---|---|
| TAU_DATA_DIR | ~/.local/share/tau | Data storage directory |
| TAU_CONFIG_DIR | ~/.config/tau | Config directory |
| TAU_LOG | info | Log level |
| TAU_MODEL | - | Default model (provider/model) |
| TAU_TOOL_SELECTION | dynamic | dynamic, all, or none |
| TAU_MLX_WARMUP | true | Pre-load MLX model |
| TAU_MLX_AUTO_DOWNLOAD | true | Auto-download missing models |
| TAU_EMBEDDINGS_OFFLINE | false | Disable embeddings |
| TAU_INDEX_ENABLED | true | Enable project indexing |
| TAU_RLM_CONTEXT_THRESHOLD | 50000 | Tokens for RLM activation |
| TAU_RLM_MAX_SUBCALLS | 50 | Max RLM subcalls |
API Keys
# Provider API keys
export ANTHROPIC_API_KEY=sk-ant-xxx
export OPENAI_API_KEY=sk-xxx
export GOOGLE_API_KEY=xxx
export GROQ_API_KEY=xxx
export DEEPSEEK_API_KEY=xxx
# Enterprise
export AWS_ACCESS_KEY_ID=xxx
export AWS_SECRET_ACCESS_KEY=xxx
export AWS_REGION=us-east-1
export AZURE_OPENAI_API_KEY=xxx
# Local
export OLLAMA_HOST=http://localhost:11434
# Web search
export BRAVE_API_KEY=xxxTAU.md (Project Rules)
Create a TAU.md file in your project root to define agent behavior:
# TAU.md - Project Instructions
## Project Overview
This is a Rust backend service using Axum framework.
## Coding Standards
- Use rustfmt for formatting
- Run clippy before commits
- Write tests for all public functions
## Architecture
- /src/handlers - HTTP handlers
- /src/services - Business logic
- /src/models - Data models
## Do Not
- Modify .github/workflows without permission
- Use unwrap() in production code
- Skip error handlingAlso compatible with AGENTS.md and CLAUDE.md
Secure Key Storage
Store API keys securely in system keyring:
# Store key in keyring
tau auth set anthropic
# List stored keys
tau auth list
# Remove key
tau auth remove anthropic
# In config, use keyring source:
[providers.anthropic]
api_key_source = "keyring"