EN·ES·DE·PT·FR
⌘K

Configuration

Référence complète de config.toml. Toutes les sections et leurs valeurs par défaut.

[provider]

KeyTypeDefaultDescription
kindstring"google_genai"Type de fournisseur : google_genai, openai_compatible, ou anthropic
api_keystringClé API pour le fournisseur (obligatoire)
gateway_tokenstringnullToken optionnel Cloudflare AI Gateway envoyé comme cf-aig-authorization
base_urlstringURL de base de l'API (obligatoire pour openai_compatible, non utilisé pour les fournisseurs natifs)

[provider.models]

KeyTypeDefaultDescription
primarystring(provider default)Modèle par défaut pour les requêtes générales
faststring(same as primary)Modèle pour les requêtes simples/rapides
smartstring(same as primary)Modèle pour les tâches de raisonnement complexes
Valeurs par Défaut des Modèles
Valeurs par défaut selon le fournisseur : google_genai → primary=gemini-3-flash-preview, fast=gemini-2.5-flash-lite, smart=gemini-3-pro-preview. openai_compatible → tous les niveaux par défaut à openai/gpt-5-mini. anthropic → tous les niveaux par défaut à claude-sonnet-4-5. Lorsque les trois niveaux sont le même modèle, le routage automatique est désactivé. Voir Routage des Modèles.

[telegram]

KeyTypeDefaultDescription
bot_tokenstringToken du bot Telegram depuis @BotFather (obligatoire)
allowed_user_idsarray[]Identifiants utilisateur Telegram numériques autorisés à discuter. Vide = aucune restriction.

[slack]

Nécessite le feature flag slack à la compilation. Voir Slack pour le guide complet de configuration.

KeyTypeDefaultDescription
enabledboolfalseActiver le canal Slack
app_tokenstringToken de niveau application Slack pour Socket Mode (xapp-...)
bot_tokenstringToken de bot Slack pour l'API Web (xoxb-...)
allowed_user_idsarray[]Identifiants utilisateur Slack autorisés à interagir. Vide = aucune restriction.
use_threadsbooltrueRépondre dans les fils de discussion par défaut

[discord]

Nécessite le feature flag discord à la compilation. Voir Discord pour le guide complet de configuration.

KeyTypeDefaultDescription
bot_tokenstringToken du bot Discord depuis le portail développeur
allowed_user_idsarray[]Identifiants utilisateur Discord autorisés à interagir. Vide = aucune restriction.
guild_idintegernullID optionnel du guild/serveur pour restreindre le bot à un seul serveur

[state]

KeyTypeDefaultDescription
db_pathstring"aidaemon.db"Chemin vers le fichier de base de données SQLite
working_memory_capinteger50Nombre maximum de messages par session conservés en mémoire
consolidation_interval_hoursinteger6Heures entre les exécutions de consolidation de la mémoire
max_factsinteger100Nombre maximum de faits injectés dans le prompt système
daily_token_budgetintegernullMaximum de tokens totaux (entrée+sortie) par jour. Null = illimité. Réinitialisation à minuit UTC.
encryption_keystringnullClé de chiffrement SQLCipher (nécessite la fonctionnalité encryption). AES-256 au repos.

[terminal]

KeyTypeDefaultDescription
allowed_prefixesarray(see below)Préfixes de commande auto-approuvés sans confirmation de l'utilisateur
initial_timeout_secsinteger30Délai d'attente en secondes pour l'exécution initiale de la commande
max_output_charsinteger4000Tronquer la sortie de commande au-delà de cette longueur
permission_modestring"default"Mode de permission de risque : default, cautious, ou yolo. Voir Risque des Commandes.

Préfixes autorisés par défaut :

text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenv
Opérateurs Shell
Les commandes contenant ; | && || $() ou des backticks nécessitent toujours une approbation, même si le préfixe est dans la liste autorisée.

[daemon]

KeyTypeDefaultDescription
health_portinteger8080Port pour le point de terminaison HTTP de vérification de santé
health_bindstring"127.0.0.1"Adresse de liaison. Utilisez "0.0.0.0" pour un accès externe.

[triggers.email]

KeyTypeDefaultDescription
hoststringNom d'hôte du serveur IMAP (ex. : imap.gmail.com)
portintegerPort IMAP (généralement 993 pour TLS)
usernamestringNom d'utilisateur du compte email
passwordstringMot de passe du compte email ou mot de passe spécifique à l'application
folderstring"INBOX"Dossier IMAP à surveiller

[mcp.<name>]

KeyTypeDefaultDescription
commandstringChemin ou nom de l'exécutable pour le serveur MCP
argsarray[]Arguments en ligne de commande

[browser]

KeyTypeDefaultDescription
enabledboolfalseActiver l'outil d'automatisation du navigateur
headlessbooltrueExécuter Chrome sans fenêtre visible
screenshot_widthinteger1280Largeur de la fenêtre du navigateur en pixels
screenshot_heightinteger720Hauteur de la fenêtre du navigateur en pixels
user_data_dirstring~/.aidaemon/chrome-profileRépertoire du profil Chrome pour les sessions persistantes
profilestringDefaultNom du profil Chrome dans user_data_dir
remote_debugging_portintegernullSe connecter à un Chrome existant sur ce port (avancé)

[skills]

KeyTypeDefaultDescription
dirstring"skills"Répertoire contenant les fichiers markdown de compétences
enabledbooltrueActiver le système de compétences
registriesarray[]URLs des manifestes JSON de registres de compétences pour parcourir/installer des compétences

[subagents]

KeyTypeDefaultDescription
enabledbooltrueAutoriser l'agent à lancer des sous-agents
max_depthinteger3Niveau maximum d'imbrication pour la récursion des sous-agents
max_iterationsinteger10Nombre maximum d'étapes de la boucle agentique par invocation de sous-agent
max_response_charsinteger8000Tronquer les réponses des sous-agents au-delà de cette longueur
timeout_secsinteger300Délai d'attente d'exécution des sous-agents en secondes

[cli_agents]

KeyTypeDefaultDescription
enabledboolfalseActiver l'outil de délégation d'agents CLI
timeout_secsinteger600Délai d'attente global pour l'exécution des agents CLI
max_output_charsinteger16000Longueur maximale globale de la sortie des agents CLI

[cli_agents.tools.<name>]

KeyTypeDefaultDescription
commandstringCommande à exécuter
argsarray[]Arguments par défaut passés à la commande
descriptionstringDescription de l'outil présentée au LLM
timeout_secsintegernullRemplacer le délai d'attente global pour cet outil
max_output_charsintegernullRemplacer la sortie maximale globale pour cet outil

[search]

KeyTypeDefaultDescription
backendstring"duckduckgo"Backend de recherche : duckduckgo (aucune clé requise) ou brave
api_keystring""Clé API pour la recherche Brave (supporte "keychain")

[scheduler]

KeyTypeDefaultDescription
enabledbooltrueActiver le système de tâches planifiées
tick_interval_secsinteger30Fréquence de vérification des tâches à exécuter par le planificateur

[[scheduler.tasks]]

Tâches planifiées prédéfinies chargées depuis la configuration au démarrage :

KeyTypeDefaultDescription
namestringLibellé lisible de la tâche
schedulestringExpression en langage naturel ou cron (voir Planificateur)
promptstringCe que l'agent doit faire lorsque la tâche se déclenche
oneshotboolfalseS'exécuter une fois puis se supprimer automatiquement
trustedboolfalseExécuter en autonomie complète (pas d'approbation terminal nécessaire)

[files]

KeyTypeDefaultDescription
enabledbooltrueActiver les outils de transfert de fichiers (envoi/réception)
inbox_dirstring"~/.aidaemon/files/inbox"Répertoire pour les fichiers reçus depuis Telegram
outbox_dirsarray["~"]Répertoires depuis lesquels l'agent est autorisé à envoyer des fichiers
max_file_size_mbinteger10Taille maximale des fichiers pour les transferts en Mo
retention_hoursinteger24Heures de conservation des fichiers reçus avant nettoyage

Gestion des Secrets

Les valeurs de configuration sensibles supportent deux méthodes de résolution en plus du texte brut, ainsi qu'un mode optionnel tout-environnement :

Trousseau du Système

Définissez n'importe quel champ secret à "keychain" pour le résoudre depuis le trousseau du système (Trousseau macOS, secret-service Linux) :

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

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

Stockez les valeurs avec la commande CLI keychain avant le premier lancement :

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
Sécurité
La commande set demande la valeur de manière interactive avec confirmation, gardant les secrets hors de l'historique de votre shell.

Variables d'Environnement

Utilisez la syntaxe ${VAR_NAME} n'importe où dans les valeurs de configuration :

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

[telegram]
bot_token = "${TELEGRAM_BOT_TOKEN}"

Mode tout environnement (sans trousseau)

Si vous préférez ne pas utiliser le trousseau du système, définissez ces variables d'environnement d'exécution :

bash
# Désactive le stockage dans le trousseau système et utilise des secrets basés sur un fichier env
export AIDAEMON_NO_KEYCHAIN=1

# Optionnel : choisir un chemin de fichier env spécifique (par défaut : ./.env)
export AIDAEMON_ENV_FILE=/chemin/absolu/vers/.env

Dans ce mode, aidaemon lit les secrets depuis le fichier env sélectionné (ou depuis les variables d'environnement du processus si aucun fichier env n'existe) et persiste les mises à jour de secrets dans ce fichier env — y compris la rotation des jetons OAuth access/refresh.

Sécurité en mode env
Gardez le fichier env privé (chmod 600) et hors du contrôle de version.
Champs Supportés pour le Trousseau
Champs supportant "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, et les champs de profils http_auth.*.

[health]

Système de surveillance de santé. Voir Surveillance de Santé.

KeyTypeDefaultDescription
enabledbooltrueActiver le système de surveillance de santé
tick_interval_secsinteger30Fréquence de vérification des sondes à exécuter
result_retention_daysinteger7Jours de conservation des résultats de vérification de santé

[[health.probes]]

KeyTypeDefaultDescription
namestringNom de la sonde
probe_typestringType : http, command, file, ou port
targetstringURL cible, commande, chemin de fichier, ou host:port
schedulestringExpression cron ou intervalle
consecutive_failures_alertinteger3Alerter après N échecs consécutifs
alert_session_idsarray[]Identifiants de session à notifier en cas d'alerte

[updates]

Système de mise à jour automatique. Voir Mise à Jour Automatique.

KeyTypeDefaultDescription
modestring"check_only"Mode de mise à jour : enable, check_only, ou disable
check_interval_hoursinteger24Heures entre les vérifications de mise à jour
check_at_utc_hourintegernullHeure UTC spécifique (0-23) pour la vérification quotidienne
confirmation_timeout_minsinteger60Minutes d'attente pour l'approbation de l'utilisateur

[people]

Intelligence Relationnelle — un carnet de contacts personnel géré par votre assistant. Voir Intelligence Relationnelle.

KeyTypeDefaultDescription
enabledboolfalseÉtat initial de l'intelligence relationnelle (peut être activé en cours d'exécution via le chat)
auto_extractbooltrueApprendre automatiquement des faits sur les personnes à partir des conversations
auto_extract_categoriesstring[]["birthday", "preference", "interest", "work", "family", "important_date"]Catégories de faits pouvant être extraites automatiquement
restricted_categoriesstring[]["health", "finance", "political", "religious"]Catégories qui ne sont jamais extraites automatiquement
fact_retention_daysinteger180Jours avant la suppression des faits auto-extraits non confirmés
reconnect_reminder_daysinteger30Jours d'inactivité avant de suggérer une reprise de contact

Exemple de Configuration

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"