Search
Search docs, blog posts, and ecosystem packages with citations.
Enter a query to see grounded citations.
We can't find the internet
Attempting to reconnect
Search docs, blog posts, and ecosystem packages with citations.
All configuration keys, defaults, and examples for jido and jido_ai.
Configuration is set in your config/*.exs files. Runtime secrets belong in config/runtime.exs. All keys have sensible defaults — you only need to configure what you want to change.
Controls structured logging for agent commands, signal processing, and directive execution.
config :jido, :telemetry,
log_level: :debug, # :trace | :debug | :info | :warning | :error
log_args: :keys_only, # :keys_only | :full | :none
slow_signal_threshold_ms: 10, # log signals slower than this
slow_directive_threshold_ms: 5, # log directives slower than this
interesting_signal_types: [ # always log these signal types at debug level
"jido.strategy.init",
"jido.strategy.complete"
]
| Key | Type | Default | Description |
|---|---|---|---|
log_level | atom | :debug |
Minimum level for telemetry logs. :trace logs everything; :info logs only request start/stop. |
log_args | atom | :keys_only |
How action arguments appear in logs. :full logs values, :none suppresses entirely. |
slow_signal_threshold_ms | integer | 10 | Signals exceeding this duration are always logged at debug level. |
slow_directive_threshold_ms | integer | 5 | Directives exceeding this duration are always logged at debug level. |
interesting_signal_types | list | ["jido.strategy.init", "jido.strategy.complete"] | Signal types always logged at debug level regardless of duration. |
Controls the Jido.Observe instrumentation layer.
config :jido, :observability,
log_level: :info, # Logger level for observe spans
debug_events: :off, # :off | :minimal | :all
redact_sensitive: false # redact sensitive fields in telemetry metadata
| Key | Type | Default | Description |
|---|---|---|---|
log_level | Logger.level | :info | Logger level for observe-layer span logging. |
debug_events | atom | :off |
Buffer debug events in-process. :minimal captures key events, :all captures everything. |
redact_sensitive | boolean | false |
When true, scrubs keys like api_key, password, secret, and *_token from telemetry metadata. |
Default timeouts for agent operations. Override per-call where needed.
config :jido, :timeouts,
agent_server_shutdown_ms: 5_000,
agent_server_call_ms: 5_000,
agent_server_await_ms: 10_000,
worker_pool_checkout_ms: 5_000,
worker_pool_call_ms: 5_000
| Key | Type | Default | Description |
|---|---|---|---|
agent_server_shutdown_ms | integer | 5_000 | Graceful shutdown timeout for AgentServer workers. |
agent_server_call_ms | integer | 5_000 |
Timeout for synchronous AgentServer calls. |
agent_server_await_ms | integer | 10_000 |
Timeout for AgentServer.await_completion/2. |
worker_pool_checkout_ms | integer | 5_000 | Checkout timeout for worker pool agents. |
worker_pool_call_ms | integer | 5_000 | Call timeout when signaling pooled agents. |
Each Jido instance can override global config under its own module key:
# Global default
config :jido, :telemetry, log_level: :info
# Instance override — this instance gets trace-level logging
config :my_app, MyApp.Jido,
telemetry: [log_level: :trace],
observability: [debug_events: :all]
Resolution order (highest priority first):
Jido.Debug runtime override (persistent_term, per-instance) config :my_app, MyApp.Jido, ...) config :jido, :telemetry / config :jido, :observability) Map semantic names to provider model strings. Override defaults or add your own:
config :jido_ai,
model_aliases: %{
fast: "anthropic:claude-haiku-4-5",
capable: "anthropic:claude-sonnet-4-20250514",
thinking: "anthropic:claude-sonnet-4-20250514",
reasoning: "anthropic:claude-sonnet-4-20250514",
planning: "anthropic:claude-sonnet-4-20250514",
image: "openai:gpt-image-1",
embedding: "openai:text-embedding-3-small"
}
The table above shows built-in defaults. Your config merges on top — define only the aliases you want to change. Use aliases in code with Jido.AI.resolve_model(:fast).
A full list of supported provider/model IDs is available at llmdb.xyz.
Role-based defaults for the generate_text/2, generate_object/3, and stream_text/2 facade functions:
config :jido_ai,
llm_defaults: %{
text: %{model: :fast, temperature: 0.2, max_tokens: 1024, timeout: 30_000},
object: %{model: :thinking, temperature: 0.0, max_tokens: 1024, timeout: 30_000},
stream: %{model: :fast, temperature: 0.2, max_tokens: 1024, timeout: 30_000}
}
| Kind | Used by | Default model | Default temperature |
|---|---|---|---|
:text | Jido.AI.generate_text/2 | :fast | 0.2 |
:object | Jido.AI.generate_object/3 | :thinking | 0.0 |
:stream | Jido.AI.stream_text/2 | :fast | 0.2 |
Per-kind config merges with defaults, so you only need to specify fields you want to override.
Set provider API keys in config/runtime.exs (never commit these to source control):
# config/runtime.exs
config :req_llm,
anthropic_api_key: System.get_env("ANTHROPIC_API_KEY"),
openai_api_key: System.get_env("OPENAI_API_KEY")
See req_llm HexDocs for the full list of supported providers and their key names.