config.*
Runtime configuration RPC methods
config.* exposes runtime configuration management. Every method below takes effect without a gateway restart; per-method side effects are noted inline.
Methods
| Method | Description |
|---|---|
config.schema | Return the full JSON Schema (no params) |
config.get | Read the currently active configuration |
config.patch | Partial override (JSON Merge Patch / RFC 7386-style) |
config.reload | Reload the configuration from disk |
Registered in HandlerRegistry::new() but not normally called via RPC — they back the boot path:
| Method | Description |
|---|---|
config.get_full_config | Raw config read used by the boot path |
config.path | Absolute path of the active config file |
config.validate | Validate a config object without persisting |
config.reload_with_subsystems | Trigger subsystem hot-reload |
config.get_tool_permissions / config.update_tool_permissions | Tool-permission read/write |
config.apply(full overwrite) is not currently registered. To replace the configuration wholesale, useconfig.patchfollowed byconfig.reload.
config.schema
Return the full JSON Schema for ~/.aleph/config.json. Takes no parameters.
Request:
{ "jsonrpc": "2.0", "id": 1, "method": "config.schema" }Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"schema": { "type": "object", "$schema": "...", "properties": { "...": { "...": "..." } } }
}
}config.get
Read the active configuration as seen by ConfigWatcher.
Request:
{ "jsonrpc": "2.0", "id": 1, "method": "config.get" }Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"config": {
"general": { "default_provider": "openai", "fallback_providers": [] },
"execution": { "default_timeout_secs": 600, "max_runs_global": 16 }
},
"source": "/home/user/.aleph/config.json",
"loaded_at": 1706400000000
}
}Sensitive fields (API keys, tokens) are redacted in the response. source and loaded_at identify where the active configuration was loaded from.
config.patch
Apply a partial override using JSON Merge Patch (RFC 7386-style). Only the fields you provide are modified; everything else is preserved.
Request:
{
"jsonrpc": "2.0",
"id": 2,
"method": "config.patch",
"params": {
"patch": {
"execution": { "max_runs_global": 32 },
"general": { "fallback_providers": ["anthropic", "openai"] }
}
}
}Response:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"applied": true,
"changed_keys": ["execution.max_runs_global", "general.fallback_providers"],
"restart_required": false
}
}Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
patch | object | Yes | Merge Patch object. Set a field to null to clear it |
When restart_required is true, an interface or service must be restarted for the change to take effect; the affected components are listed under restart_components.
config.reload
Reload the configuration from the config file on disk. Use this after manually editing the file or syncing it from a dotfiles repository.
Request:
{ "jsonrpc": "2.0", "id": 1, "method": "config.reload" }Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"reloaded": true,
"source": "/home/user/.aleph/config.json",
"changed_keys": ["general.default_provider"],
"restart_required": false
}
}Hot Reload & Reloadable Fields
The [gateway.config_watcher] controls the file watcher; any save triggers the reload pipeline:
- Debounce -- wait 500 ms so all writes settle
- Parse -- read and parse the new configuration
- Validate -- check against the schema
- Diff -- compute changed field paths
- Apply -- update the in-memory config and restart affected interfaces
- Notify -- emit a
config.changedevent to subscribed clients
{
"jsonrpc": "2.0",
"method": "event",
"params": {
"topic": "config.changed",
"data": {
"section": "execution",
"value": { "max_runs_global": 32 },
"timestamp": 1706400000000
}
}
}Hot-reloadable: [general] model catalog and failover chain, [providers.*] provider config, channel on/off, [execution] run caps, [cron] scheduler settings, [exec] approval rules.
Requires restart: core port, bind address, TLS certificates, [memory] embedding model and vector store, [browser] CDP settings.
Related Configuration Sections
config.* does not read or write these dedicated sections; use their namespaces instead:
| Section | Namespace |
|---|---|
[behavior] | behavior_config.get / behavior_config.update |
[browser] | browser_config.get / browser_config.update |
[execution] | execution_config.get / execution_config.update |
[fetch] | fetch_config.get / fetch_config.update / fetch_config.test |
[general] | general_config.get / general_config.update |
[generation] | generation_config.get / generation_config.update |
[memory] | memory_config.get / memory_config.update |
[rerank] | rerank_config.get / rerank_config.update / rerank_config.test |
[route] | route_config.get / route_config.update |
[routing_rules] | routing_rules.* |
[search] | search_config.* |
[security] | security_config.* |
[mcp.servers] | mcp_config.* |
[plugins] | plugins.* / plugin.* |
[providers] | providers.* |
[generation_providers] | generation_providers.* |
[embedding] | embedding_providers.* |
[runtimes] | runtimes.* |
[gateway] | gateway.ticket.* / gateway.token.* / gateway.credentials |
See Also
- Methods Reference -- All method namespaces
- Protocol -- JSON-RPC 2.0 transport