Config
Runtime configuration mutation. Dev/test only — production deploys return 410 Gone. Provider/model selection is startup-only and must be set via env vars.
Base URL: http://localhost:3050
All request bodies are JSON (Content-Type: application/json). Field names on the raw HTTP prototype surface use snake_case.
PUT /v1/memories/config
Update runtime configuration at runtime. Dev/test only — production
deploys return 410 Gone. Gated by the startup-validated env var
CORE_RUNTIME_CONFIG_MUTATION_ENABLED; see docs/consuming-core.md.
Mutable fields (Phase 7 Step 3c contract — 4 fields total):
{
"similarity_threshold": 0.3,
"audn_candidate_threshold": 0.7,
"clarification_conflict_threshold": 0.8,
"max_search_results": 12
}
All fields are optional. Only provided fields are updated.
Startup-only fields (rejected with 400): embedding_provider,
embedding_model, llm_provider, llm_model. Set these via env vars
(EMBEDDING_PROVIDER, EMBEDDING_MODEL, LLM_PROVIDER, LLM_MODEL)
and restart the process. The embedding/LLM provider caches are fixed
at first use, so mid-flight mutation never took effect in v1.
Responses:
-
200 OK(success, dev/test with mutable fields):{"applied": ["similarityThreshold", "maxSearchResults"],"config": { "...current config snapshot..." },"note": "Threshold updates applied in-memory for local experimentation. Restart the process to change provider/model."} -
400 Bad Request(any startup-only field present):{"error": "Provider/model selection is startup-only","detail": "Fields embedding_provider cannot be mutated at runtime — the embedding/LLM provider caches are fixed at first use. Set the equivalent env vars (EMBEDDING_PROVIDER, EMBEDDING_MODEL, LLM_PROVIDER, LLM_MODEL) and restart the process.","rejected": ["embedding_provider"]} -
410 Gone(production — mutation disabled):{"error": "PUT /v1/memories/config is deprecated for production","detail": "Set CORE_RUNTIME_CONFIG_MUTATION_ENABLED=true to enable runtime mutation in dev/test environments. Production deploys should use startup env vars."}