Справочник конфигурации
Полный справочник по ~/.fathom/config.toml. Все секции опциональны — отсутствующие поля используют значения по умолчанию. Старые конфиги без новых секций загружаются без ошибок.
Full reference for ~/.fathom/config.toml. All sections are optional — missing fields use defaults. Old configs without newer sections load without errors.
Полный пример
# ─────────────────────────────────────────
# LLM Provider
# ─────────────────────────────────────────
[llm]
provider = "deepseek"
base_url = "https://api.deepseek.com"
api_key = "sk-your-key"
model = "deepseek-chat"
fast_model = ""
max_tokens = 8192
temperature = 0.7
# ─────────────────────────────────────────
# Agents
# ─────────────────────────────────────────
[agent]
max_depth = 2
max_agents = 20
max_iterations = 50
timeout_seconds = 600
use_multiprocess = false
stall_warn_seconds = 450
stall_kill_seconds = 1200
session_token_limit = 0
replan_rounds = 1
approval_tools = ["save_contacts", "git_push"]
approval_fallback = "allow"
approval_timeout_seconds = 300
# ─────────────────────────────────────────
# Search
# ─────────────────────────────────────────
[search]
backend = "hybrid"
[search.linkup]
api_key = "..."
[search.exa]
api_key = "..."
[search.tavily]
api_key = "..."
[search.serper]
api_key = "..."
[search.brave]
api_key = "..."
[search.parallel]
api_key = "..."
# ─────────────────────────────────────────
# Context Management
# ─────────────────────────────────────────
[context]
context_window = 128000
context_window_profile = "low"
compact_threshold = 0.50
tool_output_max_bytes = 50000
tool_output_max_lines = 2000
turn_budget_bytes = 200000
# ─────────────────────────────────────────
# Memory
# ─────────────────────────────────────────
[memory]
enabled = true
db_path = ""
embeddings = "auto"
embedding_model = "text-embedding-3-small"
semantic_weight = 0.7
top_k = 5
min_score = 0.25
temporal_decay = 0.01
auto_digest = true
llm_classify = true
rerank = false
gc_ttl_days = 30
gc_compact_above = 200
gc_auto = false
# ─────────────────────────────────────────
# Hooks
# ─────────────────────────────────────────
[[hooks]]
event = "PreToolUse"
command = "/usr/local/bin/my-guard.sh"
tool = "shell"
timeout_ms = 3000
# ─────────────────────────────────────────
# Output
# ─────────────────────────────────────────
[output]
dir = "./research-output"
# ─────────────────────────────────────────
# Export
# ─────────────────────────────────────────
[export]
format = "html"
# ─────────────────────────────────────────
# Notifications
# ─────────────────────────────────────────
[notifications]
webhook_url = ""
email_to = ""
email_from = ""
smtp_host = ""
smtp_port = 587
smtp_username = ""
smtp_password = ""
telegram_bot_token = ""
telegram_chat_id = ""
# ─────────────────────────────────────────
# Contacts
# ─────────────────────────────────────────
[contacts]
db_path = "./contacts.db"
pg_url = ""
# ─────────────────────────────────────────
# CRM Sync
# ─────────────────────────────────────────
[crm]
provider = ""
domain = ""
api_key = ""
# ─────────────────────────────────────────
# MCP Servers
# ─────────────────────────────────────────
[[mcp.servers]]
name = "web-search"
transport = "stdio"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-web-search"]
[[mcp.servers]]
name = "remote-tools"
transport = "http"
url = "https://mcp.example.com"[llm]
Настройки LLM-провайдера. Для работы обязателен api_key.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
provider | string | “deepseek” | Provider name |
base_url | string | “https://api.deepseek.com” | API endpoint |
api_key | string | “” | Required for operation |
model | string | “deepseek-chat” | Model identifier |
fast_model | string | “” | Cheap/fast model for entity extraction, memory absorb, reranking. Empty = reuse model |
max_tokens | u32 | 8192 | Max response tokens |
temperature | f32 | 0.7 | Generation temperature |
[agent]
Настройки оркестрации агентов: лимиты глубины, конкурентность и таймауты.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
max_depth | u32 | 2 | Max sub-agent nesting depth |
max_agents | u32 | 20 | Max agents per session |
max_iterations | u32 | 50 | Max LLM iterations per agent |
timeout_seconds | u64 | 600 | Session timeout (seconds) |
use_multiprocess | bool | false | Isolate agents in separate processes |
max_concurrent_children | u32 | 4 | Максимум дочерних агентов одного родителя, работающих одновременно |
stall_warn_seconds | u64 | 450 | Секунды нулевого прогресса до предупреждения о зависании (0 отключает) |
stall_kill_seconds | u64 | 1200 | Секунды нулевого прогресса до отмены агента (0 отключает) |
deny_tools | map | {} | Списки запрещённых инструментов по ролям: {"verifier": ["shell", "save_contacts"]} |
role_models | map | {} | Переопределение моделей по ролям: {"researcher": "deepseek-chat", "analyst": "deepseek-reasoner"} |
session_token_limit | u64 | 0 | Бюджет токенов на сессию; 0 отключает. Fan-out останавливается при достижении |
replan_rounds | u32 | 1 | Goal Mode: максимум доборных раундов после начального fan-out (0 отключает) |
approval_tools | string[] | [“save_contacts”, “git_push”] | Инструменты, требующие одобрения оператора перед выполнением |
approval_fallback | string | “allow” | Вердикт при отсутствии оператора: "allow" или "deny" |
approval_timeout_seconds | u64 | 300 | Секунды ожидания одобрения оператора до применения фолбэка |
[search]
Конфигурация поискового бэкенда. Подсекции [search.*] содержат API-ключи по провайдерам. DuckDuckGo не требует ключа.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
backend | string | “hybrid” | Поисковый бэкенд для использования |
Значения бэкенда
| Значение | Описание |
|---|---|
linkup | Поисковый API Linkup |
exa | Нейропоиск Exa |
tavily | Поисковый API Tavily |
serper | API Serper (Google) |
brave | Поисковый API Brave |
parallel | Поисковый API Parallel.ai |
duckduckgo | DuckDuckGo (ключ не нужен) |
hybrid | Первый настроенный бэкенд с результатами (порядок: linkup → exa → tavily → serper → brave → parallel.ai → duckduckgo) |
smart | Все настроенные бэкенды параллельно, дедупликация по URL, ранжирование reciprocal rank fusion |
[context]
Управление контекстом и настройки токен-бюджета.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
context_window | u32 | 128000 | Context window size (tokens) |
context_window_profile | string | “low” | Профиль окна: low (128K) или max (256K). Явное context_window имеет приоритет |
compact_threshold | f32 | 0.50 | Compression trigger (fraction of window) |
tool_output_max_bytes | u32 | 50000 | Tool output limit (bytes) |
tool_output_max_lines | u32 | 2000 | Tool output limit (lines) |
turn_budget_bytes | u32 | 200000 | Aggregate budget per turn (bytes) |
[output]
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
dir | string | “./research-output” | Каталог вывода результатов |
[export]
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
format | string | “html” | pdf | html | json | docx. Неизвестный формат откатывается к HTML. PDF/DOCX требуют pandoc. |
[notifications]
Уведомления отправляются только когда соответствующее поле непустое.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
webhook_url | string | “” | URL для JSON POST по завершении |
email_to | string | “” | Получатель email |
email_from | string | “” | Отправитель email (по умолчанию: fathom@localhost) |
smtp_host | string | “” | SMTP-сервер (по умолчанию: localhost) |
smtp_port | u16 | 587 | SMTP-порт |
smtp_username | string | “” | SMTP-логин |
smtp_password | string | “” | SMTP-пароль |
telegram_bot_token | string | “” | Токен Telegram-бота |
telegram_chat_id | string | “” | ID чата Telegram для уведомлений |
[contacts]
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
db_path | string | “./contacts.db” | Путь к базе SQLite |
pg_url | string | “” | PostgreSQL URL (непустой → использовать PG вместо SQLite) |
[crm]
Синхронизация CRM. Оставьте provider пустым, чтобы отключить.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
provider | string | “” | amocrm | bitrix24 | hubspot | пусто |
domain | string | “” | Домен/поддомен (amoCRM, Bitrix24) |
api_key | string | “” | API-ключ/токен |
[memory]
Настройки долгосрочной семантической памяти. Подсистема памяти хранит факты в SQLite с гибридным вектор+BM25 поиском, графом сущностей и автоматическим обслуживанием.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | bool | true | Главный переключатель. При false база памяти не открывается и memory_* инструменты не регистрируются |
db_path | string | “” | Путь к SQLite-файлу памяти. Пусто = ~/.fathom/memory.db |
embeddings | string | “auto” | Бэкенд эмбеддингов: auto, openai или tfidf |
embedding_base_url | string | “” | OpenAI-совместимый эндпоинт эмбеддингов. Пусто = использовать llm.base_url |
embedding_api_key | string | “” | API-ключ для эндпоинта эмбеддингов. Пусто = использовать llm.api_key |
embedding_model | string | “text-embedding-3-small” | ID модели эмбеддингов (OpenAI-совместимый бэкенд) |
semantic_weight | f32 | 0.7 | Вес гибридного поиска: score = w*semantic + (1-w)*bm25 |
top_k | u32 | 5 | Количество записей, возвращаемых поиском/дайджестом |
min_score | f32 | 0.25 | Минимальный гибридный скор для результата поиска |
temporal_decay | f32 | 0.01 | Линейный распад свежести в день (0 отключает) |
auto_digest | bool | true | Инжектировать тематический дайджест в system prompt топ-агентов |
llm_classify | bool | true | Использовать LLM для классификации новых фактов (duplicate/supersede/contradict/related) |
rerank | bool | false | Второй проход LLM-реранкинга результатов поиска (+1 LLM-вызов на поиск) |
gc_ttl_days | u32 | 30 | GC: архивировать неиспользованные run-факты старше этого срока |
gc_compact_above | u32 | 200 | GC: уплотнить scope-группу, когда она содержит больше этого количества активных строк |
gc_confidence_decay_rate | f64 | 0.02 | GC: ежедневное снижение достоверности неактивных записей |
gc_confidence_threshold | f64 | 0.15 | GC: порог достоверности, ниже которого запись архивируется |
gc_auto | bool | false | Авто-запуск GC + distill по таймеру (каждый час) |
[[hooks]]
Хуки жизненного цикла — подпроцессы, вызываемые в определённых точках агентного цикла. JSON на stdin, JSON-вердикт на stdout. Все хуки best-effort: таймаут, ошибка запуска или неразборчивый вердикт = allow.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
event | string | required | PreToolUse, PostToolUse или Stop |
command | string | required | Команда для запуска (получает JSON на stdin, отвечает JSON на stdout) |
args | string[] | [] | Аргументы команды |
tool | string | “” | Срабатывать только для этого инструмента (пусто = все). Применимо к Pre/PostToolUse |
timeout_ms | u64 | 5000 | Таймаут хука в миллисекундах (минимум 500мс в рантайме) |
События хуков
| Поле | Вход (JSON на stdin) | Выход (JSON на stdout) |
|---|---|---|
PreToolUse | {“event”:“PreToolUse”,“tool”:“…”,“args”:…} | {“decision”:“allow|deny”,“reason”:“…”} |
PostToolUse | {“event”:“PostToolUse”,“tool”:“…”,“result”:“…”,“success”:bool} | {“append_context”:“…”} |
Stop | {“event”:“Stop”,“final_summary”:“…”} | {“continue”:bool,“reason”:“…”} |
Stop-хуки могут принудительно продолжить до 3 раз (MAX_STOP_CONTINUATIONS). PostToolUse append_context значения конкатенируются и оборачиваются в [hook context].
[[mcp.servers]]
Массив MCP (Model Context Protocol) серверов для расширения возможностей инструментов.
| Поле | Тип | Описание |
|---|---|---|
name | string | Имя сервера |
transport | string | stdio | http |
command | string? | Команда (для stdio транспорта) |
args | string[] | Аргументы (для stdio транспорта) |
url | string? | URL (для http транспорта) |
Переменные окружения
Переменные окружения переопределяют значения файла конфига. Поддерживаемые переменные включают PR_CONFIG, FATHOM_API_KEYS и FATHOM_RATE_LIMIT.
Порядок приоритета
- 1Переменные окруженияНаивысший приоритет
явные переменные, например
PR_CONFIG,PR_MEMORY_DBиPARALLEL_CDP_ENDPOINT - 2Файл конфига
~/.fathom/config.toml - 3Значения по умолчаниюНизший приоритет
Встроенные значения по умолчанию
| Переменная окружения | Эквивалент в конфиге | Описание |
|---|---|---|
LLM_API_KEY | llm.api_key | LLM API-ключ |
LLM_PROVIDER | llm.provider | Имя LLM-провайдера |
LLM_MODEL | llm.model | Идентификатор модели |
LLM_BASE_URL | llm.base_url | API-эндпоинт |
SEARCH_BACKEND | search.backend | Поисковый бэкенд |
PARALLEL_VISION_API_BASE | — | Базовый URL API vision-модели |
PARALLEL_VISION_API_KEY | — | API-ключ vision-модели |
PARALLEL_VISION_MODEL | — | Имя vision-модели |
PARALLEL_CDP_ENDPOINT | — | Chrome DevTools Protocol endpoint для браузерных инструментов (по умолчанию: ws://127.0.0.1:9222) |
PARALLEL_2GIS_API_KEY | — | API-ключ 2GIS Catalog для поиска в бизнес-каталогах |
PARALLEL_GOOGLE_PLACES_API_KEY | — | API-ключ Google Places для поиска в бизнес-каталогах |
PARALLEL_YANDEX_MAPS_API_KEY | — | API-ключ Yandex Maps Geosearch для поиска в бизнес-каталогах |
PARALLEL_TWITTER_BEARER_TOKEN | — | Bearer-токен Twitter/X API v2 для поиска в соцсетях |
FATHOM_API_KEYS | — | API-ключи через запятую для аутентификации HTTP-сервера |
FATHOM_RATE_LIMIT | — | Rate limit HTTP-сервера на клиента (по умолчанию: 120 запросов/минуту) |
PR_CONFIG | — | Переопределить путь к файлу config.toml |
PR_MEMORY_DB | memory.db_path | Переопределить путь к SQLite-базе памяти |
PR_OUTPUT_DIR | output.dir | Каталог вывода сессии (передаётся воркер-процессам) |
PR_JOBS_DB | — | Переопределить путь к базе задач |
PR_JOBS_DIR | — | Переопределить каталог вывода задач |
FATHOM_CREDENTIAL_KEY | — | 32-byte AES-256-GCM vault key, supplied as 64-character hex or base64 |
FATHOM_COMPUTER_SERVICE_URL | — | Computer relay service URL (default: http://127.0.0.1:8765) |
COMPUTER_TOKEN | — | Authentication token for the computer service or supervisor |
COMPUTER_ALLOW_PRIVATE_HOSTS | — | Development-only override for private/localhost browser targets (default: false) |
Worker control plane
Persistent coworkers, schedules, credentials, notifications, replay and observability are HTTP control-plane capabilities. They are configured through the authenticated /api/v1 routes rather than additional TOML sections. Use the API reference for current routes and request contracts.
Computer use is enabled by the service settings above. The relay supports browser actions, screenshots, accessibility snapshots, confined files and operator control leases; Docker supervisor options are documented in the root docs/COMPUTER-USE.md.
CLI-команды конфига
Управляйте конфигурацией из командной строки.
Показать текущий конфиг
fathom config showЗадать значение
fathom config set llm.api_key "sk-..."Использует точечную нотацию для вложенных ключей: section.field.
Обратная совместимость
Все новые секции используют #[serde(default)]. Конфиги старых версий (только с [llm], [agent], [search]) загружаются корректно — новые поля автоматически получают значения по умолчанию.
All new sections use #[serde(default)]. Configs from older versions
(with only [llm], [agent], [search]) load correctly —
new fields receive default values automatically.