EN·ES·DE·PT·FR
⌘K

Configuração

Referência completa do config.toml. Todas as seções e seus valores padrão.

[provider]

KeyTypeDefaultDescription
kindstring"google_genai"Tipo de provedor: google_genai, openai_compatible ou anthropic
api_keystringChave de API do provedor (obrigatório)
gateway_tokenstringnullToken opcional do Cloudflare AI Gateway enviado como cf-aig-authorization
base_urlstringURL base da API (obrigatório para openai_compatible, não usado para provedores nativos)

[provider.models]

KeyTypeDefaultDescription
primarystring(provider default)Modelo padrão para consultas gerais
faststring(same as primary)Modelo para consultas simples/rápidas
smartstring(same as primary)Modelo para tarefas de raciocínio complexo
Padrões de Modelo
Padrões cientes do provedor: google_genai → primary=gemini-3-flash-preview, fast=gemini-2.5-flash-lite, smart=gemini-3-pro-preview. openai_compatible → todas as camadas padrão para openai/gpt-5-mini. anthropic → todas as camadas padrão para claude-sonnet-4-5. Quando todas as três camadas resolvem para o mesmo modelo, o roteamento automático é desabilitado. Veja Roteamento de Modelos.

[telegram]

KeyTypeDefaultDescription
bot_tokenstringToken do bot Telegram do @BotFather (obrigatório)
allowed_user_idsarray[]IDs numéricos de usuários do Telegram permitidos para conversar. Vazio = sem restrição.

[slack]

Requer a feature flag slack no momento da compilação. Veja Slack para o guia completo de configuração.

KeyTypeDefaultDescription
enabledboolfalseHabilitar o canal Slack
app_tokenstringToken de Nível de App do Slack para Socket Mode (xapp-...)
bot_tokenstringToken de Bot do Slack para Web API (xoxb-...)
allowed_user_idsarray[]IDs de usuários do Slack permitidos para interagir. Vazio = sem restrição.
use_threadsbooltrueResponder em threads por padrão

[discord]

Requer a feature flag discord no momento da compilação. Veja Discord para o guia completo de configuração.

KeyTypeDefaultDescription
bot_tokenstringToken do bot Discord do Portal de Desenvolvedores
allowed_user_idsarray[]IDs de usuários do Discord permitidos para interagir. Vazio = sem restrição.
guild_idintegernullID opcional de guild/servidor para restringir o bot a um único servidor

[state]

KeyTypeDefaultDescription
db_pathstring"aidaemon.db"Caminho para o arquivo de banco de dados SQLite
working_memory_capinteger50Máximo de mensagens por sessão mantidas na memória
consolidation_interval_hoursinteger6Horas entre execuções de consolidação de memória
max_factsinteger100Número máximo de fatos injetados no prompt do sistema
daily_token_budgetintegernullMáximo de tokens totais (entrada+saída) por dia. Null = ilimitado. Reseta à meia-noite UTC.
encryption_keystringnullChave de criptografia SQLCipher (requer recurso encryption). AES-256 em repouso.

[terminal]

KeyTypeDefaultDescription
allowed_prefixesarray(see below)Prefixos de comando aprovados automaticamente sem confirmação do usuário
initial_timeout_secsinteger30Timeout em segundos para execução inicial do comando
max_output_charsinteger4000Truncar saída do comando além deste comprimento
permission_modestring"default"Modo de permissão de risco: default, cautious ou yolo. Veja Risco de Comando.

Prefixos permitidos padrão:

text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenv
Operadores Shell
Comandos contendo ; | && || $() ou crases sempre requerem aprovação, mesmo que o prefixo esteja na lista permitida.

[daemon]

KeyTypeDefaultDescription
health_portinteger8080Porta para o endpoint HTTP de verificação de saúde
health_bindstring"127.0.0.1"Endereço de bind. Use "0.0.0.0" para acesso externo.

[triggers.email]

KeyTypeDefaultDescription
hoststringHostname do servidor IMAP (ex.: imap.gmail.com)
portintegerPorta IMAP (tipicamente 993 para TLS)
usernamestringNome de usuário da conta de e-mail
passwordstringSenha da conta de e-mail ou senha específica de aplicativo
folderstring"INBOX"Pasta IMAP para monitorar

[mcp.<name>]

KeyTypeDefaultDescription
commandstringCaminho ou nome do executável para o servidor MCP
argsarray[]Argumentos de linha de comando

[browser]

KeyTypeDefaultDescription
enabledboolfalseHabilitar ferramenta de automação de navegador
headlessbooltrueExecutar Chrome sem janela visível
screenshot_widthinteger1280Largura do viewport do navegador em pixels
screenshot_heightinteger720Altura do viewport do navegador em pixels
user_data_dirstring~/.aidaemon/chrome-profileDiretório do perfil Chrome para sessões persistentes
profilestringDefaultNome do perfil Chrome dentro do user_data_dir
remote_debugging_portintegernullConectar ao Chrome existente nesta porta (avançado)

[skills]

KeyTypeDefaultDescription
dirstring"skills"Diretório contendo arquivos markdown de skills
enabledbooltrueHabilitar o sistema de skills
registriesarray[]URLs de manifestos JSON de registro de skills para navegação/instalação de skills

[subagents]

KeyTypeDefaultDescription
enabledbooltruePermitir que o agente crie sub-agentes
max_depthinteger3Nível máximo de aninhamento para recursão de sub-agentes
max_iterationsinteger10Máximo de passos do loop agêntico por invocação de sub-agente
max_response_charsinteger8000Truncar respostas de sub-agentes além deste comprimento
timeout_secsinteger300Timeout de execução de sub-agente em segundos

[cli_agents]

KeyTypeDefaultDescription
enabledboolfalseHabilitar ferramenta de delegação de agente CLI
timeout_secsinteger600Timeout global para execução de agente CLI
max_output_charsinteger16000Comprimento máximo global de saída dos agentes CLI

[cli_agents.tools.<name>]

KeyTypeDefaultDescription
commandstringComando a executar
argsarray[]Argumentos padrão passados ao comando
descriptionstringDescrição da ferramenta mostrada ao LLM
timeout_secsintegernullSobrescrever timeout global para esta ferramenta
max_output_charsintegernullSobrescrever saída máxima global para esta ferramenta

[search]

KeyTypeDefaultDescription
backendstring"duckduckgo"Backend de busca: duckduckgo (sem chave necessária) ou brave
api_keystring""Chave de API para busca Brave (suporta "keychain")

[scheduler]

KeyTypeDefaultDescription
enabledbooltrueHabilitar o sistema de tarefas agendadas
tick_interval_secsinteger30Frequência com que o agendador verifica tarefas pendentes

[[scheduler.tasks]]

Tarefas agendadas pré-definidas carregadas da configuração na inicialização:

KeyTypeDefaultDescription
namestringRótulo legível da tarefa
schedulestringLinguagem natural ou expressão cron (veja Agendador)
promptstringO que o agente deve fazer quando a tarefa disparar
oneshotboolfalseDisparar uma vez e depois auto-excluir
trustedboolfalseExecutar com autonomia total (sem aprovação de terminal necessária)

[files]

KeyTypeDefaultDescription
enabledbooltrueHabilitar ferramentas de transferência de arquivo (envio/recebimento)
inbox_dirstring"~/.aidaemon/files/inbox"Diretório para arquivos recebidos do Telegram
outbox_dirsarray["~"]Diretórios dos quais o agente tem permissão para enviar arquivos
max_file_size_mbinteger10Tamanho máximo de arquivo para transferências em MB
retention_hoursinteger24Horas para reter arquivos recebidos antes da limpeza

Gerenciamento de Segredos

Valores sensíveis de configuração suportam dois métodos de resolução além de texto simples, mais um modo opcional somente ambiente:

Chaveiro do SO

Defina qualquer campo secreto como "keychain" para resolvê-lo a partir do chaveiro do SO (macOS Keychain, Linux secret-service):

toml
[provider]
api_key = "keychain"    # Resolved from keychain entry "api_key"

[telegram]
bot_token = "keychain"  # Resolved from keychain entry "bot_token"

Armazene valores com o comando CLI keychain antes da primeira execução:

bash
# Store a secret (prompts interactively)
aidaemon keychain set api_key
aidaemon keychain set bot_token

# Verify a stored secret (shows masked value)
aidaemon keychain get api_key

# Remove a secret
aidaemon keychain delete api_key
Segurança
O comando set solicita o valor interativamente com confirmação, mantendo segredos fora do histórico do seu shell.

Variáveis de Ambiente

Use a sintaxe ${VAR_NAME} em qualquer lugar nos valores de configuração:

toml
[provider]
api_key = "${GOOGLE_API_KEY}"

[telegram]
bot_token = "${TELEGRAM_BOT_TOKEN}"

Modo somente ambiente (sem chaveiro)

Se você preferir não usar o chaveiro do SO, defina estas variáveis de ambiente em tempo de execução:

bash
# Desativa o armazenamento no chaveiro do SO e usa segredos com base em arquivo env
export AIDAEMON_NO_KEYCHAIN=1

# Opcional: definir um caminho específico para o arquivo env (padrão: ./.env)
export AIDAEMON_ENV_FILE=/caminho/absoluto/para/.env

Neste modo, o aidaemon lê segredos do arquivo env selecionado (ou de variáveis de ambiente do processo quando não existir arquivo env) e persiste atualizações de segredos nesse arquivo env — incluindo a rotação de tokens OAuth access/refresh.

Segurança no modo somente ambiente
Mantenha o arquivo env privado (chmod 600) e fora do controle de versão.
Campos de Chaveiro Suportados
Campos que suportam "keychain": provider.api_key, provider.gateway_token, telegram.bot_token, slack.app_token, slack.bot_token, discord.bot_token, triggers.email.password, state.encryption_key, search.api_key e campos de perfil http_auth.*.

[health]

Sistema de monitoramento de saúde. Veja Monitoramento de Saúde.

KeyTypeDefaultDescription
enabledbooltrueHabilitar o sistema de monitoramento de saúde
tick_interval_secsinteger30Frequência com que verificar probes pendentes
result_retention_daysinteger7Dias para reter resultados de verificação de saúde

[[health.probes]]

KeyTypeDefaultDescription
namestringNome do probe
probe_typestringTipo: http, command, file ou port
targetstringURL alvo, comando, caminho de arquivo ou host:port
schedulestringExpressão cron ou intervalo
consecutive_failures_alertinteger3Alertar após N falhas consecutivas
alert_session_idsarray[]IDs de sessão para notificar em caso de alerta

[updates]

Sistema de auto-atualização. Veja Auto-Atualizador.

KeyTypeDefaultDescription
modestring"check_only"Modo de atualização: enable, check_only ou disable
check_interval_hoursinteger24Horas entre verificações de atualização
check_at_utc_hourintegernullHora UTC específica (0-23) para verificação diária
confirmation_timeout_minsinteger60Minutos para aguardar aprovação do usuário

[people]

Inteligência de Pessoas — um livro de contatos pessoal gerenciado pelo seu assistente. Veja Inteligência de Pessoas.

KeyTypeDefaultDescription
enabledboolfalseEstado inicial para inteligência de pessoas (pode ser alternado em tempo de execução via chat)
auto_extractbooltrueAprender automaticamente fatos sobre pessoas a partir de conversas
auto_extract_categoriesstring[]["birthday", "preference", "interest", "work", "family", "important_date"]Categorias de fatos que podem ser extraídas automaticamente
restricted_categoriesstring[]["health", "finance", "political", "religious"]Categorias que nunca são extraídas automaticamente
fact_retention_daysinteger180Dias antes que fatos auto-extraídos não confirmados sejam removidos
reconnect_reminder_daysinteger30Dias de inatividade antes de sugerir uma reconexão

Exemplo de Configuração

config.toml
[provider]
kind = "google_genai"
api_key = "AIza..."

[provider.models]
primary = "gemini-3-flash-preview"
fast = "gemini-2.5-flash-lite"
smart = "gemini-3-pro-preview"

[telegram]
bot_token = "123456:ABC-DEF..."
allowed_user_ids = [123456789]

# Slack (requires --features slack)
# [slack]
# enabled = true
# app_token = "xapp-..."
# bot_token = "xoxb-..."
# allowed_user_ids = ["U123456789"]
# use_threads = true

[state]
db_path = "aidaemon.db"
working_memory_cap = 50
max_facts = 100

[terminal]
allowed_prefixes = ["ls", "cat", "head", "tail", "echo", "date", "whoami"]

[daemon]
health_port = 8080

[mcp.filesystem]
command = "npx"
args = ["-y", "@anthropic/mcp-filesystem"]

[browser]
enabled = true
headless = true

[skills]
dir = "skills"
enabled = true

[search]
backend = "duckduckgo"

[scheduler]
enabled = true

[[scheduler.tasks]]
name = "Morning check-in"
schedule = "weekdays at 9am"
prompt = "Check system health and summarize any overnight alerts"
trusted = true

[files]
enabled = true
inbox_dir = "~/.aidaemon/files/inbox"
outbox_dirs = ["~"]

# Discord (requires --features discord)
# [discord]
# bot_token = "MTIz..."
# allowed_user_ids = [123456789012345678]

# Health monitoring
[health]
enabled = true

[[health.probes]]
name = "API Server"
probe_type = "http"
target = "https://api.example.com/health"
schedule = "every 5m"

# People intelligence (opt-in, can also enable via chat)
# [people]
# enabled = true

# Self-updater
[updates]
mode = "check_only"