Configuration
Configuration lives inside your folder at .folderbot/config.toml.
Run folderbot init from your folder to create it interactively.
Basic Configuration
telegram_token = "YOUR_TELEGRAM_BOT_TOKEN"
anthropic_api_key = "YOUR_API_KEY" # Or set FOLDERBOT_API_KEY env var
allowed_user_ids = [123456789] # Your Telegram user ID
# root_folder is implicit — the parent of .folderbot/
model = "anthropic/claude-sonnet-4-20250514" # or openai/gpt-4o, etc.
Required Fields
telegram_tokenYour Telegram bot token from @BotFather.
allowed_user_idsList of Telegram user IDs allowed to use the bot. Get yours from @userinfobot.
Optional Fields
root_folderPath to the folder the bot has access to. Defaults to the parent of
.folderbot/. Only needed if you want to override this default.api_keyYour LLM provider API key. Can also be set via
FOLDERBOT_API_KEYenv var or the provider’s own env var (e.g.,ANTHROPIC_API_KEY,OPENAI_API_KEY). Optional if the provider’s env var is already set.modelThe LLM model to use. Format:
provider/model-name. Default:anthropic/claude-sonnet-4-20250514.user_nameThe name the bot uses when addressing you. Default:
User.auto_log_folderSubdirectory for auto-logging conversations. Default:
logs/.whisper_modelModel for voice transcription. Default:
base. Options:tiny,base,small,medium,large-v3.max_history_charsMaximum character budget for conversation history sent to the LLM. Default:
50000.max_context_charsMaximum character budget for file context. Default:
10000.
Supported Providers
Folderbot uses instructor for LLM integration, supporting 18+ providers:
Provider |
Model format |
Env var |
|---|---|---|
Anthropic |
|
|
OpenAI |
|
|
Azure OpenAI |
|
|
AWS Bedrock |
|
AWS credentials |
|
|
|
Groq |
|
|
Mistral |
|
|
Ollama |
|
(local, no key needed) |
DeepSeek |
|
|
OpenRouter |
|
|
See the instructor docs for the full list of supported providers.
Read Rules
Control which files the bot can access:
[read_rules]
include = ["**/*.md", "**/*.txt"]
exclude = ["**/docs/**", ".git/**"]
append_allowed = ["**/todo.md"]
includeGlob patterns for files the bot can read. Default: all files.
excludeGlob patterns for files to skip. Default: none.
append_allowedGlob patterns for files the bot can append to (not just overwrite).
File Watching
Configure file change notifications:
[watch]
debounce_seconds = 3.0
ignore_patterns = ["*.tmp", ".git/**"]
Multi-Bot Configuration
Run multiple bots with different folders from a single config:
api_key = "SHARED_KEY"
[bots.work]
telegram_token = "WORK_BOT_TOKEN"
root_folder = "~/work/notes"
allowed_user_ids = [123456789]
[bots.personal]
telegram_token = "PERSONAL_BOT_TOKEN"
root_folder = "~/personal/notes"
allowed_user_ids = [123456789]
Run a specific bot:
folderbot run --bot work
folderbot run --bot personal
Each bot gets its own systemd service when installed:
folderbot service install --bot work
folderbot service install --bot personal
Tool Configuration
Tools can be configured under the [tools] section, with subsections per tool:
[tools.web_search]
google_api_key = "YOUR_GOOGLE_API_KEY"
google_cx = "YOUR_SEARCH_ENGINE_ID"
[tools.whisper]
model = "base" # Options: tiny, base, small, medium, large-v3
Each tool reads its own [tools.<name>] section. Custom tools (see below) can also
define their own configuration sections.
Web Search
To enable web search, configure a Google Custom Search API key:
[tools.web_search]
google_api_key = "YOUR_GOOGLE_API_KEY"
google_cx = "YOUR_SEARCH_ENGINE_ID"
See Google Custom Search API for setup instructions.
Custom tools can read their own configuration from [tools.<tool_name>]:
[tools.my_custom_tool]
api_url = "https://example.com"
timeout = 30
The tools_config dict is passed to CustomTools.__init__() or create_tools()
as a keyword argument. Old-style custom tools that don’t accept tools_config continue
to work without changes.