storage:# List of storage providersproviders:-type:"sql"# SQL database (default)url:"sqlite:///history.db"pool_size:5auto_migration:trueagents:["planner","executor"]# Only log these agentslog_messages:truelog_conversations:truelog_commands:truelog_context:true# Global agent filteringagents:["planner","executor","analyzer"]# Global agent filterfilter_mode:"and"# How to combine filters: "and" | "override"# Default provider for history queriesdefault_provider:"sql"# Global logging flags (apply to all providers)log_messages:true# Log all messageslog_conversations:true# Log conversation metadatalog_commands:true# Log command executionslog_context:true# Log context additions
You can filter which agents get logged at both global and provider levels:
storage:# Global filter - affects all providersagents:["planner","executor","analyzer"]# How filters are combined:filter_mode:"and"# Both filters must allow the agent# filter_mode: "override" # Provider filter overrides global if setproviders:-type:"sql"url:"sqlite:///history.db"agents:["planner","executor"]# Provider-specific filter
With filter_mode: "and":
An agent must be allowed by both global AND provider filters
If either filter is None, only the other filter applies
If both are None, all agents are logged
With filter_mode: "override":
Provider filter takes precedence if set
Falls back to global filter if provider filter is None
The text log provider supports customizable Jinja2 templates. You can either use predefined formats or provide your own template file.
storage:providers:-type:"text_file"path:"logs/chat.log"# Use predefined template:format:"chronological"# or "conversations"# Or use custom template:template:"templates/custom.j2"
storage:providers:-type:"memory"# No additional configuration neededagents:null# Log all agents# Logging flagslog_messages:truelog_conversations:truelog_commands:truelog_context:true
You can use multiple providers simultaneously, each with their own filtering:
storage:# Global settingsagents:["planner","executor","analyzer"]filter_mode:"and"log_messages:truelog_conversations:truelog_commands:truelog_context:truedefault_provider:"sql"providers:-type:"sql"# Primary storage in databaseurl:"sqlite:///history.db"agents:["planner","executor"]# Only execution pipeline-type:"text_file"# Analysis logspath:"logs/analysis.log"agents:["analyzer"]# Only analysis pipelineformat:"chronological"-type:"file"# Complete historypath:"data/history.json"agents:null# Log everything