Configuration
Takopi reads configuration from ~/.takopi/takopi.toml.
If you expect to edit config while Takopi is running, set:
Top-level keys
| Key |
Type |
Default |
Notes |
watch_config |
bool |
false |
Hot-reload config changes (transport excluded). |
default_engine |
string |
"codex" |
Default engine id for new threads. |
default_project |
string|null |
null |
Default project alias. |
transport |
string |
"telegram" |
Transport backend id. |
transports.telegram
| Key |
Type |
Default |
Notes |
bot_token |
string |
(required) |
Telegram bot token from @BotFather. |
chat_id |
int |
(required) |
Default chat id. |
allowed_user_ids |
int[] |
[] |
Allowed sender user ids. Empty disables sender filtering; when set, only these users can interact (including DMs). |
message_overflow |
"trim"|"split" |
"trim" |
How to handle long final responses. |
forward_coalesce_s |
float |
1.0 |
Quiet window for combining a prompt with immediately-following forwarded messages; set 0 to disable. |
voice_transcription |
bool |
false |
Enable voice note transcription. |
voice_max_bytes |
int |
10485760 |
Max voice note size (bytes). |
voice_transcription_model |
string |
"gpt-4o-mini-transcribe" |
OpenAI transcription model name. |
voice_transcription_base_url |
string|null |
null |
Override base URL for voice transcription only. |
voice_transcription_api_key |
string|null |
null |
Override API key for voice transcription only. |
session_mode |
"stateless"|"chat" |
"stateless" |
Auto-resume mode. Onboarding sets "chat" for assistant/workspace. |
show_resume_line |
bool |
true |
Show resume line in message footer. Onboarding sets false for assistant/workspace. |
When allowed_user_ids is set, updates without a sender id (for example, some channel posts) are ignored.
transports.telegram.topics
| Key |
Type |
Default |
Notes |
enabled |
bool |
false |
Enable forum-topic features. |
scope |
"auto"|"main"|"projects"|"all" |
"auto" |
Where topics are managed. |
transports.telegram.files
| Key |
Type |
Default |
Notes |
enabled |
bool |
false |
Enable /file put and /file get. |
auto_put |
bool |
true |
Auto-save uploads. |
auto_put_mode |
"upload"|"prompt" |
"upload" |
Whether uploads also start a run. |
uploads_dir |
string |
"incoming" |
Relative path inside the repo/worktree. |
allowed_user_ids |
int[] |
[] |
Allowed senders for file transfer; empty allows private chats (group usage requires admin). |
deny_globs |
string[] |
(defaults) |
Glob denylist (e.g. .git/**, **/*.pem). |
File size limits (not configurable):
- uploads: 20 MiB
- downloads: 50 MiB
projects.<alias>
| Key |
Type |
Default |
Notes |
path |
string |
(required) |
Repo root (expands ~). Relative paths are resolved against the config directory. |
worktrees_dir |
string |
".worktrees" |
Worktree root (relative to path unless absolute). |
default_engine |
string|null |
null |
Per-project default engine. |
worktree_base |
string|null |
null |
Base branch for new worktrees. |
chat_id |
int|null |
null |
Bind a Telegram chat to this project. |
Legacy config note: top-level bot_token / chat_id are auto-migrated into [transports.telegram] on startup.
Plugins
plugins.enabled
enabled = [] (default) means “load all installed plugins”.
- If non-empty, only distributions with matching names are visible (case-insensitive).
plugins.<id>
Plugin-specific configuration lives under [plugins.<id>] and is passed to command plugins as ctx.plugin_config.
Engine-specific config tables
Engines use top-level tables keyed by engine id. Built-in engines are listed
here; plugin engines should document their own keys.
codex
| Key |
Type |
Default |
Notes |
extra_args |
string[] |
["-c", "notify=[]"] |
Extra CLI args for codex (exec-only flags are rejected). |
profile |
string |
(unset) |
Passed as --profile <name> and used as the session title. |
claude
| Key |
Type |
Default |
Notes |
model |
string |
(unset) |
Optional model override. |
allowed_tools |
string[] |
["Bash", "Read", "Edit", "Write"] |
Auto-approve tool rules. |
dangerously_skip_permissions |
bool |
false |
Skip Claude permissions prompts. |
use_api_billing |
bool |
false |
Keep ANTHROPIC_API_KEY for API billing. |
pi
| Key |
Type |
Default |
Notes |
model |
string |
(unset) |
Passed as --model. |
provider |
string |
(unset) |
Passed as --provider. |
extra_args |
string[] |
[] |
Extra CLI args for pi. |
opencode
| Key |
Type |
Default |
Notes |
model |
string |
(unset) |
Optional model override. |