- Add serve.py to resolve clean Quartz URLs to .html files - Regenerate Quartz site with correct baseUrl http://100.118.5.51:9120 - 196 HTML files emitted; all internal links now resolve
110 lines
39 KiB
HTML
110 lines
39 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="ltr"><head><title>OmniRoute</title><meta charset="utf-8"/><link rel="preload" href="../index-bb6c1746.css" as="style"/><link rel="preload" href="../prescript-2bfc6315.js" as="script"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="Agent Estate Wiki"/><meta property="og:title" content="OmniRoute"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OmniRoute"/><meta name="twitter:description" content="OmniRoute Purpose Secondary provider/router for Hermes auxiliary roles and some agent routing."/><meta property="og:description" content="OmniRoute Purpose Secondary provider/router for Hermes auxiliary roles and some agent routing."/><meta property="og:image:alt" content="OmniRoute Purpose Secondary provider/router for Hermes auxiliary roles and some agent routing."/><meta property="twitter:domain" content="http://100.118.5.51:9120"/><meta property="og:url" content="https://http//100.118.5.51:9120/systems/omniroute"/><meta property="twitter:url" content="https://http//100.118.5.51:9120/systems/omniroute"/><link rel="icon" href="../static/icon.png"/><meta name="description" content="OmniRoute Purpose Secondary provider/router for Hermes auxiliary roles and some agent routing."/><meta name="generator" content="Quartz"/><link href="../index-bb6c1746.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-735924e0.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-589c1cea.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-bbc3f7c0.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-2911f5d1.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-e427079e.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-53b25b2b.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-c93c6a44.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-8a06014f.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-77d6a441.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-6ee21cee.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-1ea6ad18.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-34bdfded.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-788c9ca3.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-642859cd.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-4abc06bd.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-274a3dfe.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-94cb6c84.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-58d5ff56.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../component-7262b5a7.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../static/resource-style-a5c806d2.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../static/resource-style-6bd36952.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../static/resource-style-9857b007.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="../static/resource-style-d3a1a224.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" rel="stylesheet" type="text/css" data-persist="true"/><script src="../prescript-2bfc6315.js" type="application/javascript" data-persist="true"></script><script type="application/javascript" data-persist="true">const fetchData = fetch("../static/contentIndex.json").then(data => data.json())</script><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted%20Grotesk%3Awght%40400%3B700&family=Source%20Sans%20Pro%3Aital%2Cwght%400%2C400%3B0%2C600%3B1%2C400%3B1%2C600&family=IBM%20Plex%20Mono%3Awght%40400%3B600&display=swap"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image" content="https://http://100.118.5.51:9120/systems/omniroute-og-image.webp"/><meta property="og:image:url" content="https://http://100.118.5.51:9120/systems/omniroute-og-image.webp"/><meta name="twitter:image" content="https://http://100.118.5.51:9120/systems/omniroute-og-image.webp"/><meta property="og:image:type" content="image/webp"/></head><body data-slug="systems/omniroute" data-basepath="//100.118.5.51:9120"><div id="quartz-root" class="page" data-frame="default"><div id="quartz-body"><div class="left sidebar"><h2 class="page-title"><a href="..">Agent Estate Wiki</a></h2><div class="mobile-only"><div class="spacer"></div></div><div class="flex-component" style="flex-direction: row; flex-wrap: nowrap; gap: 0.5rem;"><div style="flex-grow: 1; flex-shrink: 1; flex-basis: auto; order: 0; align-self: center; justify-self: center;"><div class="search"><button class="search-button" aria-label="Search" aria-expanded="false"><svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title>Search</title><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg><p>Search</p></button><div class="search-container"><div class="search-space"><input autocomplete="off" class="search-bar" name="search" type="text" aria-label="Search for something..." placeholder="Search for something..."/><div class="search-layout" data-preview="true" data-field-priority="["title","content","tags"]"></div></div></div></div></div><div style="flex-grow: 0; flex-shrink: 1; flex-basis: auto; order: 0; align-self: center; justify-self: center;"><button class="darkmode" aria-label="Dark mode"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35" xml:space="preserve" aria-label="Dark mode"><title>Dark mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100" xml:space="preserve" aria-label="Light mode"><title>Light mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.65,22.008-14.65,35.369 c0,13.36,5.203,25.921,14.65,35.368s22.008,14.65,35.368,14.65c13.361,0,25.921-5.203,35.369-14.65 c3.872-3.871,7.064-8.328,9.491-13.246C97.826,68.608,97.611,67.309,96.76,66.458z"></path></svg></button></div><div style="flex-grow: 0; flex-shrink: 1; flex-basis: auto; order: 0; align-self: center; justify-self: center;"><button class="readermode" aria-label="Reader mode"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="readerIcon" fill="currentColor" stroke="currentColor" stroke-width="0.2" stroke-linecap="round" stroke-linejoin="round" width="64px" height="64px" viewBox="0 0 24 24" aria-label="Reader mode"><title>Reader mode</title><g transform="translate(-1.8, -1.8) scale(1.15, 1.2)"><path d="M8.9891247,2.5 C10.1384702,2.5 11.2209868,2.96705384 12.0049645,3.76669482 C12.7883914,2.96705384 13.8709081,2.5 15.0202536,2.5 L18.7549359,2.5 C19.1691495,2.5 19.5049359,2.83578644 19.5049359,3.25 L19.5046891,4.004 L21.2546891,4.00457396 C21.6343849,4.00457396 21.9481801,4.28672784 21.9978425,4.6528034 L22.0046891,4.75457396 L22.0046891,20.25 C22.0046891,20.6296958 21.7225353,20.943491 21.3564597,20.9931534 L21.2546891,21 L2.75468914,21 C2.37499337,21 2.06119817,20.7178461 2.01153575,20.3517706 L2.00468914,20.25 L2.00468914,4.75457396 C2.00468914,4.37487819 2.28684302,4.061083 2.65291858,4.01142057 L2.75468914,4.00457396 L4.50368914,4.004 L4.50444233,3.25 C4.50444233,2.87030423 4.78659621,2.55650904 5.15267177,2.50684662 L5.25444233,2.5 L8.9891247,2.5 Z M4.50368914,5.504 L3.50468914,5.504 L3.50468914,19.5 L10.9478955,19.4998273 C10.4513189,18.9207296 9.73864328,18.5588115 8.96709342,18.5065584 L8.77307039,18.5 L5.25444233,18.5 C4.87474657,18.5 4.56095137,18.2178461 4.51128895,17.8517706 L4.50444233,17.75 L4.50368914,5.504 Z M19.5049359,17.75 C19.5049359,18.1642136 19.1691495,18.5 18.7549359,18.5 L15.2363079,18.5 C14.3910149,18.5 13.5994408,18.8724714 13.0614828,19.4998273 L20.5046891,19.5 L20.5046891,5.504 L19.5046891,5.504 L19.5049359,17.75 Z M18.0059359,3.999 L15.0202536,4 L14.8259077,4.00692283 C13.9889509,4.06666544 13.2254227,4.50975805 12.7549359,5.212 L12.7549359,17.777 L12.7782651,17.7601316 C13.4923805,17.2719483 14.3447024,17 15.2363079,17 L18.0059359,16.999 L18.0056891,4.798 L18.0033792,4.75457396 L18.0056891,4.71 L18.0059359,3.999 Z M8.9891247,4 L6.00368914,3.999 L6.00599909,4.75457396 L6.00599909,4.75457396 L6.00368914,4.783 L6.00368914,16.999 L8.77307039,17 C9.57551536,17 10.3461406,17.2202781 11.0128313,17.6202194 L11.2536891,17.776 L11.2536891,5.211 C10.8200889,4.56369974 10.1361548,4.13636104 9.37521067,4.02745763 L9.18347055,4.00692283 L8.9891247,4 Z"></path></g></svg></button></div></div><div class="explorer nav-files-container" data-behavior="link" data-collapsed="collapsed" data-savestate="true" data-data-fns="{"order":["filter","map","sort"],"sortFn":"(a2, b2) => {\n if (!a2.isFolder && !b2.isFolder || a2.isFolder && b2.isFolder) {\n return (a2.displayName || \"\").localeCompare(b2.displayName || \"\", void 0, {\n numeric: true,\n sensitivity: \"base\"\n });\n }\n if (!a2.isFolder && b2.isFolder) {\n return 1;\n }\n return -1;\n }","filterFn":"(node) => node.slugSegment !== \"tags\"","mapFn":"(node) => {\n return node;\n }"}"><button type="button" class="explorer-toggle mobile-explorer hide-until-loaded" data-mobile="true" aria-controls="explorer-69" aria-label="Explorer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide-menu"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button><button type="button" class="title-button explorer-toggle desktop-explorer" data-mobile="false" aria-expanded="true"><h2>Explorer</h2><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="5 8 14 8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="explorer-69" class="explorer-content" aria-expanded="false" role="group"><ul class="explorer-ul overflow" id="list-0"><li class="overflow-end"></li></ul></div><template id="template-file"><li><a href="#" class="nav-file-title tree-item-self"></a></li></template><template id="template-folder"><li><div class="folder-container nav-folder-title tree-item-self"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="5 8 14 8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="folder-icon nav-folder-collapse-indicator collapse-icon"><polyline points="6 9 12 15 18 9"></polyline></svg><div><button class="folder-button"><span class="folder-title"></span></button></div></div><div class="folder-outer"><ul class="content tree-item-children"></ul></div></li></template></div></div><div class="center"><div class="page-header"><div class="popover-hint"><nav class="breadcrumb-container" aria-label="breadcrumbs"><div class="breadcrumb-element"><a href="../">Home</a><p> ❯ </p></div><div class="breadcrumb-element"><a href="../systems/">systems</a><p> ❯ </p></div><div class="breadcrumb-element"><a href>OmniRoute</a></div></nav><h1 class="article-title">OmniRoute</h1><details class="note-properties metadata-container" open data-collapsed="false"><summary class="note-properties-header"><span class="note-properties-title">Properties</span><span class="note-properties-count">1</span></summary><table class="note-properties-table"><tbody><tr class="note-properties-row metadata-property"><td class="note-properties-key metadata-property-key">tags</td><td class="note-properties-value metadata-property-value"><span class="note-properties-tags"><a href="../tags/routing" class="internal internal-link tag-link">routing</a><span class="note-properties-separator">, </span><a href="../tags/provider" class="internal internal-link tag-link">provider</a><span class="note-properties-separator">, </span><a href="../tags/model" class="internal internal-link tag-link">model</a><span class="note-properties-separator">, </span><a href="../tags/inference" class="internal internal-link tag-link">inference</a></span></td></tr></tbody></table></details><p show-comma="true" class="content-meta"><time datetime="2026-08-13T16:00:00.000Z">Aug 14, 2026</time><span>5 min read</span></p></div></div><article class="popover-hint"><div class="markdown-preview-view markdown-rendered"><h1 id="omniroute">OmniRoute<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#omniroute" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h1>
|
||
<h2 id="purpose">Purpose<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#purpose" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<p>Secondary provider/router for Hermes auxiliary roles and some agent routing.</p>
|
||
<h2 id="current-configuration">Current Configuration<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#current-configuration" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><strong>Hermes provider name:</strong> <code>custom:omni</code></li>
|
||
<li><strong>Base URL:</strong> <code>http://omni:20128/v1</code></li>
|
||
<li><strong>Host reachability:</strong> <code>omni.kangaroo-eel.ts.net</code> resolves to <code>100.93.204.4</code>; CT601 running, direct HTTP reachable</li>
|
||
<li><strong>Runs on:</strong> Proxmox CT601 (<code>omni</code>) — migrated from CT600 (<code>omniroute</code>, now stopped) on 2026-08-13</li>
|
||
<li><strong>DB path:</strong> <code>/opt/omniroute/storage.sqlite</code> (was <code>/var/lib/omniroute/storage.sqlite</code>)</li>
|
||
<li><strong>Backup:</strong> pre-migration config saved at <code>~/.hermes/config.yaml.bak.omniroute-removal</code></li>
|
||
<li><strong>Miss:</strong> Hermes default provider path does not use OmniRoute for main chat; used for auxiliary roles instead</li>
|
||
<li><strong>Auxiliary roles in Hermes config:</strong> <code>skills_hub</code>, <code>approval</code>, <code>mcp</code></li>
|
||
<li><strong>Key prefix visible in config:</strong> <code>sk-5c67fbdc0...</code> — full value not stored in wiki</li>
|
||
</ul>
|
||
<h2 id="catalog-and-routing-facts">Catalog and Routing Facts<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#catalog-and-routing-facts" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li>Catalog reachable: yes, 47 combos returned at <code>/api/combos</code></li>
|
||
<li>Combo schema observed: <code>name</code>, <code>strategy</code>, <code>models</code>, <code>id</code>; some combos have <code>config</code>, <code>isHidden</code>, <code>uuid</code></li>
|
||
<li>Combo-level context can override individual models</li>
|
||
<li><code>auto</code>/<code>lkgp</code> strategies may silently change chosen models</li>
|
||
<li>Model mappings can substitute models silently</li>
|
||
<li>Session affinity caches last successful provider in <code>session_model_history</code></li>
|
||
</ul>
|
||
<h2 id="catalog-evidence-2026-07-22">Catalog Evidence (2026-07-22)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#catalog-evidence-2026-07-22" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li>Advertised context for <code>gemini/gemini-3.6-flash</code>: <code>1048576</code></li>
|
||
<li>Related models in catalog: <code>kc/google/gemini-3.6-flash</code>, <code>kilocode/google/gemini-3.6-flash</code>, <code>nous/google/gemini-3.6-flash</code>, <code>opencode-zen/gemini-3.6-flash</code>, <code>vertex/gemini-3.6-flash</code></li>
|
||
<li>No live combo in the returned 47 combos referenced <code>gemini-3.6-flash</code></li>
|
||
</ul>
|
||
<h2 id="known-issues">Known Issues<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#known-issues" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li>opencode-zen proxy pitfall documented in omniroute-ops skill</li>
|
||
<li>Web search proxy failures documented in omniroute-ops skill</li>
|
||
<li>Combo discovery can differ from resolution;</li>
|
||
</ul>
|
||
<h2 id="autoroute-variants-2026-08-12">AutoRoute variants (2026-08-12)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#autoroute-variants-2026-08-12" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><code>auto/best-free</code> (Auto Cheap) and <code>auto/coding-free</code> are <strong>virtual</strong> AutoRoute variants — they do NOT appear in the persisted combo list (<code>/api/combos</code> returns 54 combos, none named these).</li>
|
||
<li>The LKGP engine resolves them dynamically: it scores the operator’s <strong>live connected provider accounts</strong> (e.g. <code>antigravity</code>, <code>opencode-zen</code>, <code>nvidia</code>, <code>openrouter</code>) rather than a hardcoded candidate list.</li>
|
||
<li>Scoring signals: health, quota/token-reset windows, latency, consecutive errors, and cost-inverse across all connected accounts; failover to next-best on throttle/error without dropping the request.</li>
|
||
<li>Example observed: an <code>auto/best-free</code> request routed to Antigravity (Google AI Plus) because that account was active, healthy, zero-cost, and highest priority — proving live dynamic scoring, not a static map.</li>
|
||
</ul>
|
||
<h2 id="recent-changes-2026-08-14">Recent Changes (2026-08-14)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#recent-changes-2026-08-14" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><strong>OmniRoute factory reset on CT601.</strong> Database wiped clean: 0 combos, 0 providers, 0 API keys, 115 built-in auto model entries (<code>auto/best-fast</code>, <code>auto/best-coding</code>, etc.). Old state backed up at <code>/opt/omniroute/factory-reset-backup-20260814-225524</code>.</li>
|
||
<li><strong>Providers re-added from Notion API vault:</strong> Anthropic, Google Gemini, Groq, Mistral, OpenRouter — all five passed live provider tests. OpenAI keys in the vault were tested but none worked; removed the invalid OpenAI entry.</li>
|
||
<li><strong>Hermes config default model changed:</strong> <code>auto/best-free</code> → <code>resilient-free</code> (via <code>~/.hermes/config.yaml</code>). <code>auto/best-free</code> was misconfigured — had no combo definition and routed to <code>gpt-5.6-sol</code> (paid) instead of free models. Switched to <code>resilient-free</code> which is a working free combo.</li>
|
||
<li><strong>Multiple free combos broken by upstream model ID changes:</strong>
|
||
<ul>
|
||
<li>OpenRouter: <code>poolside/laguna-s-2-1:free</code> (dash) → <code>poolside/laguna-s-2.1:free</code> (dot) — model ID format changed</li>
|
||
<li>Groq: <code>meta-llama/llama-4-scout-17b-16e-instruct</code> — <strong>retired</strong>, only llama-3.3/3.1 remain</li>
|
||
<li>Affected combos: <code>resilient-free</code>, <code>free-IA</code>, <code>free-stack</code>, <code>good-free</code>, <code>deepseek-flash-free</code>, <code>mimo-free</code></li>
|
||
<li>All route through OpenRouter → fail with 400/404 when trying these model IDs</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Working free combos as of 2026-08-14:</strong> <code>free-lkgp</code> (DeepSeek V4 Flash), <code>mega-free</code> (StepFun 3.7 Flash), <code>smart-route</code> / <code>smart-route-ia</code> (nested combos)</li>
|
||
<li><strong>LiteLLM routing issue identified:</strong> Hermes was previously pointing at <code>http://litellm:4000/v1</code> with <code>free-auto</code> model, causing 6–26s per call. OmniRoute’s <code>auto/best-free</code> tested at 265ms. Config now points at OmniRoute.</li>
|
||
<li><strong>GPT-5.6 Luna research:</strong> Community consensus — Luna is cleaner/more polished; DeepSeek V4 Flash is more persistent/cheaper. Luna better for visual/UI work and final review; DeepSeek better for automation and high-volume executor work. Provider route matters more than model name.</li>
|
||
</ul>
|
||
<h2 id="recent-changes-2026-08-13">Recent Changes (2026-08-13)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#recent-changes-2026-08-13" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><strong>OmniRoute migrated CT600 → CT601.</strong> Provider renamed <code>custom:omniroute</code> → <code>custom:omni</code>; base URL <code>http://omniroute:20128/v1</code> → <code>http://omni:20128/v1</code>. Host <code>omni.kangaroo-eel.ts.net</code> (100.93.204.4, active) replaces <code>omniroute.kangaroo-eel.ts.net</code> (100.88.81.19, offline). CT600 stopped, CT601 running. Database path <code>/var/lib/omniroute/storage.sqlite</code> → <code>/opt/omniroute/storage.sqlite</code>. API key unchanged. All 14 config + 22 cron-job <code>custom:omniroute</code> references updated to <code>custom:omni</code>. Pre-migration backup at <code>~/.hermes/config.yaml.bak.omniroute-removal</code>. Verified live 2026-08-13 (<code>pct list</code>: 600 stopped, 601 running; <code>grep</code>: 0 remaining <code>custom:omniroute</code> refs).</li>
|
||
</ul>
|
||
<h2 id="recent-changes-2026-07-25">Recent Changes (2026-07-25)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#recent-changes-2026-07-25" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><strong>free-stack combo updated:</strong> Nemotron 3 Ultra 550B model at index 4 now configured with NVIDIA-specific parameters:
|
||
<ul>
|
||
<li><code>max_tokens</code>: 8192 (was default 65536, exceeding NVIDIA NIM limit of 16384)</li>
|
||
<li><code>reasoning_effort</code>: medium (was high, reducing long internal monologues)</li>
|
||
<li><code>chat_template_kwargs.force_nonempty_content</code>: true (prevents empty responses when tool calling + reasoning)</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Combo ID:</strong> <code>23d25f8f-5eb0-4b6f-b966-e260ca3905b3</code></li>
|
||
<li><strong>Hermes config.yaml updated:</strong> <code>agent.reasoning_effort: medium</code>, <code>agent.max_tokens: 8192</code>, <code>agent.chat_template_kwargs.force_nonempty_content: true</code></li>
|
||
<li><strong>Rationale:</strong> NVIDIA NIM API documents max output of 16384 tokens; medium reasoning uses more efficient chat-template mode; force_nonempty_content resolves empty responses with tool calls combo in picker may still route</li>
|
||
</ul>
|
||
<h2 id="recent-changes-2026-08-07">Recent Changes (2026-08-07)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#recent-changes-2026-08-07" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><strong>Three-layer root cause for slowness identified and fixed:</strong>
|
||
<ol>
|
||
<li><strong>npm package .env override:</strong> OmniRoute loads three .env files (<code>/var/lib/omniroute/.env</code>, <code>/root/.omniroute/.env</code>, <code>/usr/lib/node_modules/omniroute/.env</code>). The npm package’s <code>.env</code> ships with <code>ENABLE_SOCKS5_PROXY=true</code> and <code>npm update</code> re-installs it with that default, silently overriding the <code>/var/lib</code> config. Fix: flip all three to <code>false</code>, then restart. After ANY upgrade, check all three.</li>
|
||
<li><strong>Dead provider connection:</strong> Connection <code>58debd59</code> (prefix <code>nanobot</code>) points at <code>clawtest:8900/v1</code> — nanobot on clawtest is DOWN. Every model sync + credential health check retried it, burning event-loop time. Disabled it.</li>
|
||
<li><strong>PVE host load leaking into CT600:</strong> CT600 has <code>nesting=1</code>, so <code>uptime</code>/<code>top</code> inside the container mirror PVE’s host load exactly (verified: identical 10.30/9.23/10.37 on both). Same trap as CT241. Judge CT600 CPU from <code>pct exec 600 -- ps -o %cpu</code> or host-side <code>ps</code>, never from in-container load average.</li>
|
||
</ol>
|
||
</li>
|
||
<li><strong>First-request-after-cache-expiry stall:</strong> <code>/v1/models</code> hangs 10-15s+ on the FIRST hit after the model catalog cache expires (rebuild enumerates all connections, including slow dead ones), then answers in ~0.02s from cache. Don’t judge health on one curl — run a burst of 5 and check if later tries are sub-second.</li>
|
||
<li><strong><code>is_active=0</code> does NOT stop CredentialHealth probes:</strong> Disabling a dead connection stops it from ModelSync but the health checker still probes it and logs <code>[ProxyFetch] ECONNREFUSED</code> noise. That noise is benign once the endpoint is unreachable.</li>
|
||
<li><strong>Lessons banked in <code>omniroute-ops</code> skill:</strong> <code>references/omniroute-upgrade-procedure.md</code> updated with all three pitfalls.</li>
|
||
</ul>
|
||
<h2 id="recent-changes-2026-08-04">Recent Changes (2026-08-04)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#recent-changes-2026-08-04" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><strong>OmniRoute free-DeepSeek silent-stop mitigation:</strong> Free-DeepSeek upstreams returning empty-after-tool responses since Aug 1 → silent turn stops on <code>deepseek-flash-free</code> and <code>smart-route</code>/<code>good-free</code> across both instances. Reworked both combos: strategy <code>priority</code> → <code>fill-first</code>, dropped proven culprits (<code>238d5978/deepseek-v4-flash</code> + <code>-0731</code>, <code>nvidia</code> deepseek), healthy free models promoted, deepseek demoted to last resort. See <a href="../incidents/2026-08-04-omniroute-free-deepseek-silent-stops" class="internal internal-link" data-slug="incidents/2026-08-04-omniroute-free-deepseek-silent-stops">2026-08-04-omniroute-free-deepseek-silent-stops</a>.</li>
|
||
</ul>
|
||
<h2 id="related">Related<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#related" class="internal internal-link"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h2>
|
||
<ul>
|
||
<li><a href="../systems/model-providers" class="internal internal-link" data-slug="systems/model-providers">model-providers</a></li>
|
||
<li><a href="../concepts/model-routing" class="internal internal-link" data-slug="concepts/model-routing">model-routing</a></li>
|
||
</ul></div></article><hr/><div class="page-footer"></div></div><div class="right sidebar"><div class="graph"><h3>Graph View</h3><div class="graph-outer"><div class="graph-container" data-cfg="{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[],"focusOnHover":false,"enableRadial":false}"></div><button class="global-graph-icon" aria-label="Global Graph"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xml:space="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
|
||
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
|
||
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
|
||
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
|
||
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
|
||
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
|
||
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
|
||
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
|
||
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
|
||
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
|
||
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></button></div><div class="global-graph-outer"><div class="global-graph-container" data-cfg="{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.2,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[],"focusOnHover":true,"enableRadial":true}"></div></div></div><div class="toc"><button type="button" class="toc-header" aria-controls="toc-64" aria-expanded="true"><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><ul id="list-0" class="toc-content overflow"><li class="depth-0"><a href="#omniroute" data-for="omniroute">OmniRoute</a></li><li class="depth-1"><a href="#purpose" data-for="purpose">Purpose</a></li><li class="depth-1"><a href="#current-configuration" data-for="current-configuration">Current Configuration</a></li><li class="depth-1"><a href="#catalog-and-routing-facts" data-for="catalog-and-routing-facts">Catalog and Routing Facts</a></li><li class="depth-1"><a href="#catalog-evidence-2026-07-22" data-for="catalog-evidence-2026-07-22">Catalog Evidence (2026-07-22)</a></li><li class="depth-1"><a href="#known-issues" data-for="known-issues">Known Issues</a></li><li class="depth-1"><a href="#autoroute-variants-2026-08-12" data-for="autoroute-variants-2026-08-12">AutoRoute variants (2026-08-12)</a></li><li class="depth-1"><a href="#recent-changes-2026-08-14" data-for="recent-changes-2026-08-14">Recent Changes (2026-08-14)</a></li><li class="depth-1"><a href="#recent-changes-2026-08-13" data-for="recent-changes-2026-08-13">Recent Changes (2026-08-13)</a></li><li class="depth-1"><a href="#recent-changes-2026-07-25" data-for="recent-changes-2026-07-25">Recent Changes (2026-07-25)</a></li><li class="depth-1"><a href="#recent-changes-2026-08-07" data-for="recent-changes-2026-08-07">Recent Changes (2026-08-07)</a></li><li class="depth-1"><a href="#recent-changes-2026-08-04" data-for="recent-changes-2026-08-04">Recent Changes (2026-08-04)</a></li><li class="depth-1"><a href="#related" data-for="related">Related</a></li><li class="overflow-end"></li></ul></div><div class="backlinks"><h3>Backlinks</h3><ul id="list-0" class="overflow"><li><a href="../agents/" class="internal">Agent Estate</a></li><li><a href="../agents/qwenpaw" class="internal">QwenPaw</a></li><li><a href="../comparisons/model-routers" class="internal">Model Routers</a></li><li><a href="../concepts/model-routing" class="internal">Model Routing</a></li><li><a href="../current-state" class="internal">Current State</a></li><li><a href="../decisions/keep-openrouter-as-fallback" class="internal">Keep OpenRouter as fallback</a></li><li><a href="../incidents/2026-08-04-omniroute-free-deepseek-silent-stops" class="internal">2026-08-04-omniroute-free-deepseek-silent-stops</a></li><li><a href="../" class="internal">index</a></li><li><a href="../infrastructure/domains-and-tunnels" class="internal">Domains and Tunnels</a></li><li><a href="../log" class="internal">log</a></li><li><a href="../systems/hermes-agent" class="internal">Hermes Agent</a></li><li><a href="../systems/model-providers" class="internal">Model Providers</a></li><li><a href="../systems/openrouter" class="internal">OpenRouter</a></li><li class="overflow-end"></li></ul></div></div><footer class><p>Created with <a href="https://quartz.jzhao.xyz/">Quartz v5.0.0</a> © 2026</p><ul><li><a href="https://github.com/jackyzha0/quartz">GitHub</a></li><li><a href="https://discord.gg/cRFFHYye7t">Discord Community</a></li></ul></footer></div></div></body><script src="../static/resource-after-e13fffa1.js" type="application/javascript" data-persist="true"></script><script src="../static/resource-after-8b336f9a.js" type="application/javascript" data-persist="true"></script><script src="../static/resource-after-baba652b.js" type="application/javascript" data-persist="true"></script><script src="../static/resource-after-5eb75950.js" type="module" data-persist="true"></script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/copy-tex.min.js" type="application/javascript" data-persist="true"></script><script src="../postscript-3eea7814.js" type="module" data-persist="true"></script></html> |