2024-10-06 23:55:03 +00:00
<!DOCTYPE html>
2026-01-24 20:01:20 +00:00
< html :class = "{ 'dark' : darkMode === true }" data-content_root = "../" lang = "en" x-data = "{ darkMode: $persist(window.matchMedia('(prefers-color-scheme: dark)').matches), activeSection: ''}" >
2024-10-06 23:55:03 +00:00
< head >
2026-01-24 20:01:20 +00:00
< script >
(function () {
// Set initial color scheme
if ((localStorage.getItem("_x_darkMode") === "true") || (window.matchMedia("(prefers-color-scheme: dark)").matches)) {
document.documentElement.classList.add("dark");
}
// Watch for media preference changes
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (event) => {
localStorage.setItem("_x_darkMode", event.matches);
document.documentElement.classList.toggle("dark", event.matches);
});
})();
< / script >
2024-10-06 23:55:03 +00:00
< meta content = "width=device-width, initial-scale=1.0" name = "viewport" / >
< meta charset = "utf-8" / >
2026-01-24 20:01:20 +00:00
< meta content = "#ffffff" media = "(prefers-color-scheme: light)" name = "theme-color" / >
< meta content = "#030711" media = "(prefers-color-scheme: dark)" name = "theme-color" / >
2024-10-06 23:55:03 +00:00
< meta content = "width=device-width, initial-scale=1" name = "viewport" / >
2026-04-24 21:28:10 +00:00
< title > Configuration Reference | Plano Docs v0.4.21< / title >
< meta content = "Configuration Reference | Plano Docs v0.4.21" property = "og:title" / >
< meta content = "Configuration Reference | Plano Docs v0.4.21" name = "twitter:title" / >
2026-01-24 20:01:20 +00:00
< link href = "../_static/pygments.css?v=73db4dac" rel = "stylesheet" type = "text/css" / >
2026-04-16 20:17:24 +00:00
< link href = "../_static/theme.css?v=979577e3" rel = "stylesheet" type = "text/css" / >
2024-10-06 23:55:03 +00:00
< link href = "../_static/sphinx-design.min.css?v=95c83b7e" rel = "stylesheet" type = "text/css" / >
2025-12-24 01:15:19 +00:00
< link href = "../_static/css/custom.css?v=2929376a" rel = "stylesheet" type = "text/css" / >
2026-04-16 20:17:24 +00:00
< link href = "../_static/awesome-sphinx-design.css?v=b1d4564d" rel = "stylesheet" type = "text/css" / >
2024-10-06 23:55:03 +00:00
< link href = "./docs/resources/configuration_reference.html" rel = "canonical" / >
< link href = "../_static/favicon.ico" rel = "icon" / >
< link href = "../search.html" rel = "search" title = "Search" / >
2026-02-25 03:18:07 +00:00
< link href = "cli_reference.html" rel = "next" title = "CLI Reference" / >
2025-10-22 21:13:54 +00:00
< link href = "deployment.html" rel = "prev" title = "Deployment" / >
2024-10-06 23:55:03 +00:00
< / head >
< body :class = "{ 'overflow-hidden': showSidebar }" class = "min-h-screen font-sans antialiased bg-background text-foreground" x-data = "{ showSidebar: false, showScrollTop: false }" >
< div @ click . self = "showSidebar = false" class = "fixed inset-0 z-50 overflow-hidden bg-background/80 backdrop-blur-sm md:hidden" x-cloak = "" x-show = "showSidebar" > < / div > < div class = "relative flex flex-col min-h-screen" id = "page" > < a class = "absolute top-0 left-0 z-[100] block bg-background p-4 text-xl transition -translate-x-full opacity-0 focus:translate-x-0 focus:opacity-100" href = "#content" >
Skip to content
2026-01-24 20:01:20 +00:00
< / a > < header class = "sticky top-0 z-40 w-full border-b shadow-xs border-border bg-background/90 backdrop-blur" > < div class = "container flex items-center h-14" >
2024-10-06 23:55:03 +00:00
< div class = "hidden mr-4 md:flex" >
< a class = "flex items-center mr-6" href = "../index.html" >
2026-04-24 21:28:10 +00:00
< img alt = "Logo" class = "mr-2 dark:invert" height = "24" src = "../_static/favicon.ico" width = "24" / > < span class = "hidden font-bold sm:inline-block text-clip whitespace-nowrap" > Plano Docs v0.4.21< / span >
2024-10-06 23:55:03 +00:00
< / a > < / div > < button @ click = "showSidebar = true" class = "inline-flex items-center justify-center h-10 px-0 py-2 mr-2 text-base font-medium transition-colors rounded-md hover:text-accent-foreground hover:bg-transparent md:hidden" type = "button" >
< svg aria-hidden = "true" fill = "currentColor" height = "24" viewbox = "0 96 960 960" width = "24" xmlns = "http://www.w3.org/2000/svg" >
< path d = "M152.587 825.087q-19.152 0-32.326-13.174t-13.174-32.326q0-19.152 13.174-32.326t32.326-13.174h440q19.152 0 32.326 13.174t13.174 32.326q0 19.152-13.174 32.326t-32.326 13.174h-440Zm0-203.587q-19.152 0-32.326-13.174T107.087 576q0-19.152 13.174-32.326t32.326-13.174h320q19.152 0 32.326 13.174T518.087 576q0 19.152-13.174 32.326T472.587 621.5h-320Zm0-203.587q-19.152 0-32.326-13.174t-13.174-32.326q0-19.152 13.174-32.326t32.326-13.174h440q19.152 0 32.326 13.174t13.174 32.326q0 19.152-13.174 32.326t-32.326 13.174h-440ZM708.913 576l112.174 112.174q12.674 12.674 12.674 31.826t-12.674 31.826Q808.413 764.5 789.261 764.5t-31.826-12.674l-144-144Q600 594.391 600 576t13.435-31.826l144-144q12.674-12.674 31.826-12.674t31.826 12.674q12.674 12.674 12.674 31.826t-12.674 31.826L708.913 576Z" > < / path >
< / svg >
< span class = "sr-only" > Toggle navigation menu< / span >
< / button >
2026-01-24 20:01:20 +00:00
< div class = "flex items-center justify-between flex-1 gap-2 sm:gap-4 md:justify-end" >
2024-10-06 23:55:03 +00:00
< div class = "flex-1 w-full md:w-auto md:flex-none" > < form @ keydown . k . window . meta = "$refs.search.focus()" action = "../search.html" class = "relative flex items-center group" id = "searchbox" method = "get" >
< input aria-label = "Search the docs" class = "inline-flex items-center font-medium transition-colors bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background border border-input hover:bg-accent focus:bg-accent hover:text-accent-foreground focus:text-accent-foreground hover:placeholder-accent-foreground py-2 px-4 relative h-9 w-full justify-start rounded-[0.5rem] text-sm text-muted-foreground sm:pr-12 md:w-40 lg:w-64" id = "search-input" name = "q" placeholder = "Search ..." type = "search" x-ref = "search" / >
< kbd class = "pointer-events-none absolute right-1.5 top-2 hidden h-5 select-none text-muted-foreground items-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex group-hover:bg-accent group-hover:text-accent-foreground" >
< span class = "text-xs" > ⌘< / span >
K
< / kbd >
< / form >
< / div >
2026-01-24 20:01:20 +00:00
< nav class = "flex items-center gap-1" >
2025-12-24 01:15:19 +00:00
< a href = "https://github.com/katanemo/plano" rel = "noopener nofollow" title = "Visit repository on GitHub" >
2026-01-24 20:01:20 +00:00
< div class = "inline-flex items-center justify-center px-0 text-sm font-medium transition-colors rounded-md hover:bg-accent hover:text-accent-foreground h-9 w-9" >
2024-10-06 23:55:03 +00:00
< svg fill = "currentColor" height = "26px" style = "margin-top:-2px;display:inline" viewbox = "0 0 45 44" xmlns = "http://www.w3.org/2000/svg" > < path clip-rule = "evenodd" d = "M22.477.927C10.485.927.76 10.65.76 22.647c0 9.596 6.223 17.736 14.853 20.608 1.087.2 1.483-.47 1.483-1.047 0-.516-.019-1.881-.03-3.693-6.04 1.312-7.315-2.912-7.315-2.912-.988-2.51-2.412-3.178-2.412-3.178-1.972-1.346.149-1.32.149-1.32 2.18.154 3.327 2.24 3.327 2.24 1.937 3.318 5.084 2.36 6.321 1.803.197-1.403.759-2.36 1.379-2.903-4.823-.548-9.894-2.412-9.894-10.734 0-2.37.847-4.31 2.236-5.828-.224-.55-.969-2.759.214-5.748 0 0 1.822-.584 5.972 2.226 1.732-.482 3.59-.722 5.437-.732 1.845.01 3.703.25 5.437.732 4.147-2.81 5.967-2.226 5.967-2.226 1.185 2.99.44 5.198.217 5.748 1.392 1.517 2.232 3.457 2.232 5.828 0 8.344-5.078 10.18-9.916 10.717.779.67 1.474 1.996 1.474 4.021 0 2.904-.027 5.247-.027 5.96 0 .58.392 1.256 1.493 1.044C37.981 40.375 44.2 32.24 44.2 22.647c0-11.996-9.726-21.72-21.722-21.72" fill = "currentColor" fill-rule = "evenodd" > < / path > < / svg >
< / div >
< / a >
2026-01-24 20:01:20 +00:00
< button @ click = "darkMode = !darkMode" class = "relative inline-flex items-center justify-center px-0 text-sm font-medium transition-colors rounded-md hover:bg-accent hover:text-accent-foreground h-9 w-9" title = "Toggle color scheme" type = "button" >
< svg class = "absolute transition-all scale-100 rotate-0 dark:-rotate-90 dark:scale-0" fill = "currentColor" height = "16" viewbox = "0 96 960 960" width = "16" xmlns = "http://www.w3.org/2000/svg" >
2024-10-06 23:55:03 +00:00
< path d = "M480 685q45.456 0 77.228-31.772Q589 621.456 589 576q0-45.456-31.772-77.228Q525.456 467 480 467q-45.456 0-77.228 31.772Q371 530.544 371 576q0 45.456 31.772 77.228Q434.544 685 480 685Zm0 91q-83 0-141.5-58.5T280 576q0-83 58.5-141.5T480 376q83 0 141.5 58.5T680 576q0 83-58.5 141.5T480 776ZM80 621.5q-19.152 0-32.326-13.174T34.5 576q0-19.152 13.174-32.326T80 530.5h80q19.152 0 32.326 13.174T205.5 576q0 19.152-13.174 32.326T160 621.5H80Zm720 0q-19.152 0-32.326-13.174T754.5 576q0-19.152 13.174-32.326T800 530.5h80q19.152 0 32.326 13.174T925.5 576q0 19.152-13.174 32.326T880 621.5h-80Zm-320-320q-19.152 0-32.326-13.174T434.5 256v-80q0-19.152 13.174-32.326T480 130.5q19.152 0 32.326 13.174T525.5 176v80q0 19.152-13.174 32.326T480 301.5Zm0 720q-19.152 0-32.326-13.17Q434.5 995.152 434.5 976v-80q0-19.152 13.174-32.326T480 850.5q19.152 0 32.326 13.174T525.5 896v80q0 19.152-13.174 32.33-13.174 13.17-32.326 13.17ZM222.174 382.065l-43-42Q165.5 327.391 166 308.239t13.174-33.065q13.435-13.674 32.587-13.674t32.065 13.674l42.239 43q12.674 13.435 12.555 31.706-.12 18.272-12.555 31.946-12.674 13.674-31.445 13.413-18.772-.261-32.446-13.174Zm494 494.761-42.239-43q-12.674-13.435-12.674-32.087t12.674-31.565Q686.609 756.5 705.38 757q18.772.5 32.446 13.174l43 41.761Q794.5 824.609 794 843.761t-13.174 33.065Q767.391 890.5 748.239 890.5t-32.065-13.674Zm-42-494.761Q660.5 369.391 661 350.62q.5-18.772 13.174-32.446l41.761-43Q728.609 261.5 747.761 262t33.065 13.174q13.674 13.435 13.674 32.587t-13.674 32.065l-43 42.239q-13.435 12.674-31.706 12.555-18.272-.12-31.946-12.555Zm-495 494.761Q165.5 863.391 165.5 844.239t13.674-32.065l43-42.239q13.435-12.674 32.087-12.674t31.565 12.674Q299.5 782.609 299 801.38q-.5 18.772-13.174 32.446l-41.761 43Q231.391 890.5 212.239 890t-33.065-13.174ZM480 576Z" > < / path >
< / svg >
2026-01-24 20:01:20 +00:00
< svg class = "absolute transition-all scale-0 rotate-90 dark:rotate-0 dark:scale-100" fill = "currentColor" height = "16" viewbox = "0 96 960 960" width = "16" xmlns = "http://www.w3.org/2000/svg" >
2024-10-06 23:55:03 +00:00
< path d = "M480 936q-151 0-255.5-104.5T120 576q0-138 90-239.5T440 218q25-3 39 18t-1 44q-17 26-25.5 55t-8.5 61q0 90 63 153t153 63q31 0 61.5-9t54.5-25q21-14 43-1.5t19 39.5q-14 138-117.5 229T480 936Zm0-80q88 0 158-48.5T740 681q-20 5-40 8t-40 3q-123 0-209.5-86.5T364 396q0-20 3-40t8-40q-78 32-126.5 102T200 576q0 116 82 198t198 82Zm-10-270Z" > < / path >
< / svg >
< / button >
< / nav >
< / div >
< / div >
< / header >
2026-01-24 20:01:20 +00:00
< div class = "flex-1" > < div class = "container md:grid md:grid-cols-[220px_minmax(0,1fr)] md:gap-6 lg:grid-cols-[240px_minmax(0,1fr)] lg:gap-10" > < aside :aria-hidden = "!showSidebar" :class = "{ 'translate-x-0': showSidebar }" class = "fixed inset-y-0 left-0 md:top-14 z-50 md:z-30 bg-background md:bg-transparent transition-all duration-100 -translate-x-full md:translate-x-0 ml-0 p-6 md:p-0 md:-ml-2 md:h-[calc(100vh-3.5rem)] w-5/6 md:w-full overflow-y-auto border-r border-border md:sticky" id = "left-sidebar" >
< a class = "justify-start text-sm md:!hidden bg-background" href = "../index.html" >
2026-04-24 21:28:10 +00:00
< img alt = "Logo" class = "mr-2 dark:invert" height = "16" src = "../_static/favicon.ico" width = "16" / > < span class = "font-bold text-clip whitespace-nowrap" > Plano Docs v0.4.21< / span >
2024-10-06 23:55:03 +00:00
< / a >
2026-01-24 20:01:20 +00:00
< div class = "relative overflow-hidden md:overflow-auto my-4 md:my-0" >
2024-10-06 23:55:03 +00:00
< div class = "overflow-y-auto h-full w-full relative pr-6" >
2025-12-24 01:15:19 +00:00
< script async = "" src = "https://www.googletagmanager.com/gtag/js?id=G-EH2VW19FXE" > < / script >
2024-10-06 23:55:03 +00:00
< script >
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
2025-12-24 01:15:19 +00:00
gtag('config', 'G-EH2VW19FXE');
2024-10-06 23:55:03 +00:00
< / script >
< nav class = "table w-full min-w-full my-6 lg:my-8" >
< p class = "caption" role = "heading" > < span class = "caption-text" > Get Started< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../get_started/overview.html" > Overview< / a > < / li >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../get_started/intro_to_plano.html" > Intro to Plano< / a > < / li >
2024-10-06 23:55:03 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../get_started/quickstart.html" > Quickstart< / a > < / li >
2024-12-06 23:15:59 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../get_started/quickstart.html#next-steps" > Next Steps< / a > < / li >
2024-10-06 23:55:03 +00:00
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Concepts< / span > < / p >
< ul >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../concepts/listeners.html" > Listeners< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../concepts/agents.html" > Agents< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../concepts/filter_chain.html" > Filter Chains< / a > < / li >
2026-01-24 20:01:20 +00:00
< li class = "toctree-l1" x-data = "{ expanded: $el.classList.contains('current') ? true : false }" > < a :class = "{ 'expanded' : expanded }" @ click = "expanded = !expanded" class = "reference internal expandable" href = "../concepts/llm_providers/llm_providers.html" > Model (LLM) Providers< button @ click . prevent . stop = "expanded = !expanded" type = "button" x-cloak = "" > < span class = "sr-only" > < / span > < svg fill = "currentColor" height = "18px" stroke = "none" viewbox = "0 0 24 24" width = "18px" xmlns = "http://www.w3.org/2000/svg" > < path d = "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" > < / path > < / svg > < / button > < / a > < ul x-cloak = "" x-show = "expanded" >
2025-09-19 17:20:37 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "../concepts/llm_providers/supported_providers.html" > Supported Providers & Configuration< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../concepts/llm_providers/client_libraries.html" > Client Libraries< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../concepts/llm_providers/model_aliases.html" > Model Aliases< / a > < / li >
< / ul >
< / li >
2024-10-06 23:55:03 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../concepts/prompt_target.html" > Prompt Target< / a > < / li >
2026-01-07 19:21:18 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../concepts/signals.html" > Signals™< / a > < / li >
2024-10-06 23:55:03 +00:00
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Guides< / span > < / p >
< ul >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../guides/orchestration.html" > Orchestration< / a > < / li >
2025-05-30 23:15:58 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../guides/llm_router.html" > LLM Routing< / a > < / li >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../guides/function_calling.html" > Function Calling< / a > < / li >
2026-01-24 20:01:20 +00:00
< li class = "toctree-l1" x-data = "{ expanded: $el.classList.contains('current') ? true : false }" > < a :class = "{ 'expanded' : expanded }" @ click = "expanded = !expanded" class = "reference internal expandable" href = "../guides/observability/observability.html" > Observability< button @ click . prevent . stop = "expanded = !expanded" type = "button" x-cloak = "" > < span class = "sr-only" > < / span > < svg fill = "currentColor" height = "18px" stroke = "none" viewbox = "0 0 24 24" width = "18px" xmlns = "http://www.w3.org/2000/svg" > < path d = "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" > < / path > < / svg > < / button > < / a > < ul x-cloak = "" x-show = "expanded" >
2024-10-06 23:55:03 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "../guides/observability/tracing.html" > Tracing< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../guides/observability/monitoring.html" > Monitoring< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../guides/observability/access_logging.html" > Access Logging< / a > < / li >
< / ul >
< / li >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../guides/prompt_guard.html" > Guardrails< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../guides/state.html" > Conversational State< / a > < / li >
2024-10-06 23:55:03 +00:00
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Resources< / span > < / p >
< ul class = "current" >
2026-01-24 20:01:20 +00:00
< li class = "toctree-l1" x-data = "{ expanded: $el.classList.contains('current') ? true : false }" > < a :class = "{ 'expanded' : expanded }" @ click = "expanded = !expanded" class = "reference internal expandable" href = "tech_overview/tech_overview.html" > Tech Overview< button @ click . prevent . stop = "expanded = !expanded" type = "button" x-cloak = "" > < span class = "sr-only" > < / span > < svg fill = "currentColor" height = "18px" stroke = "none" viewbox = "0 0 24 24" width = "18px" xmlns = "http://www.w3.org/2000/svg" > < path d = "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" > < / path > < / svg > < / button > < / a > < ul x-cloak = "" x-show = "expanded" >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "tech_overview/request_lifecycle.html" > Request Lifecycle< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "tech_overview/model_serving.html" > Bright Staff< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "tech_overview/threading_model.html" > Threading Model< / a > < / li >
< / ul >
< / li >
2025-10-22 21:13:54 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "deployment.html" > Deployment< / a > < / li >
2024-10-06 23:55:03 +00:00
< li class = "toctree-l1 current" > < a class = "current reference internal" href = "#" > Configuration Reference< / a > < / li >
2026-02-25 03:18:07 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "cli_reference.html" > CLI Reference< / a > < / li >
2025-12-24 01:15:19 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "llms_txt.html" > llms.txt< / a > < / li >
2024-10-06 23:55:03 +00:00
< / ul >
< / nav >
< / div >
< / div >
< button @ click = "showSidebar = false" class = "absolute md:hidden right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100" type = "button" >
< svg class = "h-4 w-4" fill = "currentColor" height = "24" stroke = "none" viewbox = "0 96 960 960" width = "24" xmlns = "http://www.w3.org/2000/svg" >
< path d = "M480 632 284 828q-11 11-28 11t-28-11q-11-11-11-28t11-28l196-196-196-196q-11-11-11-28t11-28q11-11 28-11t28 11l196 196 196-196q11-11 28-11t28 11q11 11 11 28t-11 28L536 576l196 196q11 11 11 28t-11 28q-11 11-28 11t-28-11L480 632Z" > < / path >
< / svg >
< / button >
< / aside >
< main class = "relative py-6 lg:gap-10 lg:py-8 xl:grid xl:grid-cols-[1fr_300px]" >
< div class = "w-full min-w-0 mx-auto" >
< nav aria-label = "breadcrumbs" class = "flex items-center mb-4 space-x-1 text-sm text-muted-foreground" >
< a class = "overflow-hidden text-ellipsis whitespace-nowrap hover:text-foreground" href = "../index.html" >
2026-04-24 21:28:10 +00:00
< span class = "hidden md:inline" > Plano Docs v0.4.21< / span >
2024-10-06 23:55:03 +00:00
< svg aria-label = "Home" class = "md:hidden" fill = "currentColor" height = "18" stroke = "none" viewbox = "0 96 960 960" width = "18" xmlns = "http://www.w3.org/2000/svg" >
< path d = "M240 856h120V616h240v240h120V496L480 316 240 496v360Zm-80 80V456l320-240 320 240v480H520V696h-80v240H160Zm320-350Z" > < / path >
< / svg >
< / a >
< div class = "mr-1" > /< / div > < span aria-current = "page" class = "font-medium text-foreground overflow-hidden text-ellipsis whitespace-nowrap" > Configuration Reference< / span >
< / nav >
< div id = "content" role = "main" >
< section id = "configuration-reference" >
2025-04-13 06:52:52 +00:00
< span id = "id1" > < / span > < h1 > Configuration Reference< a @ click . prevent = "window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)" aria-label = "Copy link to this element" class = "headerlink" data-tooltip = "Copy link to this element" href = "#configuration-reference" > < svg height = "1em" viewbox = "0 0 24 24" width = "1em" xmlns = "http://www.w3.org/2000/svg" > < path d = "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" > < / path > < / svg > < / a > < / h1 >
2025-12-24 01:15:19 +00:00
< p > The following is a complete reference of the < code class = "docutils literal notranslate" > < span class = "pre" > plano_config.yml< / span > < / code > that controls the behavior of a single instance of
2026-02-13 23:17:25 +00:00
the Plano gateway. This where you enable capabilities like routing to upstream LLm providers, defining prompt_targets
2024-12-20 21:25:34 +00:00
where prompts get routed to, apply guardrails, and enable critical agent observability features.< / p >
2025-04-13 06:52:52 +00:00
< div class = "literal-block-wrapper docutils container" id = "id2" >
2026-02-13 23:17:25 +00:00
< div class = "code-block-caption" > < span class = "caption-text" > < a class = "reference download internal" download = "" href = "../_downloads/c86f9e8fb1f2994b1ba4a0b98481410e/plano_config_full_reference.yaml" > < code class = "xref download docutils literal notranslate" > < span class = "pre" > Plano< / span > < span class = "pre" > Configuration< / span > < span class = "pre" > -< / span > < span class = "pre" > Full< / span > < span class = "pre" > Reference< / span > < / code > < / a > < / span > < a @ click . prevent = "window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)" aria-label = "Copy link to this element" class = "headerlink" data-tooltip = "Copy link to this element" href = "#id2" > < svg height = "1em" viewbox = "0 0 24 24" width = "1em" xmlns = "http://www.w3.org/2000/svg" > < path d = "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" > < / path > < / svg > < / a > < / div >
< div class = "highlight-yaml notranslate" > < div class = "highlight" > < pre > < span > < / span > < code > < span id = "line-1" > < span class = "linenos" > 1< / span > < span class = "c1" > # Plano Gateway configuration version< / span >
2026-04-24 19:32:15 +00:00
< / span > < span id = "line-2" > < span class = "linenos" > 2< / span > < span class = "nt" > version< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > v0.4.0< / span >
2025-12-24 01:15:19 +00:00
< / span > < span id = "line-3" > < span class = "linenos" > 3< / span >
2026-01-14 23:07:03 +00:00
< / span > < span id = "line-4" > < span class = "linenos" > 4< / span > < span class = "c1" > # External HTTP agents - API type is controlled by request path (/v1/responses, /v1/messages, /v1/chat/completions)< / span >
< / span > < span id = "line-5" > < span class = "linenos" > 5< / span > < span class = "nt" > agents< / span > < span class = "p" > :< / span >
< / span > < span id = "line-6" > < span class = "linenos" > 6< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > id< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > weather_agent< / span > < span class = "w" > < / span > < span class = "c1" > # Example agent for weather< / span >
2026-03-05 15:35:59 +00:00
< / span > < span id = "line-7" > < span class = "linenos" > 7< / span > < span class = "w" > < / span > < span class = "nt" > url< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > http://localhost:10510< / span >
2026-01-14 23:07:03 +00:00
< / span > < span id = "line-8" > < span class = "linenos" > 8< / span >
< / span > < span id = "line-9" > < span class = "linenos" > 9< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > id< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > flight_agent< / span > < span class = "w" > < / span > < span class = "c1" > # Example agent for flights< / span >
2026-03-05 15:35:59 +00:00
< / span > < span id = "line-10" > < span class = "linenos" > 10< / span > < span class = "w" > < / span > < span class = "nt" > url< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > http://localhost:10520< / span >
2026-01-14 23:07:03 +00:00
< / span > < span id = "line-11" > < span class = "linenos" > 11< / span >
< / span > < span id = "line-12" > < span class = "linenos" > 12< / span > < span class = "c1" > # MCP filters applied to requests/responses (e.g., input validation, query rewriting)< / span >
< / span > < span id = "line-13" > < span class = "linenos" > 13< / span > < span class = "nt" > filters< / span > < span class = "p" > :< / span >
< / span > < span id = "line-14" > < span class = "linenos" > 14< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > id< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > input_guards< / span > < span class = "w" > < / span > < span class = "c1" > # Example filter for input validation< / span >
2026-03-05 15:35:59 +00:00
< / span > < span id = "line-15" > < span class = "linenos" > 15< / span > < span class = "w" > < / span > < span class = "nt" > url< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > http://localhost:10500< / span >
2026-01-14 23:07:03 +00:00
< / span > < span id = "line-16" > < span class = "linenos" > 16< / span > < span class = "w" > < / span > < span class = "c1" > # type: mcp (default)< / span >
< / span > < span id = "line-17" > < span class = "linenos" > 17< / span > < span class = "w" > < / span > < span class = "c1" > # transport: streamable-http (default)< / span >
< / span > < span id = "line-18" > < span class = "linenos" > 18< / span > < span class = "w" > < / span > < span class = "c1" > # tool: input_guards (default - same as filter id)< / span >
< / span > < span id = "line-19" > < span class = "linenos" > 19< / span >
< / span > < span id = "line-20" > < span class = "linenos" > 20< / span > < span class = "c1" > # LLM provider configurations with API keys and model routing< / span >
< / span > < span id = "line-21" > < span class = "linenos" > 21< / span > < span class = "nt" > model_providers< / span > < span class = "p" > :< / span >
< / span > < span id = "line-22" > < span class = "linenos" > 22< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/gpt-4o< / span >
< / span > < span id = "line-23" > < span class = "linenos" > 23< / span > < span class = "w" > < / span > < span class = "nt" > access_key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > $OPENAI_API_KEY< / span >
< / span > < span id = "line-24" > < span class = "linenos" > 24< / span > < span class = "w" > < / span > < span class = "nt" > default< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > true< / span >
< / span > < span id = "line-25" > < span class = "linenos" > 25< / span >
< / span > < span id = "line-26" > < span class = "linenos" > 26< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/gpt-4o-mini< / span >
< / span > < span id = "line-27" > < span class = "linenos" > 27< / span > < span class = "w" > < / span > < span class = "nt" > access_key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > $OPENAI_API_KEY< / span >
2025-12-24 01:15:19 +00:00
< / span > < span id = "line-28" > < span class = "linenos" > 28< / span >
2026-01-14 23:07:03 +00:00
< / span > < span id = "line-29" > < span class = "linenos" > 29< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > anthropic/claude-sonnet-4-0< / span >
< / span > < span id = "line-30" > < span class = "linenos" > 30< / span > < span class = "w" > < / span > < span class = "nt" > access_key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > $ANTHROPIC_API_KEY< / span >
2025-12-24 01:15:19 +00:00
< / span > < span id = "line-31" > < span class = "linenos" > 31< / span >
2026-01-14 23:07:03 +00:00
< / span > < span id = "line-32" > < span class = "linenos" > 32< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mistral/ministral-3b-latest< / span >
< / span > < span id = "line-33" > < span class = "linenos" > 33< / span > < span class = "w" > < / span > < span class = "nt" > access_key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > $MISTRAL_API_KEY< / span >
2025-12-24 01:15:19 +00:00
< / span > < span id = "line-34" > < span class = "linenos" > 34< / span >
2026-04-24 19:32:15 +00:00
< / span > < span id = "line-35" > < span class = "linenos" > 35< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > groq/llama-3.3-70b-versatile< / span >
< / span > < span id = "line-36" > < span class = "linenos" > 36< / span > < span class = "w" > < / span > < span class = "nt" > access_key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > $GROQ_API_KEY< / span >
< / span > < span id = "line-37" > < span class = "linenos" > 37< / span >
< / span > < span id = "line-38" > < span class = "linenos" > 38< / span > < span class = "w" > < / span > < span class = "c1" > # passthrough_auth: forwards the client's Authorization header upstream instead of< / span >
< / span > < span id = "line-39" > < span class = "linenos" > 39< / span > < span class = "w" > < / span > < span class = "c1" > # using the configured access_key. Useful for LiteLLM or similar proxy setups.< / span >
< / span > < span id = "line-40" > < span class = "linenos" > 40< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/gpt-4o-litellm< / span >
< / span > < span id = "line-41" > < span class = "linenos" > 41< / span > < span class = "w" > < / span > < span class = "nt" > base_url< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > https://litellm.example.com< / span >
< / span > < span id = "line-42" > < span class = "linenos" > 42< / span > < span class = "w" > < / span > < span class = "nt" > passthrough_auth< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > true< / span >
< / span > < span id = "line-43" > < span class = "linenos" > 43< / span >
< / span > < span id = "line-44" > < span class = "linenos" > 44< / span > < span class = "w" > < / span > < span class = "c1" > # Custom/self-hosted endpoint with explicit http_host override< / span >
< / span > < span id = "line-45" > < span class = "linenos" > 45< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/llama-3.3-70b< / span >
< / span > < span id = "line-46" > < span class = "linenos" > 46< / span > < span class = "w" > < / span > < span class = "nt" > base_url< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > https://api.custom-provider.com< / span >
< / span > < span id = "line-47" > < span class = "linenos" > 47< / span > < span class = "w" > < / span > < span class = "nt" > http_host< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > api.custom-provider.com< / span >
< / span > < span id = "line-48" > < span class = "linenos" > 48< / span > < span class = "w" > < / span > < span class = "nt" > access_key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > $CUSTOM_API_KEY< / span >
< / span > < span id = "line-49" > < span class = "linenos" > 49< / span >
< / span > < span id = "line-50" > < span class = "linenos" > 50< / span > < span class = "c1" > # Model aliases - use friendly names instead of full provider model names< / span >
< / span > < span id = "line-51" > < span class = "linenos" > 51< / span > < span class = "nt" > model_aliases< / span > < span class = "p" > :< / span >
< / span > < span id = "line-52" > < span class = "linenos" > 52< / span > < span class = "w" > < / span > < span class = "nt" > fast-llm< / span > < span class = "p" > :< / span >
< / span > < span id = "line-53" > < span class = "linenos" > 53< / span > < span class = "w" > < / span > < span class = "nt" > target< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > gpt-4o-mini< / span >
< / span > < span id = "line-54" > < span class = "linenos" > 54< / span >
< / span > < span id = "line-55" > < span class = "linenos" > 55< / span > < span class = "w" > < / span > < span class = "nt" > smart-llm< / span > < span class = "p" > :< / span >
< / span > < span id = "line-56" > < span class = "linenos" > 56< / span > < span class = "w" > < / span > < span class = "nt" > target< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > gpt-4o< / span >
< / span > < span id = "line-57" > < span class = "linenos" > 57< / span >
< / span > < span id = "line-58" > < span class = "linenos" > 58< / span > < span class = "c1" > # routing_preferences: top-level list that tags named task categories with an< / span >
< / span > < span id = "line-59" > < span class = "linenos" > 59< / span > < span class = "c1" > # ordered pool of candidate models. Plano's LLM router matches incoming requests< / span >
< / span > < span id = "line-60" > < span class = "linenos" > 60< / span > < span class = "c1" > # against these descriptions and returns an ordered list of models; the client< / span >
< / span > < span id = "line-61" > < span class = "linenos" > 61< / span > < span class = "c1" > # uses models[0] as primary and retries with models[1], models[2]... on 429/5xx.< / span >
< / span > < span id = "line-62" > < span class = "linenos" > 62< / span > < span class = "c1" > # Requires overrides.llm_routing_model to point at Plano-Orchestrator (or equivalent).< / span >
< / span > < span id = "line-63" > < span class = "linenos" > 63< / span > < span class = "c1" > # Each model in `models` must be declared in model_providers above.< / span >
< / span > < span id = "line-64" > < span class = "linenos" > 64< / span > < span class = "c1" > # selection_policy is optional: {prefer: cheapest|fastest|none} lets the router< / span >
< / span > < span id = "line-65" > < span class = "linenos" > 65< / span > < span class = "c1" > # reorder candidates using live cost/latency data from model_metrics_sources.< / span >
< / span > < span id = "line-66" > < span class = "linenos" > 66< / span > < span class = "nt" > routing_preferences< / span > < span class = "p" > :< / span >
< / span > < span id = "line-67" > < span class = "linenos" > 67< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > code generation< / span >
< / span > < span id = "line-68" > < span class = "linenos" > 68< / span > < span class = "w" > < / span > < span class = "nt" > description< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > generating new code snippets, functions, or boilerplate based on user prompts or requirements< / span >
< / span > < span id = "line-69" > < span class = "linenos" > 69< / span > < span class = "w" > < / span > < span class = "nt" > models< / span > < span class = "p" > :< / span >
< / span > < span id = "line-70" > < span class = "linenos" > 70< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > anthropic/claude-sonnet-4-0< / span >
< / span > < span id = "line-71" > < span class = "linenos" > 71< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/gpt-4o< / span >
< / span > < span id = "line-72" > < span class = "linenos" > 72< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > groq/llama-3.3-70b-versatile< / span >
< / span > < span id = "line-73" > < span class = "linenos" > 73< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > code review< / span >
< / span > < span id = "line-74" > < span class = "linenos" > 74< / span > < span class = "w" > < / span > < span class = "nt" > description< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > reviewing, analyzing, and suggesting improvements to existing code< / span >
< / span > < span id = "line-75" > < span class = "linenos" > 75< / span > < span class = "w" > < / span > < span class = "nt" > models< / span > < span class = "p" > :< / span >
< / span > < span id = "line-76" > < span class = "linenos" > 76< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > anthropic/claude-sonnet-4-0< / span >
< / span > < span id = "line-77" > < span class = "linenos" > 77< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > groq/llama-3.3-70b-versatile< / span >
< / span > < span id = "line-78" > < span class = "linenos" > 78< / span > < span class = "w" > < / span > < span class = "nt" > selection_policy< / span > < span class = "p" > :< / span >
< / span > < span id = "line-79" > < span class = "linenos" > 79< / span > < span class = "w" > < / span > < span class = "nt" > prefer< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > cheapest< / span >
2026-03-30 20:47:27 +00:00
< / span > < span id = "line-80" > < span class = "linenos" > 80< / span >
2026-04-24 19:32:15 +00:00
< / span > < span id = "line-81" > < span class = "linenos" > 81< / span > < span class = "c1" > # HTTP listeners - entry points for agent routing, prompt targets, and direct LLM access< / span >
< / span > < span id = "line-82" > < span class = "linenos" > 82< / span > < span class = "nt" > listeners< / span > < span class = "p" > :< / span >
< / span > < span id = "line-83" > < span class = "linenos" > 83< / span > < span class = "w" > < / span > < span class = "c1" > # Agent listener for routing requests to multiple agents< / span >
< / span > < span id = "line-84" > < span class = "linenos" > 84< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > agent< / span >
< / span > < span id = "line-85" > < span class = "linenos" > 85< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > travel_booking_service< / span >
< / span > < span id = "line-86" > < span class = "linenos" > 86< / span > < span class = "w" > < / span > < span class = "nt" > port< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 8001< / span >
< / span > < span id = "line-87" > < span class = "linenos" > 87< / span > < span class = "w" > < / span > < span class = "nt" > router< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > plano_orchestrator_v1< / span >
< / span > < span id = "line-88" > < span class = "linenos" > 88< / span > < span class = "w" > < / span > < span class = "nt" > address< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 0.0.0.0< / span >
< / span > < span id = "line-89" > < span class = "linenos" > 89< / span > < span class = "w" > < / span > < span class = "nt" > agents< / span > < span class = "p" > :< / span >
< / span > < span id = "line-90" > < span class = "linenos" > 90< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > id< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > rag_agent< / span >
< / span > < span id = "line-91" > < span class = "linenos" > 91< / span > < span class = "w" > < / span > < span class = "nt" > description< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > virtual assistant for retrieval augmented generation tasks< / span >
< / span > < span id = "line-92" > < span class = "linenos" > 92< / span > < span class = "w" > < / span > < span class = "nt" > input_filters< / span > < span class = "p" > :< / span >
< / span > < span id = "line-93" > < span class = "linenos" > 93< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > input_guards< / span >
< / span > < span id = "line-94" > < span class = "linenos" > 94< / span >
< / span > < span id = "line-95" > < span class = "linenos" > 95< / span > < span class = "w" > < / span > < span class = "c1" > # Model listener for direct LLM access< / span >
< / span > < span id = "line-96" > < span class = "linenos" > 96< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > model< / span >
< / span > < span id = "line-97" > < span class = "linenos" > 97< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > model_1< / span >
< / span > < span id = "line-98" > < span class = "linenos" > 98< / span > < span class = "w" > < / span > < span class = "nt" > address< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 0.0.0.0< / span >
< / span > < span id = "line-99" > < span class = "linenos" > 99< / span > < span class = "w" > < / span > < span class = "nt" > port< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 12000< / span >
< / span > < span id = "line-100" > < span class = "linenos" > 100< / span > < span class = "w" > < / span > < span class = "nt" > timeout< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 30s< / span > < span class = "w" > < / span > < span class = "c1" > # Request timeout (e.g. "30s", "60s")< / span >
< / span > < span id = "line-101" > < span class = "linenos" > 101< / span > < span class = "w" > < / span > < span class = "nt" > max_retries< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 3< / span > < span class = "w" > < / span > < span class = "c1" > # Number of retries on upstream failure< / span >
< / span > < span id = "line-102" > < span class = "linenos" > 102< / span > < span class = "w" > < / span > < span class = "nt" > input_filters< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "c1" > # Filters applied before forwarding to LLM< / span >
< / span > < span id = "line-103" > < span class = "linenos" > 103< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > input_guards< / span >
< / span > < span id = "line-104" > < span class = "linenos" > 104< / span > < span class = "w" > < / span > < span class = "nt" > output_filters< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "c1" > # Filters applied to LLM responses before returning to client< / span >
< / span > < span id = "line-105" > < span class = "linenos" > 105< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > input_guards< / span >
< / span > < span id = "line-106" > < span class = "linenos" > 106< / span >
< / span > < span id = "line-107" > < span class = "linenos" > 107< / span > < span class = "w" > < / span > < span class = "c1" > # Prompt listener for function calling (for prompt_targets)< / span >
< / span > < span id = "line-108" > < span class = "linenos" > 108< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > prompt< / span >
< / span > < span id = "line-109" > < span class = "linenos" > 109< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > prompt_function_listener< / span >
< / span > < span id = "line-110" > < span class = "linenos" > 110< / span > < span class = "w" > < / span > < span class = "nt" > address< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 0.0.0.0< / span >
< / span > < span id = "line-111" > < span class = "linenos" > 111< / span > < span class = "w" > < / span > < span class = "nt" > port< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 10000< / span >
< / span > < span id = "line-112" > < span class = "linenos" > 112< / span >
< / span > < span id = "line-113" > < span class = "linenos" > 113< / span > < span class = "c1" > # Reusable service endpoints< / span >
< / span > < span id = "line-114" > < span class = "linenos" > 114< / span > < span class = "nt" > endpoints< / span > < span class = "p" > :< / span >
< / span > < span id = "line-115" > < span class = "linenos" > 115< / span > < span class = "w" > < / span > < span class = "nt" > app_server< / span > < span class = "p" > :< / span >
< / span > < span id = "line-116" > < span class = "linenos" > 116< / span > < span class = "w" > < / span > < span class = "nt" > endpoint< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 127.0.0.1:80< / span >
< / span > < span id = "line-117" > < span class = "linenos" > 117< / span > < span class = "w" > < / span > < span class = "nt" > connect_timeout< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 0.005s< / span >
< / span > < span id = "line-118" > < span class = "linenos" > 118< / span > < span class = "w" > < / span > < span class = "nt" > protocol< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > http< / span > < span class = "w" > < / span > < span class = "c1" > # http or https< / span >
< / span > < span id = "line-119" > < span class = "linenos" > 119< / span >
< / span > < span id = "line-120" > < span class = "linenos" > 120< / span > < span class = "w" > < / span > < span class = "nt" > mistral_local< / span > < span class = "p" > :< / span >
< / span > < span id = "line-121" > < span class = "linenos" > 121< / span > < span class = "w" > < / span > < span class = "nt" > endpoint< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 127.0.0.1:8001< / span >
< / span > < span id = "line-122" > < span class = "linenos" > 122< / span >
< / span > < span id = "line-123" > < span class = "linenos" > 123< / span > < span class = "w" > < / span > < span class = "nt" > secure_service< / span > < span class = "p" > :< / span >
< / span > < span id = "line-124" > < span class = "linenos" > 124< / span > < span class = "w" > < / span > < span class = "nt" > endpoint< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > api.example.com:443< / span >
< / span > < span id = "line-125" > < span class = "linenos" > 125< / span > < span class = "w" > < / span > < span class = "nt" > protocol< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > https< / span >
< / span > < span id = "line-126" > < span class = "linenos" > 126< / span > < span class = "w" > < / span > < span class = "nt" > http_host< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > api.example.com< / span > < span class = "w" > < / span > < span class = "c1" > # Override the Host header sent upstream< / span >
< / span > < span id = "line-127" > < span class = "linenos" > 127< / span >
< / span > < span id = "line-128" > < span class = "linenos" > 128< / span > < span class = "c1" > # Optional top-level system prompt applied to all prompt_targets< / span >
< / span > < span id = "line-129" > < span class = "linenos" > 129< / span > < span class = "nt" > system_prompt< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > |< / span >
< / span > < span id = "line-130" > < span class = "linenos" > 130< / span > < span class = "w" > < / span > < span class = "no" > You are a helpful assistant. Always respond concisely and accurately.< / span >
< / span > < span id = "line-131" > < span class = "linenos" > 131< / span >
< / span > < span id = "line-132" > < span class = "linenos" > 132< / span > < span class = "c1" > # Prompt targets for function calling and API orchestration< / span >
< / span > < span id = "line-133" > < span class = "linenos" > 133< / span > < span class = "nt" > prompt_targets< / span > < span class = "p" > :< / span >
< / span > < span id = "line-134" > < span class = "linenos" > 134< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > get_current_weather< / span >
< / span > < span id = "line-135" > < span class = "linenos" > 135< / span > < span class = "w" > < / span > < span class = "nt" > description< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > Get current weather at a location.< / span >
< / span > < span id = "line-136" > < span class = "linenos" > 136< / span > < span class = "w" > < / span > < span class = "nt" > parameters< / span > < span class = "p" > :< / span >
< / span > < span id = "line-137" > < span class = "linenos" > 137< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > location< / span >
< / span > < span id = "line-138" > < span class = "linenos" > 138< / span > < span class = "w" > < / span > < span class = "nt" > description< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > The location to get the weather for< / span >
< / span > < span id = "line-139" > < span class = "linenos" > 139< / span > < span class = "w" > < / span > < span class = "nt" > required< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > true< / span >
< / span > < span id = "line-140" > < span class = "linenos" > 140< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > string< / span >
< / span > < span id = "line-141" > < span class = "linenos" > 141< / span > < span class = "w" > < / span > < span class = "nt" > format< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > City, State< / span >
< / span > < span id = "line-142" > < span class = "linenos" > 142< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > days< / span >
< / span > < span id = "line-143" > < span class = "linenos" > 143< / span > < span class = "w" > < / span > < span class = "nt" > description< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > the number of days for the request< / span >
< / span > < span id = "line-144" > < span class = "linenos" > 144< / span > < span class = "w" > < / span > < span class = "nt" > required< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > true< / span >
< / span > < span id = "line-145" > < span class = "linenos" > 145< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > int< / span >
< / span > < span id = "line-146" > < span class = "linenos" > 146< / span > < span class = "w" > < / span > < span class = "nt" > endpoint< / span > < span class = "p" > :< / span >
< / span > < span id = "line-147" > < span class = "linenos" > 147< / span > < span class = "w" > < / span > < span class = "nt" > name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > app_server< / span >
< / span > < span id = "line-148" > < span class = "linenos" > 148< / span > < span class = "w" > < / span > < span class = "nt" > path< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > /weather< / span >
< / span > < span id = "line-149" > < span class = "linenos" > 149< / span > < span class = "w" > < / span > < span class = "nt" > http_method< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > POST< / span >
< / span > < span id = "line-150" > < span class = "linenos" > 150< / span > < span class = "w" > < / span > < span class = "c1" > # Per-target system prompt (overrides top-level system_prompt for this target)< / span >
< / span > < span id = "line-151" > < span class = "linenos" > 151< / span > < span class = "w" > < / span > < span class = "nt" > system_prompt< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > You are a weather expert. Provide accurate and concise weather information.< / span >
< / span > < span id = "line-152" > < span class = "linenos" > 152< / span > < span class = "w" > < / span > < span class = "c1" > # auto_llm_dispatch_on_response: when true, the LLM is called again with the< / span >
< / span > < span id = "line-153" > < span class = "linenos" > 153< / span > < span class = "w" > < / span > < span class = "c1" > # function response to produce a final natural-language answer for the user< / span >
< / span > < span id = "line-154" > < span class = "linenos" > 154< / span > < span class = "w" > < / span > < span class = "nt" > auto_llm_dispatch_on_response< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > true< / span >
< / span > < span id = "line-155" > < span class = "linenos" > 155< / span >
< / span > < span id = "line-156" > < span class = "linenos" > 156< / span > < span class = "c1" > # Rate limits - control token usage per model and request selector< / span >
< / span > < span id = "line-157" > < span class = "linenos" > 157< / span > < span class = "nt" > ratelimits< / span > < span class = "p" > :< / span >
< / span > < span id = "line-158" > < span class = "linenos" > 158< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/gpt-4o< / span >
< / span > < span id = "line-159" > < span class = "linenos" > 159< / span > < span class = "w" > < / span > < span class = "nt" > selector< / span > < span class = "p" > :< / span >
< / span > < span id = "line-160" > < span class = "linenos" > 160< / span > < span class = "w" > < / span > < span class = "nt" > key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > x-user-id< / span > < span class = "w" > < / span > < span class = "c1" > # HTTP header key used to identify the rate-limit subject< / span >
< / span > < span id = "line-161" > < span class = "linenos" > 161< / span > < span class = "w" > < / span > < span class = "nt" > value< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s" > "*"< / span > < span class = "w" > < / span > < span class = "c1" > # Wildcard matches any value; use a specific string to target one< / span >
< / span > < span id = "line-162" > < span class = "linenos" > 162< / span > < span class = "w" > < / span > < span class = "nt" > limit< / span > < span class = "p" > :< / span >
< / span > < span id = "line-163" > < span class = "linenos" > 163< / span > < span class = "w" > < / span > < span class = "nt" > tokens< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 100000< / span > < span class = "w" > < / span > < span class = "c1" > # Maximum tokens allowed in the given time unit< / span >
< / span > < span id = "line-164" > < span class = "linenos" > 164< / span > < span class = "w" > < / span > < span class = "nt" > unit< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > hour< / span > < span class = "w" > < / span > < span class = "c1" > # Time unit: "minute", "hour", or "day"< / span >
< / span > < span id = "line-165" > < span class = "linenos" > 165< / span >
< / span > < span id = "line-166" > < span class = "linenos" > 166< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "nt" > model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > openai/gpt-4o-mini< / span >
< / span > < span id = "line-167" > < span class = "linenos" > 167< / span > < span class = "w" > < / span > < span class = "nt" > selector< / span > < span class = "p" > :< / span >
< / span > < span id = "line-168" > < span class = "linenos" > 168< / span > < span class = "w" > < / span > < span class = "nt" > key< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > x-org-id< / span >
< / span > < span id = "line-169" > < span class = "linenos" > 169< / span > < span class = "w" > < / span > < span class = "nt" > value< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > acme-corp< / span >
< / span > < span id = "line-170" > < span class = "linenos" > 170< / span > < span class = "w" > < / span > < span class = "nt" > limit< / span > < span class = "p" > :< / span >
< / span > < span id = "line-171" > < span class = "linenos" > 171< / span > < span class = "w" > < / span > < span class = "nt" > tokens< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 500000< / span >
< / span > < span id = "line-172" > < span class = "linenos" > 172< / span > < span class = "w" > < / span > < span class = "nt" > unit< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > day< / span >
< / span > < span id = "line-173" > < span class = "linenos" > 173< / span >
< / span > < span id = "line-174" > < span class = "linenos" > 174< / span > < span class = "c1" > # Global behavior overrides< / span >
< / span > < span id = "line-175" > < span class = "linenos" > 175< / span > < span class = "nt" > overrides< / span > < span class = "p" > :< / span >
< / span > < span id = "line-176" > < span class = "linenos" > 176< / span > < span class = "w" > < / span > < span class = "c1" > # Threshold for routing a request to a prompt_target (0.0– 1.0). Lower = more permissive.< / span >
< / span > < span id = "line-177" > < span class = "linenos" > 177< / span > < span class = "w" > < / span > < span class = "nt" > prompt_target_intent_matching_threshold< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 0.7< / span >
< / span > < span id = "line-178" > < span class = "linenos" > 178< / span > < span class = "w" > < / span > < span class = "c1" > # Trim conversation history to fit within the model's context window< / span >
< / span > < span id = "line-179" > < span class = "linenos" > 179< / span > < span class = "w" > < / span > < span class = "nt" > optimize_context_window< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > true< / span >
< / span > < span id = "line-180" > < span class = "linenos" > 180< / span > < span class = "w" > < / span > < span class = "c1" > # Use Plano's agent orchestrator for multi-agent request routing< / span >
< / span > < span id = "line-181" > < span class = "linenos" > 181< / span > < span class = "w" > < / span > < span class = "nt" > use_agent_orchestrator< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > false< / span >
< / span > < span id = "line-182" > < span class = "linenos" > 182< / span > < span class = "w" > < / span > < span class = "c1" > # Connect timeout for upstream provider clusters (e.g., "5s", "10s"). Default: "5s"< / span >
< / span > < span id = "line-183" > < span class = "linenos" > 183< / span > < span class = "w" > < / span > < span class = "nt" > upstream_connect_timeout< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 10s< / span >
< / span > < span id = "line-184" > < span class = "linenos" > 184< / span > < span class = "w" > < / span > < span class = "c1" > # Path to the trusted CA bundle for upstream TLS verification< / span >
< / span > < span id = "line-185" > < span class = "linenos" > 185< / span > < span class = "w" > < / span > < span class = "nt" > upstream_tls_ca_path< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > /etc/ssl/certs/ca-certificates.crt< / span >
< / span > < span id = "line-186" > < span class = "linenos" > 186< / span > < span class = "w" > < / span > < span class = "c1" > # Model used for intent-based LLM routing (must be listed in model_providers)< / span >
< / span > < span id = "line-187" > < span class = "linenos" > 187< / span > < span class = "w" > < / span > < span class = "nt" > llm_routing_model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > Plano-Orchestrator< / span >
< / span > < span id = "line-188" > < span class = "linenos" > 188< / span > < span class = "w" > < / span > < span class = "c1" > # Model used for agent orchestration (must be listed in model_providers)< / span >
< / span > < span id = "line-189" > < span class = "linenos" > 189< / span > < span class = "w" > < / span > < span class = "nt" > agent_orchestration_model< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > Plano-Orchestrator< / span >
< / span > < span id = "line-190" > < span class = "linenos" > 190< / span > < span class = "w" > < / span > < span class = "c1" > # Disable agentic signal analysis (frustration, repetition, escalation, etc.)< / span >
< / span > < span id = "line-191" > < span class = "linenos" > 191< / span > < span class = "w" > < / span > < span class = "c1" > # on LLM responses to save CPU. Default: false.< / span >
< / span > < span id = "line-192" > < span class = "linenos" > 192< / span > < span class = "w" > < / span > < span class = "nt" > disable_signals< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > false< / span >
< / span > < span id = "line-193" > < span class = "linenos" > 193< / span >
< / span > < span id = "line-194" > < span class = "linenos" > 194< / span > < span class = "c1" > # Model affinity — pin routing decisions for agentic loops< / span >
< / span > < span id = "line-195" > < span class = "linenos" > 195< / span > < span class = "nt" > routing< / span > < span class = "p" > :< / span >
< / span > < span id = "line-196" > < span class = "linenos" > 196< / span > < span class = "w" > < / span > < span class = "nt" > session_ttl_seconds< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 600< / span > < span class = "w" > < / span > < span class = "c1" > # How long a pinned session lasts (default: 600s / 10 min)< / span >
< / span > < span id = "line-197" > < span class = "linenos" > 197< / span > < span class = "w" > < / span > < span class = "nt" > session_max_entries< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 10000< / span > < span class = "w" > < / span > < span class = "c1" > # Max cached sessions before eviction (upper limit: 10000)< / span >
< / span > < span id = "line-198" > < span class = "linenos" > 198< / span > < span class = "w" > < / span > < span class = "c1" > # session_cache controls the backend used to store affinity state.< / span >
< / span > < span id = "line-199" > < span class = "linenos" > 199< / span > < span class = "w" > < / span > < span class = "c1" > # "memory" (default) is in-process and works for single-instance deployments.< / span >
< / span > < span id = "line-200" > < span class = "linenos" > 200< / span > < span class = "w" > < / span > < span class = "c1" > # "redis" shares state across replicas — required for multi-replica / Kubernetes setups.< / span >
< / span > < span id = "line-201" > < span class = "linenos" > 201< / span > < span class = "w" > < / span > < span class = "nt" > session_cache< / span > < span class = "p" > :< / span >
< / span > < span id = "line-202" > < span class = "linenos" > 202< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > memory< / span > < span class = "w" > < / span > < span class = "c1" > # "memory" (default) or "redis"< / span >
< / span > < span id = "line-203" > < span class = "linenos" > 203< / span > < span class = "w" > < / span > < span class = "c1" > # url is required when type is "redis". Supports redis:// and rediss:// (TLS).< / span >
< / span > < span id = "line-204" > < span class = "linenos" > 204< / span > < span class = "w" > < / span > < span class = "c1" > # url: redis://localhost:6379< / span >
< / span > < span id = "line-205" > < span class = "linenos" > 205< / span > < span class = "w" > < / span > < span class = "c1" > # tenant_header: x-org-id # optional; when set, keys are scoped as plano:affinity:{tenant_id}:{session_id}< / span >
2026-04-23 18:39:06 +00:00
< / span > < span id = "line-206" > < span class = "linenos" > 206< / span >
2026-04-24 19:32:15 +00:00
< / span > < span id = "line-207" > < span class = "linenos" > 207< / span > < span class = "c1" > # State storage for multi-turn conversation history< / span >
< / span > < span id = "line-208" > < span class = "linenos" > 208< / span > < span class = "nt" > state_storage< / span > < span class = "p" > :< / span >
< / span > < span id = "line-209" > < span class = "linenos" > 209< / span > < span class = "w" > < / span > < span class = "nt" > type< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > memory< / span > < span class = "w" > < / span > < span class = "c1" > # "memory" (in-process) or "postgres" (persistent)< / span >
< / span > < span id = "line-210" > < span class = "linenos" > 210< / span > < span class = "w" > < / span > < span class = "c1" > # connection_string is required when type is postgres.< / span >
< / span > < span id = "line-211" > < span class = "linenos" > 211< / span > < span class = "w" > < / span > < span class = "c1" > # Supports environment variable substitution: $VAR or ${VAR}< / span >
< / span > < span id = "line-212" > < span class = "linenos" > 212< / span > < span class = "w" > < / span > < span class = "c1" > # connection_string: postgresql://user:$DB_PASS@localhost:5432/plano< / span >
< / span > < span id = "line-213" > < span class = "linenos" > 213< / span >
< / span > < span id = "line-214" > < span class = "linenos" > 214< / span > < span class = "c1" > # Input guardrails applied globally to all incoming requests< / span >
< / span > < span id = "line-215" > < span class = "linenos" > 215< / span > < span class = "nt" > prompt_guards< / span > < span class = "p" > :< / span >
< / span > < span id = "line-216" > < span class = "linenos" > 216< / span > < span class = "w" > < / span > < span class = "nt" > input_guards< / span > < span class = "p" > :< / span >
< / span > < span id = "line-217" > < span class = "linenos" > 217< / span > < span class = "w" > < / span > < span class = "nt" > jailbreak< / span > < span class = "p" > :< / span >
< / span > < span id = "line-218" > < span class = "linenos" > 218< / span > < span class = "w" > < / span > < span class = "nt" > on_exception< / span > < span class = "p" > :< / span >
< / span > < span id = "line-219" > < span class = "linenos" > 219< / span > < span class = "w" > < / span > < span class = "nt" > message< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s" > "I'm< / span > < span class = "nv" > < / span > < span class = "s" > sorry,< / span > < span class = "nv" > < / span > < span class = "s" > I< / span > < span class = "nv" > < / span > < span class = "s" > can't< / span > < span class = "nv" > < / span > < span class = "s" > help< / span > < span class = "nv" > < / span > < span class = "s" > with< / span > < span class = "nv" > < / span > < span class = "s" > that< / span > < span class = "nv" > < / span > < span class = "s" > request."< / span >
< / span > < span id = "line-220" > < span class = "linenos" > 220< / span >
< / span > < span id = "line-221" > < span class = "linenos" > 221< / span > < span class = "c1" > # OpenTelemetry tracing configuration< / span >
< / span > < span id = "line-222" > < span class = "linenos" > 222< / span > < span class = "nt" > tracing< / span > < span class = "p" > :< / span >
< / span > < span id = "line-223" > < span class = "linenos" > 223< / span > < span class = "w" > < / span > < span class = "c1" > # Random sampling percentage (1-100)< / span >
< / span > < span id = "line-224" > < span class = "linenos" > 224< / span > < span class = "w" > < / span > < span class = "nt" > random_sampling< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > 100< / span >
< / span > < span id = "line-225" > < span class = "linenos" > 225< / span > < span class = "w" > < / span > < span class = "c1" > # Include internal Plano spans in traces< / span >
< / span > < span id = "line-226" > < span class = "linenos" > 226< / span > < span class = "w" > < / span > < span class = "nt" > trace_arch_internal< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > false< / span >
< / span > < span id = "line-227" > < span class = "linenos" > 227< / span > < span class = "w" > < / span > < span class = "c1" > # gRPC endpoint for OpenTelemetry collector (e.g., Jaeger, Tempo)< / span >
< / span > < span id = "line-228" > < span class = "linenos" > 228< / span > < span class = "w" > < / span > < span class = "nt" > opentracing_grpc_endpoint< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > http://localhost:4317< / span >
< / span > < span id = "line-229" > < span class = "linenos" > 229< / span > < span class = "w" > < / span > < span class = "nt" > span_attributes< / span > < span class = "p" > :< / span >
< / span > < span id = "line-230" > < span class = "linenos" > 230< / span > < span class = "w" > < / span > < span class = "c1" > # Propagate request headers whose names start with these prefixes as span attributes< / span >
< / span > < span id = "line-231" > < span class = "linenos" > 231< / span > < span class = "w" > < / span > < span class = "nt" > header_prefixes< / span > < span class = "p" > :< / span >
< / span > < span id = "line-232" > < span class = "linenos" > 232< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > x-user-< / span >
< / span > < span id = "line-233" > < span class = "linenos" > 233< / span > < span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > x-org-< / span >
< / span > < span id = "line-234" > < span class = "linenos" > 234< / span > < span class = "w" > < / span > < span class = "c1" > # Static key/value pairs added to every span< / span >
< / span > < span id = "line-235" > < span class = "linenos" > 235< / span > < span class = "w" > < / span > < span class = "nt" > static< / span > < span class = "p" > :< / span >
< / span > < span id = "line-236" > < span class = "linenos" > 236< / span > < span class = "w" > < / span > < span class = "nt" > environment< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > production< / span >
< / span > < span id = "line-237" > < span class = "linenos" > 237< / span > < span class = "w" > < / span > < span class = "nt" > service.team< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > platform< / span >
2024-10-06 23:55:03 +00:00
< / span > < / code > < / pre > < / div >
< / div >
< / div >
< / section >
< / div > < div class = "flex justify-between items-center pt-6 mt-12 border-t border-border gap-4" >
< div class = "mr-auto" >
2025-10-22 21:13:54 +00:00
< a class = "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors border border-input hover:bg-accent hover:text-accent-foreground py-2 px-4" href = "deployment.html" >
2024-10-06 23:55:03 +00:00
< svg class = "mr-2 h-4 w-4" fill = "none" height = "24" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" viewbox = "0 0 24 24" width = "24" xmlns = "http://www.w3.org/2000/svg" >
< polyline points = "15 18 9 12 15 6" > < / polyline >
< / svg >
2025-10-22 21:13:54 +00:00
Deployment
2024-10-06 23:55:03 +00:00
< / a >
< / div >
2025-12-24 01:15:19 +00:00
< div class = "ml-auto" >
2026-02-25 03:18:07 +00:00
< a class = "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors border border-input hover:bg-accent hover:text-accent-foreground py-2 px-4" href = "cli_reference.html" >
CLI Reference
2025-12-24 01:15:19 +00:00
< svg class = "ml-2 h-4 w-4" fill = "none" height = "24" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" viewbox = "0 0 24 24" width = "24" xmlns = "http://www.w3.org/2000/svg" >
< polyline points = "9 18 15 12 9 6" > < / polyline >
< / svg >
< / a >
< / div >
2024-10-06 23:55:03 +00:00
< / div > < / div >
< / main >
< / div >
< / div > < footer class = "py-6 border-t border-border md:py-0" >
< div class = "container flex flex-col items-center justify-between gap-4 md:h-24 md:flex-row" >
< div class = "flex flex-col items-center gap-4 px-8 md:flex-row md:gap-2 md:px-0" >
2026-04-24 19:31:50 +00:00
< p class = "text-sm leading-loose text-center text-muted-foreground md:text-left" > © 2026, Katanemo Labs, a DigitalOcean Company Last updated: Apr 24, 2026. < / p >
2024-10-06 23:55:03 +00:00
< / div >
< / div >
< / footer >
< / div >
2026-04-24 21:28:10 +00:00
< script src = "../_static/documentation_options.js?v=093e4e83" > < / script >
2024-10-24 21:12:20 +00:00
< script src = "../_static/doctools.js?v=9bcbadda" > < / script >
2024-10-06 23:55:03 +00:00
< script src = "../_static/sphinx_highlight.js?v=dc90522c" > < / script >
2026-04-16 20:17:24 +00:00
< script defer = "defer" src = "../_static/theme.js?v=d6a9845b" > < / script >
2024-10-06 23:55:03 +00:00
< script src = "../_static/design-tabs.js?v=f930bc37" > < / script >
2026-02-27 21:12:00 +00:00
< script src = "../_static/js/fix-copy.js?v=2f5cab98" > < / script >
2024-10-06 23:55:03 +00:00
< / body >
< / html >