EN·ES·DE·PT·FR
⌘K

Configuracion

Referencia completa de config.toml. Todas las secciones y sus valores por defecto.

[provider]

KeyTypeDefaultDescription
kindstring"google_genai"Tipo de proveedor: google_genai, openai_compatible o anthropic
api_keystringClave API del proveedor (requerida)
gateway_tokenstringnullToken opcional de Cloudflare AI Gateway usado como cf-aig-authorization
base_urlstringURL base de la API (requerida para openai_compatible, no se usa para proveedores nativos)

[provider.models]

KeyTypeDefaultDescription
primarystring(provider default)Modelo por defecto para consultas generales
faststring(same as primary)Modelo para consultas simples/rapidas
smartstring(same as primary)Modelo para tareas de razonamiento complejo
Valores por Defecto de Modelos
Valores por defecto segun el proveedor: google_genai → primary=gemini-3-flash-preview, fast=gemini-2.5-flash-lite, smart=gemini-3-pro-preview. openai_compatible → todos los niveles por defecto a openai/gpt-5-mini. anthropic → todos los niveles por defecto a claude-sonnet-4-5. Cuando los tres niveles se resuelven al mismo modelo, el enrutamiento automatico se desactiva. Ver Enrutamiento de Modelos.

[telegram]

KeyTypeDefaultDescription
bot_tokenstringToken del bot de Telegram de @BotFather (requerido)
allowed_user_idsarray[]IDs numericos de usuarios de Telegram permitidos para chatear. Vacio = sin restriccion.

[slack]

Requiere el feature flag slack en tiempo de compilacion. Ver Slack para la guia completa de configuracion.

KeyTypeDefaultDescription
enabledboolfalseHabilitar el canal de Slack
app_tokenstringToken de nivel de aplicacion de Slack para Socket Mode (xapp-...)
bot_tokenstringToken de bot de Slack para Web API (xoxb-...)
allowed_user_idsarray[]IDs de usuarios de Slack permitidos para interactuar. Vacio = sin restriccion.
use_threadsbooltrueResponder en hilos por defecto

[discord]

Requiere el feature flag discord en tiempo de compilacion. Ver Discord para la guia completa de configuracion.

KeyTypeDefaultDescription
bot_tokenstringToken del bot de Discord del Portal de Desarrolladores
allowed_user_idsarray[]IDs de usuarios de Discord permitidos para interactuar. Vacio = sin restriccion.
guild_idintegernullID opcional de guild/servidor para restringir el bot a un solo servidor

[state]

KeyTypeDefaultDescription
db_pathstring"aidaemon.db"Ruta al archivo de base de datos SQLite
working_memory_capinteger50Maximo de mensajes por sesion mantenidos en memoria
consolidation_interval_hoursinteger6Horas entre ejecuciones de consolidacion de memoria
max_factsinteger100Numero maximo de hechos inyectados en el prompt del sistema
daily_token_budgetintegernullMaximo de tokens totales (entrada+salida) por dia. Null = ilimitado. Se reinicia a medianoche UTC.
encryption_keystringnullClave de cifrado SQLCipher (requiere la caracteristica encryption). AES-256 en reposo.

[terminal]

KeyTypeDefaultDescription
allowed_prefixesarray(see below)Prefijos de comandos aprobados automaticamente sin confirmacion del usuario
initial_timeout_secsinteger30Tiempo de espera en segundos para la ejecucion inicial del comando
max_output_charsinteger4000Truncar la salida del comando mas alla de esta longitud
permission_modestring"default"Modo de permisos de riesgo: default, cautious o yolo. Ver Riesgo de Comandos.

Prefijos permitidos por defecto:

text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenv
Operadores de Shell
Los comandos que contienen ; | && || $() o backticks siempre requieren aprobacion, incluso si el prefijo esta en la lista blanca.

[daemon]

KeyTypeDefaultDescription
health_portinteger8080Puerto para el endpoint HTTP de verificacion de salud
health_bindstring"127.0.0.1"Direccion de enlace. Usa "0.0.0.0" para acceso externo.

[triggers.email]

KeyTypeDefaultDescription
hoststringNombre del host del servidor IMAP (ej., imap.gmail.com)
portintegerPuerto IMAP (tipicamente 993 para TLS)
usernamestringNombre de usuario de la cuenta de email
passwordstringContrasena de la cuenta de email o contrasena especifica de aplicacion
folderstring"INBOX"Carpeta IMAP a monitorear

[mcp.<name>]

KeyTypeDefaultDescription
commandstringRuta o nombre del ejecutable para el servidor MCP
argsarray[]Argumentos de linea de comandos

[browser]

KeyTypeDefaultDescription
enabledboolfalseHabilitar herramienta de automatizacion del navegador
headlessbooltrueEjecutar Chrome sin ventana visible
screenshot_widthinteger1280Ancho del viewport del navegador en pixeles
screenshot_heightinteger720Altura del viewport del navegador en pixeles
user_data_dirstring~/.aidaemon/chrome-profileDirectorio de perfil de Chrome para sesiones persistentes
profilestringDefaultNombre del perfil de Chrome dentro de user_data_dir
remote_debugging_portintegernullConectarse a Chrome existente en este puerto (avanzado)

[skills]

KeyTypeDefaultDescription
dirstring"skills"Directorio que contiene archivos markdown de skills
enabledbooltrueHabilitar el sistema de skills
registriesarray[]URLs de manifiestos JSON de registros de skills para explorar/instalar skills

[subagents]

KeyTypeDefaultDescription
enabledbooltruePermitir al agente crear sub-agentes
max_depthinteger3Nivel maximo de anidamiento para recursion de sub-agentes
max_iterationsinteger10Maximo de pasos del bucle agentico por invocacion de sub-agente
max_response_charsinteger8000Truncar respuestas de sub-agentes mas alla de esta longitud
timeout_secsinteger300Tiempo de espera de ejecucion de sub-agentes en segundos

[cli_agents]

KeyTypeDefaultDescription
enabledboolfalseHabilitar herramienta de delegacion a agentes CLI
timeout_secsinteger600Tiempo de espera global para ejecucion de agentes CLI
max_output_charsinteger16000Longitud maxima global de salida de agentes CLI

[cli_agents.tools.<name>]

KeyTypeDefaultDescription
commandstringComando a ejecutar
argsarray[]Argumentos por defecto pasados al comando
descriptionstringDescripcion de la herramienta mostrada al LLM
timeout_secsintegernullSobrescribir tiempo de espera global para esta herramienta
max_output_charsintegernullSobrescribir salida maxima global para esta herramienta

[search]

KeyTypeDefaultDescription
backendstring"duckduckgo"Backend de busqueda: duckduckgo (sin clave necesaria) o brave
api_keystring""Clave API para busqueda Brave (soporta "keychain")

[scheduler]

KeyTypeDefaultDescription
enabledbooltrueHabilitar el sistema de tareas programadas
tick_interval_secsinteger30Con que frecuencia el programador verifica tareas pendientes

[[scheduler.tasks]]

Tareas programadas predefinidas cargadas desde la configuracion al inicio:

KeyTypeDefaultDescription
namestringEtiqueta legible de la tarea
schedulestringLenguaje natural o expresion cron (ver Programador)
promptstringLo que el agente debe hacer cuando se dispara la tarea
oneshotboolfalseDisparar una vez y luego auto-eliminar
trustedboolfalseEjecutar con autonomia total (sin aprobacion de terminal necesaria)

[files]

KeyTypeDefaultDescription
enabledbooltrueHabilitar herramientas de transferencia de archivos (enviar/recibir)
inbox_dirstring"~/.aidaemon/files/inbox"Directorio para archivos recibidos desde Telegram
outbox_dirsarray["~"]Directorios desde los cuales el agente puede enviar archivos
max_file_size_mbinteger10Tamano maximo de archivo para transferencias en MB
retention_hoursinteger24Horas de retencion de archivos recibidos antes de la limpieza

Gestion de Secretos

Los valores sensibles de configuracion soportan dos metodos de resolucion ademas de texto plano, mas un modo opcional solo-entorno:

Llavero del SO

Establece cualquier campo secreto a "keychain" para resolverlo desde el llavero del 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"

Almacena los valores con el comando CLI keychain antes de la primera ejecucion:

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
Seguridad
El comando set solicita el valor de forma interactiva con confirmacion, manteniendo los secretos fuera del historial de tu shell.

Variables de Entorno

Usa la sintaxis ${VAR_NAME} en cualquier lugar de los valores de configuracion:

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

[telegram]
bot_token = "${TELEGRAM_BOT_TOKEN}"

Modo solo entorno (sin keychain)

Si prefieres no usar el llavero del SO, configura estas variables de entorno en tiempo de ejecucion:

bash
# Desactiva el almacenamiento en llavero del SO y usa secretos respaldados por archivo env
export AIDAEMON_NO_KEYCHAIN=1

# Opcional: elegir una ruta especifica para el archivo env (por defecto: ./.env)
export AIDAEMON_ENV_FILE=/ruta/absoluta/al/.env

En este modo, aidaemon lee secretos desde el archivo env seleccionado (o desde variables de entorno del proceso si no existe archivo env) y persiste las actualizaciones de secretos en ese archivo env — incluyendo la rotacion de tokens OAuth access/refresh.

Seguridad en modo solo-entorno
Manten el archivo env privado (chmod 600) y fuera del control de versiones.
Campos Compatibles con Keychain
Campos que soportan "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 y campos de perfil http_auth.*.

[health]

Sistema de monitoreo de salud. Ver Monitoreo de Salud.

KeyTypeDefaultDescription
enabledbooltrueHabilitar el sistema de monitoreo de salud
tick_interval_secsinteger30Con que frecuencia verificar sondas pendientes
result_retention_daysinteger7Dias de retencion de resultados de verificaciones de salud

[[health.probes]]

KeyTypeDefaultDescription
namestringNombre de la sonda
probe_typestringTipo: http, command, file o port
targetstringURL objetivo, comando, ruta de archivo o host:port
schedulestringExpresion cron o intervalo
consecutive_failures_alertinteger3Alertar despues de N fallos consecutivos
alert_session_idsarray[]IDs de sesion a notificar en caso de alerta

[updates]

Sistema de auto-actualizacion. Ver Auto-Actualizador.

KeyTypeDefaultDescription
modestring"check_only"Modo de actualizacion: enable, check_only o disable
check_interval_hoursinteger24Horas entre verificaciones de actualizaciones
check_at_utc_hourintegernullHora UTC especifica (0-23) para la verificacion diaria
confirmation_timeout_minsinteger60Minutos de espera para la aprobacion del usuario

[people]

Inteligencia de Personas — una libreta de contactos personal gestionada por tu asistente. Ver Inteligencia de Personas.

KeyTypeDefaultDescription
enabledboolfalseEstado inicial para inteligencia de personas (puede activarse en tiempo de ejecucion via chat)
auto_extractbooltrueAprender automaticamente hechos sobre personas a partir de conversaciones
auto_extract_categoriesstring[]["birthday", "preference", "interest", "work", "family", "important_date"]Categorias de hechos que pueden auto-extraerse
restricted_categoriesstring[]["health", "finance", "political", "religious"]Categorias que nunca se auto-extraen
fact_retention_daysinteger180Dias antes de que los hechos auto-extraidos no confirmados sean eliminados
reconnect_reminder_daysinteger30Dias de inactividad antes de sugerir reconexion

Ejemplo de Configuracion

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"