Configuration
Providers and models, automatic fallback, workspace, tools, voice and vision. Secrets live in .env, everything else in config.toml.
smooth-agent setup writes ~/.smooth-agent/config.toml for you. You can edit it any time; the full example with every option ships as smooth_agent/data/config.example.toml.
Providers
default = "main"
fallbacks = ["backup"] # tried in order when the default fails
[providers.main]
provider = "deepseek"
model = "deepseek-chat"
[providers.backup]
provider = "smooth-router" # Smooth's own API, see Developer API
base_url = "https://api.smooth.family/v1"
model = "smooth-flash"
key_env = "SMOOTH_API_KEY"Built-in presets (each reads its key from the preset's environment variable, e.g. DEEPSEEK_API_KEY, OPENAI_API_KEY, GLM_API_KEY):
| Preset | Notes |
|---|---|
openai | OpenAI models |
deepseek | DeepSeek |
glm | Zhipu GLM |
groq | Groq (fast inference) |
openrouter | Hundreds of models behind one key |
kimi | Moonshot Kimi |
smooth-router | Smooth's API (https://api.smooth.family/v1) or a self-hosted gateway |
openai-compatible | Any OpenAI-compatible endpoint: set base_url (local servers such as Ollama, vLLM, LM Studio) |
Use -p <name> (and -m <model>) on chat, ask or run to pick a provider for one run, and smooth-agent providers to list them. Web search uses Tavily, Brave or SearXNG when TAVILY_API_KEY, BRAVE_API_KEY or SEARXNG_URL is set, otherwise DuckDuckGo.
Agent settings
[agent]
workspace = "~/smooth-workspace" # default: ~/.smooth-agent/workspace
instructions = "Answer in Indonesian. Keep replies short."
timezone = "Asia/Jakarta" # for schedules and "tomorrow at 9"
max_steps = 12 # tool rounds per message
max_tokens = 4096 # per reply
memory = true # long-term memory + saved, searchable sessions
context_tokens = 64000 # older messages are summarised beyond ~80% of thisTools
[tools]
files = "workspace" # or "full": the whole machine, with approvals for writes outside the workspace and secret files
terminal = false # true: shell + Python, each command asks first
confirm = true # false: run commands without asking (only on a machine you trust)More in Tools and permissions.
Vision, images, voice
[vision] # understanding images; defaults to the main provider/model
[image] # image generation (OpenAI-compatible /images/generations)
provider = "openai"
[stt] # speech to text for voice notes (OpenAI-compatible /audio/transcriptions)
provider = "groq"
language = "id"
[tts] # voice replies (OpenAI-compatible /audio/speech, needs ffmpeg)
provider = "openai"
voice = "alloy"Environment variables
| Variable | Use |
|---|---|
SMOOTH_AGENT_HOME | Where everything lives (default ~/.smooth-agent) |
<PRESET>_API_KEY | Provider keys, e.g. DEEPSEEK_API_KEY |
TELEGRAM_BOT_TOKEN, WHATSAPP_TOKEN, … | Channel secrets (see Chat channels) |
NO_COLOR / FORCE_COLOR | Terminal colours |
Last updated: