- 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
117 lines
32 KiB
HTML
117 lines
32 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="ltr"><head><title>Steel Browser vs Camoufox</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="Steel Browser vs Camoufox"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Steel Browser vs Camoufox"/><meta name="twitter:description" content="Steel Browser vs Camoufox Purpose Compare the two browser-automation backends available to Hermes, including the Jul 29–30 experiment and the decision to revert."/><meta property="og:description" content="Steel Browser vs Camoufox Purpose Compare the two browser-automation backends available to Hermes, including the Jul 29–30 experiment and the decision to revert."/><meta property="og:image:alt" content="Steel Browser vs Camoufox Purpose Compare the two browser-automation backends available to Hermes, including the Jul 29–30 experiment and the decision to revert."/><meta property="twitter:domain" content="http://100.118.5.51:9120"/><meta property="og:url" content="https://http//100.118.5.51:9120/comparisons/steel-vs-camoufox"/><meta property="twitter:url" content="https://http//100.118.5.51:9120/comparisons/steel-vs-camoufox"/><link rel="icon" href="../static/icon.png"/><meta name="description" content="Steel Browser vs Camoufox Purpose Compare the two browser-automation backends available to Hermes, including the Jul 29–30 experiment and the decision to revert."/><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/comparisons/steel-vs-camoufox-og-image.webp"/><meta property="og:image:url" content="https://http://100.118.5.51:9120/comparisons/steel-vs-camoufox-og-image.webp"/><meta name="twitter:image" content="https://http://100.118.5.51:9120/comparisons/steel-vs-camoufox-og-image.webp"/><meta property="og:image:type" content="image/webp"/></head><body data-slug="comparisons/steel-vs-camoufox" 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-12" 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-12" 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="../comparisons/">comparisons</a><p> ❯ </p></div><div class="breadcrumb-element"><a href>Steel Browser vs Camoufox</a></div></nav><h1 class="article-title">Steel Browser vs Camoufox</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/comparison" class="internal internal-link tag-link">comparison</a><span class="note-properties-separator">, </span><a href="../tags/browser" class="internal internal-link tag-link">browser</a><span class="note-properties-separator">, </span><a href="../tags/steel" class="internal internal-link tag-link">steel</a><span class="note-properties-separator">, </span><a href="../tags/camofox" class="internal internal-link tag-link">camofox</a><span class="note-properties-separator">, </span><a href="../tags/decision" class="internal internal-link tag-link">decision</a></span></td></tr></tbody></table></details><p show-comma="true" class="content-meta"><time datetime="2026-08-01T16:00:00.000Z">Aug 02, 2026</time><span>3 min read</span></p></div></div><article class="popover-hint"><div class="markdown-preview-view markdown-rendered"><h1 id="steel-browser-vs-camoufox">Steel Browser vs Camoufox<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#steel-browser-vs-camoufox" 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>Compare the two browser-automation backends available to Hermes, including the Jul 29–30 experiment and the decision to revert.</p>
|
||
<h2 id="at-a-glance">At a glance<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#at-a-glance" 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>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="table-container"><table><thead><tr><th></th><th>Steel Browser (CT201)</th><th>Camoufox (CT450)</th></tr></thead><tbody><tr><td><strong>In use</strong></td><td>Disabled since 2026-07-30</td><td><strong>Yes</strong> — primary backend</td></tr><tr><td><strong>Engine</strong></td><td>Chromium 140 (Playwright)</td><td>Camoufox (Firefox-based)</td></tr><tr><td><strong>Connection</strong></td><td>CDP (<code>ws://</code> via port 9223)</td><td>REST API (localhost:9093)</td></tr><tr><td><strong>API</strong></td><td>REST at <code>:3000</code> — create/destroy/query sessions</td><td>Camoufox REST + CDP WebSocket</td></tr><tr><td><strong>Headless</strong></td><td>Native headless</td><td>Xvfb + VNC (headed, anti-fingerprint)</td></tr><tr><td><strong>Container</strong></td><td>Docker on CT201</td><td>Systemd service on CT450</td></tr><tr><td><strong>Stealth</strong></td><td>Standard Chromium</td><td>Anti-detection fingerprinting</td></tr><tr><td><strong>Session viewer</strong></td><td>Built-in UI at <code>/steel</code></td><td>VNC at <code>/vnc-camofox</code></td></tr><tr><td><strong>Plugin</strong></td><td><code>browser-steel</code> plugin (disabled)</td><td>Native Hermes <code>browser.cloud_provider: camofox</code></td></tr></tbody></table></div>
|
||
<h2 id="the-steel-experiment-jul-2930">The Steel Experiment (Jul 29–30)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#the-steel-experiment-jul-2930" 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>
|
||
<h3 id="why-it-was-tried">Why it was tried<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#why-it-was-tried" 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></h3>
|
||
<ul>
|
||
<li>Steel promised full CDP access for richer browser control</li>
|
||
<li>Built-in session viewer and management UI</li>
|
||
<li>Docker-based, clean separation from Hermes host</li>
|
||
</ul>
|
||
<h3 id="timeline">Timeline<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#timeline" 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></h3>
|
||
<ol>
|
||
<li><strong>Jul 29:</strong> Steel deployed on CT201 via Docker Compose, Chromium 140. Hermes configured with <code>browser.cloud_provider: steel</code>, <code>browser-steel</code> plugin enabled.</li>
|
||
<li><strong>Jul 29 (later):</strong> CDP connectivity issues surfaced — Hermes was reaching <code>0.0.0.0</code> from the plugin’s internal CDP URL. Required <code>_normalize_cdp_url()</code> patch in the Steel plugin to remap to <code>100.96.244.39</code>.</li>
|
||
<li><strong>Jul 30:</strong> DeepSeek V4 Flash 0731 went live and rejected tool names that didn’t match <code>^[a-zA-Z0-9_-]+$</code>. The Steel plugin’s tools (<code>steel_scrape</code>, <code>steel_session_options</code>) were fine, but the route through OmniRoute → Steel → CDP was unreliable with empty-stream errors.</li>
|
||
<li><strong>Jul 30 (evening):</strong> Decision to revert — Camoufox re-enabled, browser-steel plugin disabled, <code>CAMOFOX_URL</code> and <code>CAMOFOX_API_KEY</code> uncommented in <code>.env</code>. Steel left running on CT201 but Hermes no longer routes through it.</li>
|
||
</ol>
|
||
<h3 id="what-broke">What broke<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#what-broke" 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></h3>
|
||
<ul>
|
||
<li>CDP URL normalization required a plugin patch to handle Docker’s internal networking</li>
|
||
<li>Empty-stream errors from <code>opencode-go/deepseek-v4-flash</code> provider path — the combo strategy does NOT iterate on empty responses, they pass to Hermes’s own fallback chain (the #1 cause of “combo works but Hermes falls back”)</li>
|
||
<li>Tool name validation on DeepSeek 0731 was stricter — this affected all providers, not just Steel</li>
|
||
</ul>
|
||
<h3 id="lesson-learned">Lesson learned<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#lesson-learned" 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></h3>
|
||
<p>Steel is a capable backend but adds a network hop and another plugin layer. Camoufox runs locally on CT450 with fewer failure modes. The <code>browser-steel</code> plugin still exists (disabled) if needed in future.</p>
|
||
<h2 id="detail">Detail<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#detail" 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>
|
||
<h3 id="camoufox-current-primary">Camoufox (current primary)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#camoufox-current-primary" 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></h3>
|
||
<ul>
|
||
<li><strong>Deployed:</strong> Persistent systemd service on CT450</li>
|
||
<li><strong>Connection:</strong> REST API at <code>localhost:9093</code>, profile <code>anthony</code>, sessionKey <code>anthony</code></li>
|
||
<li><strong>Key advantage:</strong> Runs on the same host as Hermes — no network hop, no container networking to debug</li>
|
||
<li><strong>Auth:</strong> Already authenticated into services (Uber Eats, LinkedIn, etc.) — no cookie files needed</li>
|
||
<li><strong>Limitation:</strong> Headed via Xvfb, consumes display resources</li>
|
||
</ul>
|
||
<h3 id="steel-browser-disabled-but-available">Steel Browser (disabled but available)<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#steel-browser-disabled-but-available" 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></h3>
|
||
<ul>
|
||
<li><strong>Deployed:</strong> 2026-07-29 on CT201, Docker, custom <code>steel-browser-api:fixed</code> image</li>
|
||
<li><strong>Status:</strong> Still running on CT201, Hermes not connected</li>
|
||
<li><strong>CDP endpoint:</strong> <code>http://100.96.244.39:9223</code></li>
|
||
<li><strong>REST API:</strong> <code>http://100.96.244.39:3000</code></li>
|
||
<li><strong>UI:</strong> <code>https://runtipi.kangaroo-eel.ts.net/steel</code></li>
|
||
<li><strong>Plugin:</strong> <code>browser-steel</code> at <code>/home/hermes/.hermes/plugins/browser-steel/</code> — disabled, <code>plugin_steel</code> toolset flagged <code>requires_health=steel</code></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/browser-backend" class="internal internal-link" data-slug="systems/browser-backend">browser-backend</a></li>
|
||
<li><a href="../concepts/browser-automation" class="internal internal-link" data-slug="concepts/browser-automation">browser-automation</a></li>
|
||
<li><a href="../decisions/rollback-steel-to-camofox" class="internal internal-link" data-slug="decisions/rollback-steel-to-camofox">rollback-steel-to-camofox</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-11" 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="#steel-browser-vs-camoufox" data-for="steel-browser-vs-camoufox">Steel Browser vs Camoufox</a></li><li class="depth-1"><a href="#purpose" data-for="purpose">Purpose</a></li><li class="depth-1"><a href="#at-a-glance" data-for="at-a-glance">At a glance</a></li><li class="depth-1"><a href="#the-steel-experiment-jul-2930" data-for="the-steel-experiment-jul-2930">The Steel Experiment (Jul 29–30)</a></li><li class="depth-2"><a href="#why-it-was-tried" data-for="why-it-was-tried">Why it was tried</a></li><li class="depth-2"><a href="#timeline" data-for="timeline">Timeline</a></li><li class="depth-2"><a href="#what-broke" data-for="what-broke">What broke</a></li><li class="depth-2"><a href="#lesson-learned" data-for="lesson-learned">Lesson learned</a></li><li class="depth-1"><a href="#detail" data-for="detail">Detail</a></li><li class="depth-2"><a href="#camoufox-current-primary" data-for="camoufox-current-primary">Camoufox (current primary)</a></li><li class="depth-2"><a href="#steel-browser-disabled-but-available" data-for="steel-browser-disabled-but-available">Steel Browser (disabled but available)</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="../concepts/browser-automation" class="internal">Browser Automation</a></li><li><a href="../current-state" class="internal">Current State</a></li><li><a href="../decisions/rollback-steel-to-camofox" class="internal">Rollback Steel to Camoufox</a></li><li><a href="../log" class="internal">log</a></li><li><a href="../systems/browser-backend" class="internal">Browser Backend</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> |