1<!DOCTYPE html><html lang="en-US"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Railway's%20%24100M%20AI-Native%20Cloud%20vs%20a%20%2442%20Hetzner%20Box%3A%20A%20Worked%20Bill%20Recompute" fetchPriority="high"/><link rel="preload" as="image" href="/img/bex-co-logo.webp"/><link rel="stylesheet" href="/assets/index-CZJBUMFF.css" data-precedence="default"/>
vendor: 57 bytes, line 1
1<script src="https://www.googletagmanager.com/gtag/js?id=
1G-C0F27EWBRD
vendor: 20 bytes, line 1
1" async=""></script>
1<title>Blog | bex.co</title><meta property="og:site_name" content="bex.co"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="theme-color" content="#1a1f18" media="(prefers-color-scheme: dark)"/><meta name="keywords" content="open-source PaaS, deploy from Git, self-hosted PaaS, cloud for AI agents, AI agent infrastructure, MCP-native deployment, managed PostgreSQL, custom domains with automatic TLS, Heroku alternative, Render alternative, bex.co"/><meta property="og:image" content="https://bex.co/img/bex-co-social-preview.png"/><meta name="twitter:image" content="https://bex.co/img/bex-co-social-preview.png"/><meta property="og:url" content="https://bex.co/blog"/><meta name="description" content="The latest news, tutorials, and updates from bex.co â Web3 infrastructure, blockchain APIs, and crypto payment tools."/><meta property="og:title" content="Blog | bex.co"/><meta property="og:description" content="The latest news, tutorials, and updates from bex.co â Web3 infrastru
1cture, blockchain APIs, and crypto payment tools."/><link rel="modulepreload" href="/assets/index-C1toZImK.js"/><link rel="modulepreload" href="/assets/route-tqWSb7jd.js"/><link rel="modulepreload" href="/assets/index-Bt9fEFti.js"/><link rel="modulepreload" href="/assets/BlogListPage-CldwFze9.js"/><link rel="modulepreload" href="/assets/BlogPostItem-C0nUxQ-4.js"/><link rel="modulepreload" href="/assets/badge-ll0GW--z.js"/><link rel="modulepreload" href="/assets/calendar-C-AwTIH-.js"/><link rel="modulepreload" href="/assets/rss-b-7qu-BY.js"/><link rel="modulepreload" href="/assets/check-krdpyJwV.js"/><link rel="modulepreload" href="/assets/copy-BLaStDA8.js"/><link rel="modulepreload" href="/assets/book-open-B25J0aFv.js"/><link rel="icon" href="/img/favicon.webp"/><link rel="manifest" href="/manifest.webmanifest"/><link rel="apple-touch-icon" href="/img/apple-touch-icon.png"/><link rel="alternate" hrefLang="en-US" href="https://bex.co/blog"/><link rel="alternate" hrefLang="zh" href="https://bex.co/zh/blog"/><link rel="alternate" hrefLang="ko" href="https://bex.co/ko/blog"/><link rel="alternate" hrefLang="ja" href="https://bex.co/ja/blog"/><link rel="alternate" hrefLang="es" href="https://bex.co/es/blog"/><link rel="alternate" hrefLang="pt" href="https://bex.co/pt/blog"/><link rel="alternate" hrefLang="ru" href="https://bex.co/ru/blog"/><link rel="alternate" hrefLang="de" href="https://bex.co/de/blog"/><link rel="alternate" hrefLang="x-default" href="https://bex.co/blog"/><link rel="canonical" href="https://bex.co/blog"/><link rel="alternate" type="application/rss+xml" href="https://bex.co/blog/rss.xml" title="bex.co Blog"/><link rel="alternate" type="application/atom+xml" href="https://bex.co/blog/atom.xml" title="bex.co Blog"/><link rel="alternate" type="application/feed+json" href="https://bex.co/blog/feed.json" title="bex.co Blog"/><link rel="alternate" type="application/rss+xml" href="https://bex.co/changelog/rss.xml" title="bex.co changelog"/><link rel="alternate" type="application/atom+xml" href="https://bex.co/changelog/atom.xml" title="bex.co changelog"/><link rel="alternate" type="application/feed+json" href="https://bex.co/changelog/feed.json" title="bex.co changelog"/><link rel="next" href="https://bex.co/blog/page/2"/><link rel="preload" href="/assets/style-CkqsQr04.css" as="style"/>
1<script>(function(){try{var s=localStorage.getItem("cms-theme");var t;if(s==="light"||s==="dark"){t=s}else{t=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}var r=document.documentElement;r.classList.remove("light","dark");r.classList.add(t)}catch(e){document.documentElement.classList.add("dark")}})();</script>
1<script>(function(){var K="bex:asset-reload-until";var C=15000;var m=0;function u(){try{var n=Number(sessionStorage.getItem(K)||0);return Math.max(n,m)}catch(e){return m}}function ok(){return Date.now()>=u()}function mark(){var t=Date.now()+C;m=t;try{sessionStorage.setItem(K,String(t))}catch(e){}}window.addEventListener("error",function(e){var t=e&&e.target;if(!t||t.tagName!=="SCRIPT")return;var s=t.src||"";if(s.indexOf("/assets/")===-1)return;if(!ok())return;mark();location.reload()},true)})();</script>
1<style>/*! @docsearch/css 4.6.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */ 2:root{--docsearch-primary-color:#003dff;--docsearch-soft-primary-color:#003dff1a;--docsearch-subtle-color:#d6d6e7;--docsearch-text-color:#36395a;--docsearch-error-color:#ef5350;--docsearch-success-color:#e8f5e9;--docsearch-secondary-text-color:#5a5e9a;--docsearch-background-color:#f5f5fa;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-focus-color:#005fcc;--docsearch-highlight-color:#003dff;--docsearch-muted-color:#9698c3;--docsearch-muted-color-darker:#787aa540;--docsearch-icon-color:#5a5e9a;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#003dff;--docsearch-border-radius:4px;--docsearch-search-button-background:#fff;--docsearch-search-button-text-color:var(--docsearch-secondary-text-color);--docsearch-modal-width:800px;--docsearch-modal-height:600px;--docsearch-modal-variable-height:60dvh;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:#0003 0px 12px 28px 0px,#0000001a 0px 2px 4px 0px,#ffffff0d 0px 0px 0px 1px inset;--docsearch-searchbox-height:56px;--docsearch-searchbox-initial-height:56px;--docsearch-searchbox-background:#ffffffa6;--docsearch-searchbox-focus-background:#ffffffa6;--docsearch-actions-width:99px;--docsearch-actions-height:44px;--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-highlight-color:#003dff1a;--docsearch-hit-background:#fff;--docsearch-key-background:#f5f5fa;--docsearch-key-color:#5a5e9a;--docsearch-key-pressed-shadow:inset 0 2px 4px #787aa540;--docsearch-footer-height:52px;--docsearch-footer-background:#ffffffa6;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--fav-out-dur:.16s;--del-dur:.15s;--ease-smooth:cubic-bezier(.25,.8,.4,1);--ease-fast:cubic-bezier(.45,.15,.6,.9);--shadow-pop:0 4px 12px #0000000f;--shimmer-bg:linear-gradient(90deg,#e0e3e8 0%,var(--docsearch-muted-color) 20%,var(--docsearch-muted-color) 60%,#e0e3e8 95%);--docsearch-dropdown-menu-background:var(--docsearch-hit-background);--docsearch-dropdown-menu-item-hover-background:var(--docsearch-modal-background)}html[data-theme=dark]{--docsearch-text-color:#c4c7dc;--docsearch-secondary-text-color:#b6b7d5;--docsearch-subtle-color:#212139;--docsearch-error-color:#ef5350;--docsearch-success-color:#43a04733;--docsearch-highlight-color:#457aff;--docsearch-focus-color:#9ac8ff;--docsearch-background-color:#36395a;--docsearch-icon-color:#b6b7d5;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#000000a6;--docsearch-searchbox-focus-background:#000000a6;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-background:#36395a;--docsearch-key-color:#b6b7d5;--docsearch-key-pressed-shadow:inset 0 2px 4px #0c0d1466;--docsearch-footer-background:#000000a6;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497;--shimmer-bg:linear-gradient(90deg,#e0e3e8 0%,var(--docsearch-muted-color) 20%,var(--docsearch-muted-color) 60%,#e0e3e8 95%);--docsearch-dropdown-menu-background:var(--docsearch-hit-background);--docsearch-dropdown-menu-item-hover-background:var(--docsearch-modal-background);--docsearch-search-button-background:var(--docsearch-modal-background);--docsearch-search-button-text-color:var(--docsearch-text-color)}.DocSearch-Button{all:unset;background-color:var(--docsearch-search-button-background);border:1px solid var(--docsearch-subtle-color);color:var(--docsearch-search-button-text-color);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:.5rem;justify-content:space-between;align-items:center;height:36px;padding:0 8px;display:flex}.DocSearch-Button-Container{align-items:center;height:100%;display:flex}.DocSearch-Button-Container svg{color:currentColor}.DocSearch-Back-Icon,.DocSearch-Search-Icon{color:var(--docsearch-highlight-color);stroke-width:1.6px}.DocSearch-Button-Placeholder{color:currentColor;padding-block:0;padding-inline:8px 12px;font-size:1rem;line-height:normal;display:inline-block}.DocSearch-Button-Keys{min-width:calc(40px + .8em);display:flex}.DocSearch-Button-Key{background:var(--docsearch-key-background);border:0;border:1px solid color-mix(in srgb,var(--docsearch-subtle-color) 20%,transparent);color:var(--docsearch-key-color);border-radius:4px;justify-content:center;align-items:center;width:24px;height:24px;font-family:system-ui,-apple-system,sans-serif;font-size:14px;transition-property:all;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:flex;position:relative;box-shadow:none!important}.DocSearch-Button-Key--ctrl{width:33px}.DocSearch-Button-Key:first-child{margin-inline-end:.4em}@media (prefers-reduced-motion){.DocSearch-Button-Key{transition:none}}.DocSearch-Button-Key--pressed{transform:translateY(1px);box-shadow:var(--docsearch-key-pressed-shadow)!important}@media (max-width:768px){.DocSearch-Button{width:auto}.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:var(--docsearch-container-background);z-index:400;width:100vw;height:100vh;position:fixed;inset-block-start:0;inset-inline-start:0}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;background:0 0;border:0;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);box-shadow:var(--docsearch-modal-shadow);max-width:var(--docsearch-modal-width);border-radius:4px;flex-direction:column;margin:60px auto auto;display:flex;position:relative}.DocSearch-SearchBar{display:flex}.DocSearch-SearchBar-Magnifier{color:var(--docsearch-highlight-color)}
2.DocSearch-Form{background:var(--docsearch-searchbox-focus-background);border-block-end:1px solid var(--docsearch-subtle-color);height:var(--docsearch-searchbox-height,var(--docsearch-searchbox-initial-height));min-height:var(--docsearch-searchbox-initial-height);padding-block:var(--docsearch-spacing);border-radius:4px 4px 0 0;align-items:center;width:100%;margin:0;padding-inline:16px;display:flex;position:relative}.DocSearch-Input,.DocSearch-Modal-heading{appearance:none;color:var(--docsearch-text-color);font:inherit;resize:none;background:0 0;border:0;outline:none;flex:1;min-width:0;height:100%;padding-block-start:0;padding-inline-start:8px;font-size:1.2em;font-weight:300;line-height:1.4;overflow-y:hidden}.DocSearch-Input{text-overflow:ellipsis;overflow-x:hidden}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button{display:none}.DocSearch-Input::-webkit-search-decoration{display:none}.DocSearch-Input::-webkit-search-results-button{display:none}.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-Actions{height:var(--docsearch-actions-height);flex:none;justify-content:flex-end;align-items:center;gap:8px;width:auto;padding:0 2px;display:flex}.DocSearch-Divider{border-inline-start:1px solid var(--docsearch-subtle-color);height:16px}.DocSearch-Action{color:var(--docsearch-highlight-color);justify-content:center;align-items:center;min-width:24px;min-height:24px;display:flex}.DocSearch-Action,.DocSearch-AskAi-Return,.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel{margin:0;padding:0}.DocSearch-AskAi-Return{cursor:pointer}.DocSearch-AskAi-Return,.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel{color:var(--docsearch-highlight-color);justify-content:center;align-items:center;display:flex}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Action{appearance:none;color:var(--docsearch-icon-color);cursor:pointer;stroke-width:var(--docsearch-icon-stroke-width);background:0 0;border:0;border-radius:50%;animation:none;inset-inline-end:0}}.DocSearch-Action,.DocSearch-AskAi-Return{appearance:none;border-radius:var(--docsearch-border-radius);color:var(--docsearch-icon-color);cursor:pointer;stroke-width:var(--docsearch-icon-stroke-width);background:0 0;border:none;padding:2px;animation:.1s ease-in forwards fade-in;inset-inline-end:0}.DocSearch-AskAi-Return[hidden],.DocSearch-Close[hidden],.DocSearch-Input[hidden],.DocSearch-StreamingIndicator[hidden]{display:none}.DocSearch-Action:hover,.DocSearch-AskAi-Return:hover{background:var(--docsearch-soft-primary-color);color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{color:var(--docsearch-icon-color);width:24px;height:24px}.DocSearch-Form:focus-within .DocSearch-MagnifierLabel svg{color:var(--docsearch-highlight-color)}.DocSearch-Clear{appearance:none;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;height:28px;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:0;outline:none;flex:none;margin-inline-start:var(--docsearch-spacing);padding:0;font-size:.9em;font-weight:300;overflow:hidden}.DocSearch-Clear:focus-visible,.DocSearch-Close:focus-visible{outline:2px solid var(--docsearch-focus-color);outline-offset:1px;border-radius:4px}.DocSearch-Dropdown{height:var(--docsearch-modal-variable-height);max-height:calc(var(--docsearch-modal-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown-Container ul{margin:0;padding:0;list-style:none}.DocSearch-Label{color:var(--docsearch-secondary-text-color);font-size:.875em;font-weight:400;line-height:1.6em}.DocSearch-Help,.DocSearch-NoResults-Help{color:var(--docsearch-secondary-text-color);-webkit-user-select:none;user-select:none;margin:0;font-size:.8em;font-weight:300;line-height:1.5em}.DocSearch-Title{color:var(--docsearch-text-color);vertical-align:middle;font-size:1.1em;font-weight:300;line-height:.5em}.DocSearch-Title strong{font-weight:500}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-inline-start:8px}.DocSearch-Hits:last-of-type{margin-block-end:24px}.DocSearch-Hits mark{color:var(--docsearch-highlight-color);background:0 0}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);padding:var(--docsearch-spacing);justify-content:center;margin-block-end:var(--docsearch-spacing);font-size:.85em;display:flex}.DocSearch-HitsFooter a{color:inherit;border-block-end:1px solid}.DocSearch-Hit{border-radius:4px;padding-block-end:4px;scroll-margin-block-start:40px;
2display:flex;position:relative}.DocSearch-Hit:first-of-type{margin-block-start:4px}.DocSearch-Hit a,.DocSearch-Hit--AskAI{background:var(--docsearch-hit-background);cursor:pointer;border-radius:4px;width:100%;padding-inline-start:var(--docsearch-spacing);display:block}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-text-color);z-index:10;margin:0 -4px;padding:8px 4px 4px;font-size:.9em;font-weight:600;line-height:32px;position:sticky;inset-block-start:0}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit--AskAI,.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-hit-highlight-color)}.DocSearch-Conversation-History .DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-hit-background)}.DocSearch-Hit mark{color:var(--docsearch-highlight-color);text-underline-offset:.3em;text-decoration:underline}.DocSearch-Hit-Container{color:var(--docsearch-text-color);height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0;flex-direction:row;align-items:center;display:flex}.DocSearch-Hit-icon{color:var(--docsearch-secondary-text-color);width:20px;height:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{color:var(--docsearch-muted-color);align-items:center;width:22px;height:22px;display:flex}.DocSearch-Hit-action svg{width:18px;height:18px;display:block}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-inline-start:6px}.DocSearch-Hit-action-button{appearance:none;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{f
2ill:#fff}.DocSearch-Hit-content-wrapper{text-overflow:ellipsis;white-space:nowrap;flex-direction:column;flex:auto;justify-content:center;gap:4px;width:80%;margin:0 8px;font-weight:400;line-height:1.2em;display:flex;position:relative;overflow-x:hidden}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-secondary-text-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title{color:var(--docsearch-text-color)}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-highlight-color)}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-AskAiScreen,.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{color:var(--docsearch-secondary-text-color);text-align:center;flex-direction:column;justify-content:center;align-items:center;width:80%;margin:0 auto;font-size:1.25em;font-weight:400;display:flex}.DocSearch-AskAiScreen,.DocSearch-ErrorScreen,.DocSearch-NoResults{max-height:80%}.DocSearch-StartScreen{height:100%}.DocSearch-NoResults{gap:.8em;margin-block-start:2em}.DocSearch-NoResults--withAskAi{justify-content:flex-start;margin-block-start:0}.DocSearch-AskAiScreen,.DocSearch-ErrorScreen,.DocSearch-StartScreen{gap:24px}.DocSearch-StartScreen-Icon{height:64px;stroke:var(--docsearch-icon-color);width:64px}.DocSearch-Screen-Icon{color:var(--docsearch-icon-color)}.DocSearch-NoResults-Prefill-List{text-align:center;flex-direction:column;gap:12px;display:flex}.DocSearch-NoResults-Prefill-List-Items{flex-direction:column;gap:2px;display:flex}.DocSearch-NoResults-Prefill-List-Items p{text-align:start;align-items:center;margin:0;display:flex}.DocSearch-Prefill{appearance:none;color:var(--docsearch-highlight-color);cursor:pointer;background:0 0;border:0;border-radius:1em;align-items:center;gap:4px;height:40px;padding:0 4px;font-size:.8em;font-weight:300;display:inline-flex}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{background:var(--docsearch-footer-background);border-block-start:1px solid var(--docsearch-subtle-color);height:var(--docsearch-footer-height);padding:0 var(--docsearch-spacing);-webkit-user-select:none;user-select:none;z-index:300;border-radius:0 0 4px 4px;flex-direction:row-reverse;flex-shrink:0;justify-content:space-between;align-items:center;width:100%;display:flex;position:relative}.DocSearch-Commands{color:var(--docsearch-muted-color);gap:16px;margin:0;padding:0;list-style:none;display:flex}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands-Key{background-color:var(--docsearch-background-color);color:var(--docsearch-icon-color);border:0;border-radius:2px;justify-content:center;width:24px;height:24px;margin-inline-end:4px;box-shadow:none!important}.DocSearch-Commands-Key:last-of-type{margin-inline-end:8px}.DocSearch-Escape-Key{letter-spacing:normal;text-align:center;text-transform:uppercase;font-size:10px;font-weight:300;line-height:16px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.DocSearch-AskAi-Section{flex-direction:column;gap:8px;padding:12px 0;display:flex}.DocSearch-Hit-AskAIButton{color:var(--docsearch-text-color);flex-direction:row;align-items:center;display:flex}.DocSearch-Hit-AskAIButton-icon{color:var(--docsearch-icon-color);flex-shrink:0;margin-inline-end:12px}.DocSearch-Hit-AskAIButton-title{color:var(--docsearch-hit-color);text-overflow:ellipsis;white-space:nowrap;flex:auto;gap:4px;width:80%;font-weight:400;display:flex;position:relative;overflow-x:hidden}.DocSearch-Hit-AskAIButton-title-query{text-overflow:ellipsis;white-space:nowrap;background:0 0;margin-inline-start:4px;overflow:hidden}.DocSearch-Hit-AskAIButton-title mark{text-decoration:none}@keyframes fade-in{0%{opacity:0}
2to{opacity:1}}.DocSearch-AskAiScreen-Container{text-align:start;flex-direction:column;justify-content:flex-start;gap:0;width:100%;height:100%;padding:0;display:flex}.DocSearch-AskAiScreen-Disclaimer{text-align:start;align-self:flex-start;margin:0;padding-block:1.5em .5em;padding-inline:0;font-size:.6em;font-weight:300;display:flex}.DocSearch-AskAiScreen-Body{gap:24px;width:100%}.DocSearch-AskAiScreen-Body,.DocSearch-AskAiScreen-Response,.DocSearch-AskAiScreen-Response-Container{flex-direction:column;display:flex}.DocSearch-AskAiScreen-Response{background:var(--docsearch-hit-background);color:var(--docsearch-text-color);border-radius:4px;align-self:flex-start;gap:1em;width:100%;margin-block-end:8px;padding:24px;font-size:.8em}.DocSearch-AskAiScreen-Query{line-break:loose;margin:0;font-size:1.25em;font-weight:600;line-height:1.4}.DocSearch-AskAiScreen-Answer{line-height:1.5}.DocSearch-AskAiScreen-Answer,.DocSearch-AskAiScreen-ThinkingDots{color:var(--docsearch-secondary-text-color);margin:0;font-weight:400}.DocSearch-AskAiScreen-ThinkingDots{font-size:.8em}
2.DocSearch-AskAiScreen-Answer-Footer{flex-direction:row;justify-content:space-between;align-items:center;gap:8px;display:flex}.DocSearch-AskAiScreen-Actions{flex-direction:row;align-items:center;gap:12px;margin-inline-start:auto;display:flex}.DocSearch-AskAiScreen-ActionButton{cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:24px;margin:0;padding:4px;transition:background-color .2s;display:flex}.DocSearch-AskAiScreen-ActionButton:hover{background:var(--docsearch-hit-highlight-color)}.DocSearch-AskAiScreen-ActionButton svg{color:var(--docsearch-icon-color);stroke-width:1.5px;width:20px;height:20px}.DocSearch-AskAiScreen-CopyButton--copied{background-color:var(--docsearch-success-color);cursor:default}.DocSearch-AskAiScreen-MessageContent{flex-direction:column;row-gap:1em;display:flex}.DocSearch-AskAiScreen-Error{color:var(--docsearch-error-color);background-color:#ef53501a;border-radius:4px;flex-direction:row;gap:8px;padding:1em;font-size:1em;font-weight:400}.DocSearch-AskAiScreen-Error svg{margin-top:.25rem}.DocSearch-AskAiScreen-Error svg,.DocSearch-AskAiScreen-MessageContent-Tool svg{flex-shrink:0;width:16px;height:16px}.DocSearch-AskAiScreen-Error p{margin:0}.DocSearch-AskAiScreen-Error-Content{flex-direction:column;flex:1;display:flex}.DocSearch-AskAiScreen-Error-Title{margin-bottom:4px;font-weight:700}.DocSearch-AskAiScreen-Error .DocSearch-Markdown-Content{color:var(--docsearch-error-color)}.DocSearch-AskAiScreen-Error--ThreadDepth{color:var(--docsearch-text-color);border:1px solid #febdc5;width:100%;margin:12px 0 8px;font-size:12px;animation:.3s ease-out slideDown}.DocSearch-AskAiScreen-Error--ThreadDepth .DocSearch-AskAiScreen-Error-Title{margin-bottom:6px}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.DocSearch-ThreadDepthError-Link{color:var(--docsearch-highlight-color);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.DocSearch-ThreadDepthError-Link:hover{opacity:.8}.DocSearch-ThreadDepthError-Link:active{color:#991b1b}.DocSearch-AskAiScreen-FeedbackText{color:var(--docsearch-muted-color);margin:0;font-size:.7em;font-weight:400}.DocSearch-AskAiScreen-FeedbackText--visible{animation:.3s ease-in forwards fade-in}.DocSearch-AskAiScreen-RelatedSources{flex-direction:column;gap:4px;width:100%;display:flex}.DocSearch-AskAiScreen-RelatedSources-List{flex-flow:wrap;gap:12px;width:100%;display:flex}.DocSearch-AskAiScreen-RelatedSources-Title{color:var(--docsearch-secondary-text-color);margin:0;padding:6px 0;font-size:.7em;font-weight:400}.DocSearch-AskAiScreen-RelatedSources-NoResults{color:var(--docsearch-text-color);margin:0;font-size:.8rem;font-weight:400}.DocSearch-AskAiScreen-RelatedSources-Error{color:var(--docsearch-error-color);margin:0;font-size:.8rem;font-weight:400}.DocSearch-AskAiScreen-RelatedSources-Item-Link{background:var(--docsearch-hit-background);color:var(--docsearch-text-color);border-radius:4px;align-items:center;gap:6px;max-width:70%;padding:12px 8px;font-size:.75em;text-decoration:none;transition:background-color .2s;display:flex}.DocSearch-AskAiScreen-RelatedSources-Item-Link svg{color:var(--docsearch-icon-color);stroke-width:1.2px;flex-shrink:0}.DocSearch-AskAiScreen-RelatedSources-Item-Link span{text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;min-width:0;font-weight:500;overflow:hidden}.DocSearch-AskAiScreen-ExchangesList{flex-direction:column;gap:24px;margin:8px 0;display:flex}.DocSearch-AskAiScreen-RelatedSources-Item-Link:hover{background:var(--docsearch-hit-highlight-color)}.DocSearch-Markdown-Content{color:var(--docsearch-text-color);word-wrap:break-word;font-size:.9355em;line-height:1.6}.DocSearch-Markdown-Content--streaming{animation:.3s ease-in-out both fade-in}.DocSearch-Markdown-Content p{margin:1em 0}.DocSearch-Markdown-Content p:last-child{margin-block-end:0}.DocSearch-Markdown-Content p:first-child{margin-block-start:0}.DocSearch-Markdown-Content code{letter-spacing:normal;border-radius:3px;margin:0;padding:.2em 0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.9em}.DocSearch-Markdown-Content code,.DocSearch-Markdown-Content pre{background-color:var(--docsearch-key-background);color:var(--docsearch-text-color)}.DocSearch-Markdown-Content pre{border-radius:6px;margin:1.5em 0;padding:1.2em;overflow-x:auto}.DocSearch-Markdown-Content pre code{color:inherit;white-space:pre-wrap;word-wrap:break-word;background-color:#0000;border-radius:0;margin:0;padding:0;font-size:.8em;line-height:1.5}.DocSearch-Markdown-Content h1,.DocSearch-Markdown-Content h2,.DocSearch-Markdown-Content h3,.DocSearch-Markdown-Content h4,.DocSearch-Markdown-Content h5,.DocSearch-Markdown-Content h6{color:var(--docsearch-text-color);letter-spacing:-.02em;margin:1em 0;font-weight:600;line-height:1.3}.DocSearch-Markdown-Content h1{font-size:1.5em}.DocSearch-Markdown-Content h2{font-size:1.2em}.DocSearch-Markdown-Content h3{font-size:1em}.DocSearch-Markdown-Content h4{font-size:.9em}.DocSearch-Markdown-Content h5,.DocSearch-Markdown-Content h6{font-size:.8em}.DocSearch-Markdown-Content ol,.DocSearch-Markdown-Content ul{color:var(--docsearch-text-color);margin:1.2em 0;padding-inline-start:1.5em}.DocSearch-Markdown-Content ul{list-style-type:disc}.DocSearch-Markdown-Content ol{list-style-type:decimal}.DocSearch-Markdown-Content li{color:var(--docsearch-text-color);margin:.8em 0;padding-inline-start:.3em;line-height:1.6}.DocSearch-Markdown-Content li>ol,.DocSearch-Markdown-Content li>ul{margin:.5em}.DocSearch-Markdown-Content li::marker{color:var(--docsearch-muted-color)}.DocSearch-Markdown-Content a{color:var(--docsearch-highlight-color);text-decoration:none;transition:all .2s}.DocSearch-Markdown-Content a:hover{opacity:.9;text-decoration:underline}.DocSearch-Markdown-Content blockquote{border-inline-start:4px solid var(--docsearch-hit-highlight-color);color:var(--docsearch-secondary-text-color);margin:1.5em 0;padding-block:.5em;padding-inline:1em 0;font-style:italic}.DocSearch-Markdown-Content hr{border:none;border-block-start:1px solid var(--docsearch-subtle-color);margin:1em 0}.DocSearch-Markdown-Content table{border-collapse:collapse;width:100%;margin:1.5em 0}.DocSearch-Markdown-Content td,.DocSearch-Markdown-Content th{border:1px solid var(--docsearch-subtle-color);text-align:start;padding:.75em}.DocSearch-Markdown-Content th{background-color:var(--docsearch-hit-background);font-weight:600}.DocSearch-AskAiScreen-MessageContent-Reasoning{color:var(--docsearch-muted-color);align-items:center;gap:4px;font-size:1em;display:flex}.DocSearch-AskAiScreen-MessageContent-Reasoning svg{color:var(--docsearch-icon-color)}.DocSearch-AskAiScreen-MessageContent-Tool{color:var(--docsearch-muted-color);align-items:center;width:100%;line-height:1.2;display:flex}.DocSearch-AskAiScreen-MessageContent-Tool.Tool--Result{padding-block-start:0}.DocSearch-AskAiScreen-MessageContent-Tool>svg{color:var(--docsearch-icon-color);margin-inline-end:8px}.DocSearch-AskAiScreen-MessageContent-Tool-Query{color:var(--docsearch-muted-color);
2transition:box-shadow .2s}.DocSearch-AskAiScreen-MessageContent-Tool-Query svg{color:var(--docsearch-muted-color)}.DocSearch-AskAiScreen-MessageContent-Tool-Query:hover{box-shadow:0 1px 0 0 var(--docsearch-highlight-color);color:var(--docsearch-highlight-color);cursor:pointer}.DocSearch-AskAiScreen-MessageContent-Tool-Query:hover svg{color:var(--docsearch-highlight-color)}.DocSearck-AskAiScreen-MessageContent-Stopped{color:var(--docsearch-muted-color);margin-block-start:1em;font-style:italic}.DocSearch-AskAiScreen-SmallerLoadingIcon{width:16px;height:16px}.shimmer{background:var(--shimmer-bg);color:#0000;-webkit-text-fill-color:transparent;pointer-events:none;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2.5s linear infinite shimmerText;display:flex}@keyframes shimmerText{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:.3}50%{opacity:.6}}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:48px}.DocSearch-Input{font-size:1rem}.DocSearch-Hit-AskAIButton-icon{margin-inline-end:8px}body:has(.DocSearch-Container){position:fixed;overflow:hidden}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:calc(var(--docsearch-vh,1vh)*100);height:100dvh}.DocSearch-Footer{border-radius:0;position:static;inset-block-end:0}.DocSearch-Hit-content-wrapper{width:80%;display:flex;position:relative}.DocSearch-Modal{box-shadow:none;height:calc(var(--docsearch-vh,1vh)*100);border-radius:0;width:100%;max-width:100%;height:100dvh;margin:0}.DocSearch-Dropdown{max-height:none}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}.DocSearch-AskAiScreen-Response-Container{flex-direction:column}.DocSearch-AskAiScreen-RelatedSources,.DocSearch-AskAiScreen-Response{width:100%}}.DocSearch-CodeSnippet{position:relative}.DocSearch-CodeSnippet-CopyButton{background:var(--docsearch-key-background);color:var(--docsearch-text-color);cursor:pointer;border:none;border-radius:4px;align-items:center;padding:.2em .6em;font-size:.75em;transition:opacity .2s;display:flex;position:absolute;inset-block-start:8px;inset-inline-end:8px}.DocSearch-CodeSnippet-CopyButton:hover{opacity:.8}.DocSearch-CodeSnippet-CopyButton:active{opacity:.6}.DocSearch-CodeSnippet-CopyButton svg{width:16px;height:16px;margin-inline-end:4px}.DocSearch-CodeSnippet-CheckIcon,.DocSearch-CodeSnippet-CopyButton--copied .DocSearch-CodeSnippet-CopyIcon{display:none}.DocSearch-CodeSnippet-CopyButton--copied .DocSearch-CodeSnippet-CheckIcon{display:inline-block}.DocSearch-Markdown-Content--streaming .DocSearch-CodeSnippet-CopyButton{display:none}.DocSearch-NewConversationScreen{padding:3em var(--docsearch-spacing)}.DocSearch-NewConversationScreen-Title{color:var(--docsearch-text-color);margin-block-end:.15em;font-size:26px;font-weight:600}.DocSearch-NewConversationScreen-Description{color:var(--docsearch-muted-color);font-size:14px}.DocSearch-NewConversationScreen-SuggestedQuestions{align-items:start;gap:var(--docsearch-spacing);flex-direction:column;margin-block-start:1.5em;display:flex}.DocSearch-NewConversationScreen-SuggestedQuestion{background-color:var(--docsearch-searchbox-background);border:1px solid var(--docsearch-subtle-color);border-radius:var(--docsearch-border-radius);color:var(--docsearch-text-color);cursor:pointer;justify-content:center;align-items:center;height:40px;padding:12px;display:inline-flex}.DocSearch-Menu{position:relative}.DocSearch-Menu-content{background-color:var(--docsearch-dropdown-menu-background);border-radius:var(--docsearch-border-radius);z-index:422;flex-direction:column;min-width:195px;padding:8px 0;display:none;position:absolute;inset-block-start:calc(100% + 12px);inset-inline-end:0;box-shadow:0 0 0 1px #21243d0d,0 8px 16px -4px #21243d40}.DocSearch-Menu-content.open{display:flex}.DocSearch-Menu-item{color:var(--docsearch-text-color);cursor:pointer;white-space:nowrap;background-color:#0000;border:0;align-items:center;gap:8px;padding:10px 16px;font-size:14px;display:flex}.DocSearch-Menu-item:hover{background-color:var(--docsearch-dropdown-menu-item-hover-background)}</style>
2<script>
vendor: 118 bytes, line 2
2window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
2G-C0F27EWBRD
vendor: 26 bytes, line 2
2',{send_page_view:false});
2</script>
2<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://bex.co/#organization","name":"bex.co","description":"The cloud your agents can actually run","url":"https://bex.co/","logo":{"@type":"ImageObject","url":"https://bex.co/img/bex-co-logo-square.webp"},"sameAs":["https://github.com/blockedenhq","https://x.com/bexdotco","https://medium.com/@BlockEden.xyz","https://www.youtube.com/@BlockEdenHQ","https://discord.gg/eWZvE4RSBw"],"contactPoint":{"@type":"ContactPoint","contactType":"general inquiries","email":"[email protected]"},"address":{"@type":"PostalAddress","streetAddress":"600 California Street, 11th Floor","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94108","addressCountry":"US"}}</script>
2<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","@id":"https://bex.co/#website","name":"bex.co","description":"The cloud your agents can actually run","url":"https://bex.co/","publisher":{"@id":"https://bex.co/#organization"}}</script>
2<script type="application/ld+json">{"@context":"https://schema.org","@type":"Blog","name":"bex.co Blog","url":"https://bex.co/blog","publisher":{"@id":"https://bex.co/#organization"},"isPartOf":{"@id":"https://bex.co/#website"},"blogPost":[{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/05/railway-ai-native-per-second-pricing-vs-hetzner","headline":"Railway's $100M AI-Native Cloud vs a $42 Hetzner Box: A Worked Bill Recompute","url":"https://bex.co/blog/2026/10/05/railway-ai-native-per-second-pricing-vs-hetzner","datePublished":"2026-10-05"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/05/lets-encrypt-tlsclient-shutdown-mtls-migration","headline":"Let's Encrypt Ended Free mTLS Client Certs on July 8 â the Last Ones Expire This Week","url":"https://bex.co/blog/2026/10/05/lets-encrypt-tlsclient-shutdown-mtls-migration","datePublished":"2026-10-05"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/05/k0rdent-kairos-bindy-reference-idp-stack","headline":"Kairos + k0rdent + bindy: Is This the 2026 Reference IDP a Small Platform Team Should Copy?","url":"https://bex.co/blog/2026/10/05/k0rdent-kairos-bindy-reference-idp-stack","datePublished":"2026-10-05"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/04/tailscale-aperture-llm-keys-network-identity","headline":"Tailscale's Aperture Puts LLM API Keys Behind Network Identity Instead of Env Vars","url":"https://bex.co/blog/2026/10/04/tailscale-aperture-llm-keys-network-identity","datePublished":"2026-10-04"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/04/suse-mcp-portfolio-agent-infra-interface","headline":"SUSE Put MCP Across Its Whole Portfolio: What a Vendor-Blessed Agent-to-Infra Interface Means for Your PaaS's Own MCP Server","url":"https://bex.co/blog/2026/10/04/suse-mcp-portfolio-agent-infra-interface","datePublished":"2026-10-04"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/04/superagent-sandbox-benchmark-cold-start-concurrency","headline":"0.27s at 37%: What the August Sandbox Burst Benchmark Really Says About Cold-Start Claims","url":"https://bex.co/blog/2026/10/04/superagent-sandbox-benchmark-cold-start-concurrency","datePublished":"2026-10-04"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/04/sonobuoy-conformance-fleet-gate-caph","headline":"Sonobuoy Conformance as a Fleet Gate: Don't Schedule Tenants on an Unproven Node","url":"https://bex.co/blog/2026/10/04/sonobuoy-conformance-fleet-gate-caph","datePublished":"2026-10-04"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/04/serviceaccount-token-image-pulls","headline":"Stop Copying Registry Passwords Into Every Namespace: Kubernetes 1.34 ServiceAccount Image Pulls in Practice","url":"https://bex.co/blog/2026/10/04/serviceaccount-token-image-pulls","datePublished":"2026-10-04"},{"@type":"BlogPosting","@id":"https://bex.co/blog/2026/10/04/pocketbasecloud-fixed-price-vs-per-project-metering","headline":"Unlimited Apps, One Flat Bill: What PocketBaseCloud's $25 Show HN Pitch Reveals About Per-Project Pricing","url":"https://bex.co/blog/2026/10/04/pocketbasecloud-fixed-price-vs-per-project-metering","datePublished":"2026-10-04"}]}</script>
2<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"bex.co","item":"https://bex.co"},{"@type":"ListItem","position":2,"name":"bex.co Blog","item":"https://bex.co/blog"}]}</script>
2<link rel="stylesheet" href="/assets/style-CkqsQr04.css"/></head><body><div data-route-announcer="" role="status" aria-live="polite" aria-atomic="true" class="sr-only"></div><!--$--><div class="min-h-screen noise-bg"><a href="#main" class="sr-only focus:not-sr-only focus:fixed focus:top-3 focus:left-3 focus:z-[100] focus:rounded-lg focus:bg-background focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-foreground focus:shadow-lg focus:ring-2 focus:ring-primary focus:outline-none">Skip to main content</a><header class="sticky top-0 z-50 border-b border-border/50 bg-background/80 backdrop-blur-sm"><div class="mx-auto flex h-14 max-w-[1400px] items-center justify-between gap-4 px-4 sm:px-6"><div class="flex min-w-0 items-center gap-5 xl:gap-8"><a href="/" class="flex shrink-0 items-center gap-2.5 rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50"><svg viewBox="0 0 160 120" fill="none" stroke="currentColor" stroke-width="9" stroke-linecap="round" stroke-linejoin="round" class="h-6 w-8 text-primary" aria-hidden="true"><path d="M25 20 80 60 25 100Zm110 0L80 60l55 40Z"></path></svg><span class="font-sans text-lg font-medium leading-none tracking-[-0.03em] text-foreground select-none">bex<span class="text-primary">.co</span></span></a><nav class="hidden items-center gap-2 lg:flex" aria-label="Main"><div class="relative"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-lg transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 text-muted-foreground hover:text-foreground hover:bg-accent py-1.5 gap-1 px-2 text-sm font-normal" type="button" aria-expanded="false" aria-controls="desktop-nav-product" aria-haspopup="true">Products<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="transition-transform duration-200"><path d="m6 9 6 6 6-6"></path></svg></button><div id="desktop-nav-product" hidden="" data-nosnippet="true" class="absolute top-full start-0 z-50 pt-2 w-[44rem]"><div class="grid gap-x-3 gap-y-5 rounded-xl border border-border bg-background/98 p-4 shadow-xl backdrop-blur-sm grid-cols-2"><section aria-labelledby="desktop-nav-product-platform"><h2 id="desktop-nav-product-platform" class="mb-1.5 px-2 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">Platform & APIs</h2><div class="space-y-0.5"><a data-analytics-tracked="" href="/docs/platform" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"></path><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"></path><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"></path><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">bex</div> 3<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Deploy a git repo to a running HTTPS service on infrastructure you own.</p></div></div></a><a data-analytics-tracked="" href="/docs/getting-started/overview" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><circle cx="12" cy="4.5" r="2.5"></circle><path d="m10.2 6.3-3.9 3.9"></path><circle cx="4.5" cy="12" r="2.5"></circle><path d="M7 12h10"></path><circle cx="19.5" cy="12" r="2.5"></circle><path d="m13.8 17.7 3.9-3.9"></path><circle cx="12" cy="19.5" r="2.5"></circle></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">bex router</div> 4<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">One API key for RPC and REST across 30+ blockchain networks.</p></div></div></a><a data-analytics-tracked="" href="/bex-security" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">bex security</div> 5<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Scan code repositories for vulnerabilities with evidence-driven AI security agents.</p></div></div></a><a data-analytics-tracked="" href="/crypto-price-api" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><circle cx="12" cy="4.5" r="2.5"></circle><path d="m10.2 6.3-3.9 3.9"></path><circle cx="4.5" cy="12" r="2.5"></circle><path d="M7 12h10"></path><circle cx="19.5" cy="12" r="2.5"></circle><path d="m13.8 17.7 3.9-3.9"></path><circle cx="12" cy="19.5" r="2.5"></circle></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Crypto Price API</div> 6<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Real-time crypto price data</p></div></div></a></div></section><section aria-labelledby="desktop-nav-product-apps-tools"><h2 id="desktop-nav-product-apps-tools" class="mb-1.5 px-2 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">Apps & tools</h2><div class="space-y-0.5"><a data-analytics-tracked="" href="/cli" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="m4 17 6-5-6-5"></path><path d="M12 19h8"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Bex CLI</div> 7<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Deploy, inspect, and code from your terminal.</p></div></div></a><a data-analytics-tracked="" href="/download" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M12 15V3"></path><path d="m7 10 5 5 5-5"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Download</div> 8<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Get Bex Desktop for your OS</p></div></div></a><a data-analytics-tracked="" href="/tools" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Tools</div> 9<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Check your render.yaml against Bex in the browser.</p></div></div></a><a href="https://beancount.io" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent" data-analytics-tracked=""><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M2 6h4"></path><path d="M2 10h4"></path><path d="M2 14h4"></path><path d="M2 18h4"></path><rect width="16" height="20" x="4" y="2" rx="2"></rect><path d="M15 2v20"></path><path d="M15 7h5"></path><path d="M15 12h5"></path><path d="M15 17h5"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Beancount.io</div> 10<p class="mt-0.5 text-[0.8125rem] leading-[1.25rem] text-muted-foreground">Plain-text double-entry bookkeeping with automatic financial statements.</p></div></div></a></div></section></div></div></div><div class="relative"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-lg transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 text-muted-foreground hover:text-foreground hover:bg-accent py-1.5 gap-1 px-2 text-sm font-normal" type="button" aria-expanded="false" aria-controls="desktop-nav-resources" aria-haspopup="true">Resources<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="transition-transform duration-200"><path d="m6 9 6 6 6-6"></path></svg></button><div id="desktop-nav-resources" hidden="" data-nosnippet="true" class="absolute top-full start-0 z-50 pt-2 w-[44rem]"><div class="grid gap-x-3 gap-y-5 rounded-xl border border-border bg-background/98 p-4 shadow-xl backdrop-blur-sm grid-cols-2"><section aria-labelledby="desktop-nav-resources-learn"><h2 id="desktop-nav-resources-learn" class="mb-1.5 px-2 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">Learn & build</h2><div class="space-y-0.5"><a data-analytics-tracked="" href="/docs" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M2 6h4"></path><path d="M2 10h4"></path><path d="M2 14h4"></path><path d="M2 18h4"></path><rect width="16" height="20" x="4" y="2" rx="2"></rect><path d="M15 2v20"></path><path d="M15 7h5"></path><path d="M15 12h5"></path><path d="M15 17h5"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Docs</div> 11</div></div></a><a data-analytics-tracked="" href="/examples" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="m4 17 6-5-6-5"></path><path d="M12 19h8"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Examples</div> 12</div></div></a><a data-analytics-tracked="" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 bg-accent active" href="/blog" data-status="active" aria-current="page"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-primary/30 bg-primary/10 text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M2 6h4"></path><path d="M2 10h4"></path><path d="M2 14h4"></path><path d="M2 18h4"></path><rect width="16" height="20" x="4
12" y="2" rx="2"></rect><path d="M15 2v20"></path><path d="M15 7h5"></path><path d="M15 12h5"></path><path d="M15 17h5"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Blog</div> 13</div></div></a></div></section><section aria-labelledby="desktop-nav-resources-company"><h2 id="desktop-nav-resources-company" class="mb-1.5 px-2 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">Company</h2><div class="space-y-0.5"><a data-analytics-tracked="" href="/changelog" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"></path><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"></path><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"></path><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"></path></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">Changelog</div> 14</div></div></a><a data-analytics-tracked="" href="/about-us" class="group relative block rounded-xl px-2.5 py-2.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 hover:bg-accent"><div class="flex min-w-0 items-start gap-3"><span aria-hidden="true" class="mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors duration-150 border-border/80 bg-muted/60 text-muted-foreground group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-[18px]"><circle cx="12" cy="4.5" r="2.5"></circle><path d="m10.2 6.3-3.9 3.9"></path><circle cx="4.5" cy="12" r="2.5"></circle><path d="M7 12h10"></path><circle cx="19.5" cy="12" r="2.5"></circle><path d="m13.8 17.7 3.9-3.9"></path><circle cx="12" cy="19.5" r="2.5"></circle></svg></span><div class="min-w-0 pt-px"><div class="text-[0.9375rem] font-semibold leading-5 text-foreground">About</div> 15</div></div></a></div></section></div></div></div><a data-analytics-tracked="" href="/pricing" class="relative rounded-sm px-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 text-sm text-muted-foreground hover:text-foreground">Pricing</a></nav></div><div class="flex items-center gap-1.5 text-muted-foreground xl:gap-3"><div class="flex items-center gap-0.5"><a href="https://github.com/bex-co/bex" target="_blank" rel="noopener noreferrer" aria-label="GitHub" class="flex items-center gap-1.5 rounded-sm px-2 py-1.5 text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="text-xs font-medium tabular-nums">419</span></a><a href="https://discord.gg/eWZvE4RSBw" target="_blank" rel="noopener noreferrer" aria-label="Discord" class="flex items-center gap-1.5 rounded-sm px-2 py-1.5 text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363
150 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"></path></svg></a></div><nav class="hidden items-center gap-3 lg:flex" aria-label="Utility"><a href="https://dashboard.bex.co/auth/login" class="relative rounded-sm px-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 text-sm text-muted-foreground hover:text-foreground" data-analytics-tracked="">Login</a><a href="https://dashboard.bex.co/auth/sign-up" class="inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-lg font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 bg-primary text-primary-foreground shadow hover:bg-primary/90 py-1.5 px-3 text-sm" data-analytics-tracked="">Sign Up</a></nav><div class="hidden items-center gap-1.5 lg:flex"><button type="button" id="radix-_R_cklqq_" aria-haspopup="menu" aria-expanded="false" data-state="closed" aria-label="Languages" class="inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground data-[state=open]:bg-accent cursor-pointer max-xl:min-h-11 max-xl:min-w-11"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg></button><button class="inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground data-[state=open]:bg-accent cursor-pointer max-xl:min-h-11 max-xl:min-w-11" aria-hidden="true" tabindex="-1"></button></div><button class="inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-lg text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 text-muted-foreground hover:text-foreground hover:bg-accent h-9 w-9 lg:hidden" type="button" aria-label="Open menu" aria-expanded="false"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></div></header><main id="main" class="mx-auto max-w-[1400px] px-4 sm:px-6 py-8"><div class="mb-8"><div class="flex items-center gap-2.5 mb-2"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open text-primary" aria-hidden="true"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg><h1 class="text-2xl font-bold tracking-tight">Blog</h1></div><p class="text-sm text-muted-foreground">Insights, analysis, and updates from the AI agent economy.<!-- --> <a href="/blog/tags" class="underline-offset-2 hover:underline text-primary">Browse by tag</a>
15 · <a href="/blog/archive" class="underline-offset-2 hover:underline text-primary">Browse the archive</a>.</p></div><div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-5"><a href="/blog/2026/10/05/railway-ai-native-per-second-pricing-vs-hetzner" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Railway's%20%24100M%20AI-Native%20Cloud%20vs%20a%20%2442%20Hetzner%20Box%3A%20A%20Worked%20Bill%20Recompute" alt="Railway's $100M AI-Native Cloud vs a $42 Hetzner Box: A Worked Bill Recompute" width="2048" height="1024" loading="eager" fetchPriority="high" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-05">October 5, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>9<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Railway's $100M AI-Native Cloud vs a $42 Hetzner Box: A Worked Bill Recompute</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">Railway's $100M AI-native cloud pitch promises 50% savings over hyperscalers, but a line-by-line recompute of a steady API, worker, and Postgres puts the per-second meter at $106.50/month against $42.60 for a flat Hetzner box, with the crossover near 25% utilization.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">cost-optimization</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">migration</div></div></div></a><a href="/blog/2026/10/05/lets-encrypt-tlsclient-shutdown-mtls-migration" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Let's%20Encrypt%20Ended%20Free%20mTLS%20Client%20Certs%20on%20July%208%20%E2%80%94%20the%20Last%20Ones%20Expire%20This%20Week" alt="Let's Encrypt Ended Free mTLS Client Certs on July 8 â the Last Ones Expire This Week" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-05">October 5, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>10<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Let's Encrypt Ended Free mTLS Client Certs on July 8 â the Last Ones Expire This Week</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">Let's Encrypt's last clientAuth certificates expire the first week of October 2026. A five-minute audit to find certs that renew into rejection, and a decision table for moving client-auth issuance to SPIRE, a mesh CA, or private PKI.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">security</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">Kubernetes</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div></div></div></a><a href="/blog/2026/10/05/k0rdent-kairos-bindy-reference-idp-stack" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Kairos%20%2B%20k0rdent%20%2B%20bindy%3A%20Is%20This%20the%202026%20Reference%20IDP%20a%20Small%20Platform%20Team%20Should%20Copy%3F" alt="Kairos + k0rdent + bindy: Is This the 2026 Reference IDP a Small Platform Team Should Copy?" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-05">October 5, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>11<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Kairos + k0rdent + bindy: Is This the 2026 Reference IDP a Small Platform Team Should Copy?</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">k0rdent's first year plus RBC's 50-cluster Kairos build log add up to a credible 2026 reference IDP â adopt the fleet layers (immutable nodes, CAPI lifecycle, OpenCost chargeback) and diverge at the app layer.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">Kubernetes</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">
15infrastructure</div></div></div></a><a href="/blog/2026/10/04/tailscale-aperture-llm-keys-network-identity" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Tailscale's%20Aperture%20Puts%20LLM%20API%20Keys%20Behind%20Network%20Identity%20Instead%20of%20Env%20Vars" alt="Tailscale's Aperture Puts LLM API Keys Behind Network Identity Instead of Env Vars" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-04">October 4, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>10<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Tailscale's Aperture Puts LLM API Keys Behind Network Identity Instead of Env Vars</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">Tailscale's Aperture replaces per-agent LLM API keys with tailnet identity, per-user audit logs, and token-spend attribution. Here's the five-step mechanism, why a mesh vendor built a credential broker, and the parts list for a self-hosted equivalent.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">AI agents</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">LLM</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">identity</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><span class="text-[10px] text-muted-foreground self-center">+<!-- -->1</span></div></div></a><a href="/blog/2026/10/04/suse-mcp-portfolio-agent-infra-interface" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=SUSE%20Put%20MCP%20Across%20Its%20Whole%20Portfolio%3A%20What%20a%20Vendor-Blessed%20Agent-to-Infra%20Interface%20Means%20for%20Your%20PaaS's%20Own%20MCP%20Server" alt="SUSE Put MCP Across Its Whole Portfolio: What a Vendor-Blessed Agent-to-Infra Interface Means for Your PaaS's Own MCP Server" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-04">October 4, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>12<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">SUSE Put MCP Across Its Whole Portfolio: What a Vendor-Blessed Agent-to-Infra Interface Means for Your PaaS'
15s Own MCP Server</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">SUSE embedded MCP servers across Rancher Prime and Multi-Linux Manager with AWS, n8n, Revenium, and Stacklok aboard. Here is what a vendor-blessed agent-to-infra interface validates for a PaaS agent API, where its patch-and-monitor scope stops short of the git-push deploy surface, and a checklist for building that surface yourself.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">Model Context Protocol</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">AI agents</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">Kubernetes</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div></div></div></a><a href="/blog/2026/10/04/superagent-sandbox-benchmark-cold-start-concurrency" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=0.27s%20at%2037%25%3A%20What%20the%20August%20Sandbox%20Burst%20Benchmark%20Really%20Says%20About%20Cold-Start%20Claims" alt="0.27s at 37%: What the August Sandbox Burst Benchmark Really Says About Cold-Start Claims" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-04">October 4, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>12<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">0.27s at 37%: What the August Sandbox Burst Benchmark Really Says About Cold-Start Claims</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">Daytona's 0.27-second median at 37% success, Modal at 0.88s, E2B at 1.61s: a guided reading of the August burst benchmark, a four-question decoder for any cold-start slide, and the concurrent bar a self-hosted Firecracker pool must clear to claim parity.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">AI agents</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">
15cloud infrastructure</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">developer tools</div></div></div></a><a href="/blog/2026/10/04/sonobuoy-conformance-fleet-gate-caph" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Sonobuoy%20Conformance%20as%20a%20Fleet%20Gate%3A%20Don't%20Schedule%20Tenants%20on%20an%20Unproven%20Node" alt="Sonobuoy Conformance as a Fleet Gate: Don't Schedule Tenants on an Unproven Node" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-04">October 4, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>9<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Sonobuoy Conformance as a Fleet Gate: Don't Schedule Tenants on an Unproven Node</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">A two-tier Sonobuoy gate for CAPH-managed Hetzner fleets: taint every new machine at join, prove it with a focused non-disruptive conformance slice, and reserve full certified-conformance for template promotion on a canary cluster.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">Kubernetes</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">tutorial</div></div></div></a><a href="/blog/2026/10/04/serviceaccount-token-image-pulls" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Stop%20Copying%20Registry%20Passwords%20Into%20Every%20Namespace%3A%20Kubernetes%201.34%20ServiceAccount%20Image%20Pulls%20in%20Practice" alt="Stop Copying Registry Passwords Into Every Namespace: Kubernetes 1.34 ServiceAccount Image Pulls in Practice" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-04">October 4, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>12<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Stop Copying Registry Passwords Into Every Namespace: Kubernetes 1.34 ServiceAccount Image Pulls in Practice</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">Kubernetes 1.34's beta ServiceAccount token flow replaces per-namespace imagePullSecrets with short-lived, workload-bound pull credentials â how to wire the registry side, bind ServiceAccounts, handle rotation, and test the failure modes before deleting static secrets.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">Kubernetes</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">security</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div><span class="text-[10px] text-muted-foreground self-center">+<!-- -->1</span></div></div></a><a href="/blog/2026/10/04/pocketbasecloud-fixed-price-vs-per-project-metering" class="group rounded-xl border border-border/50 bg-card/30 overflow-hidden transition-colors hover:bg-card/60 hover:border-border"><div class="aspect-[2/1] overflow-hidden border-b border-border/30"><img src="https://opengraph-image.blockeden.xyz/og/bex-co/v1/card.webp?title=Unlimited%20Apps%2C%20One%20Flat%20Bill%3A%20What%20PocketBaseCloud's%20%2425%20Show%20HN%20Pitch%20Reveals%20About%20Per-Project%20Pricing" alt="Unlimited Apps, One Flat Bill: What PocketBaseCloud's $25 Show HN Pitch Reveals About Per-Project Pricing" width="2048" height="1024" loading="lazy" fetchPriority="auto" class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]"/></div><div class="p-5"><div class="flex items-center gap-2 text-xs text-muted-foreground mb-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><time dateTime="2026-10-04">October 4, 2026</time><span class="text-border">·</span><span>Dora Noda</span><span class="text-border">·</span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span>10<!-- --> <!-- -->min</span></div><h2 class="text-base font-semibold leading-snug mb-2 group-hover:text-primary transition-colors">Unlimited Apps, One Flat Bill: What PocketBaseCloud's $25 Show HN Pitch Reveals About Per-Project Pricing</h2><p class="text-sm text-muted-foreground leading-relaxed line-clamp-3 mb-3">PocketBaseCloud's Show HN offers unlimited small apps on a $25 flat slice â we work the N-app math against Supabase per-project metering,
15Vercel usage billing, and a $6 self-hosted box.</p><div class="flex flex-wrap gap-1.5"><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">self-hosting</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">PaaS</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">cost-optimization</div><div class="inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground text-[10px] px-1.5 py-0">hosting</div></div></div></a></div><div class="mt-8 flex flex-wrap items-center justify-between gap-x-6 gap-y-4 text-xs text-muted-foreground"><span>Showing 1â9 of 3495 posts</span><div class="flex flex-wrap items-center gap-x-5 gap-y-3"><nav aria-label="Pagination"><p class="sr-only">Page 1 of 389</p><ol class="flex flex-wrap items-center gap-1"><li><a aria-label="Page 1" aria-current="page" title="First page" class="inline-flex items-center gap-0.5 rounded-lg px-2.5 py-1.5 font-medium tabular-nums bg-primary text-primary-foreground active" href="/blog" data-status="active">1</a></li><li><a aria-label="Page 2" href="/blog/page/2" class="inline-flex items-center gap-0.5 rounded-lg px-2.5 py-1.5 font-medium tabular-nums transition-colors bg-secondary hover:bg-accent cursor-pointer">2</a></li><li><a aria-label="Page 3" href="/blog/page/3" class="inline-flex items-center gap-0.5 rounded-lg px-2.5 py-1.5 font-medium tabular-nums transition-colors bg-secondary hover:bg-accent cursor-pointer">3</a></li><li aria-hidden="true"><span class="px-1.5 py-1.5 select-none">â¦</span></li><li><a aria-label="Page 389" title="Last page" href="/blog/page/389" class="inline-flex items-center gap-0.5 rounded-lg px-2.5 py-1.5 font-medium tabular-nums transition-colors bg-secondary hover:bg-accent cursor-pointer">389</a></li><li><a aria-label="Next" href="/blog/page/2" class="inline-flex items-center gap-0.5 rounded-lg px-2.5 py-1.5 font-medium tabular-nums transition-colors bg-secondary hover:bg-accent cursor-pointer">Next<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></a></li></ol></nav><a href="/blog/archive" class="inline-flex items-center gap-1.5 font-medium text-primary underline-offset-2 hover:underline"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg>Browse by year</a></div></div><div class="rounded-2xl border border-border/60 bg-card mt-12 px-6 py-6" role="region" aria-labelledby="blog-subscribe"><h2 id="blog-subscribe" class="flex items-center gap-2 text-lg font-semibold"><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="lucide lucide-rss h-4 w-4 text-primary" aria-hidden="true"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg>Subscribe</h2><p class="mt-2 max-w-2xl text-sm leading-relaxed text-muted-foreground">New posts land in your reader as soon as they publish. Pick a format â all three carry the same posts.</p><div class="mt-4 flex flex-wrap items-center gap-x-6 gap-y-3"><div class="flex items-center gap-2">
15<a href="https://bex.co/blog/rss.xml" class="text-sm font-medium text-primary hover:underline" target="_blank" rel="noopener noreferrer">RSS</a><button type="button" aria-label="Copy feed URL" class="inline-flex items-center justify-center rounded-md border border-border/60 h-6 w-6 text-muted-foreground transition-colors hover:text-foreground hover:border-primary/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40"><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="lucide lucide-copy h-3 w-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></button><span aria-live="polite" class="sr-only"></span></div><div class="flex items-center gap-2"><a href="https://bex.co/blog/atom.xml" class="text-sm font-medium text-primary hover:underline" target="_blank" rel="noopener noreferrer">Atom</a><button type="button" aria-label="Copy feed URL" class="inline-flex items-center justify-center rounded-md border border-border/60 h-6 w-6 text-muted-foreground transition-colors hover:text-foreground hover:border-primary/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40"><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="lucide lucide-copy h-3 w-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></button><span aria-live="polite" class="sr-only"></span></div><div class="flex items-center gap-2"><a href="https://bex.co/blog/feed.json" class="text-sm font-medium text-primary hover:underline" target="_blank" rel="noopener noreferrer">JSON Feed</a><button type="button" aria-label="Copy feed URL" class="inline-flex items-center justify-center rounded-md border border-border/60 h-6 w-6 text-muted-foreground transition-colors hover:text-foreground hover:border-primary/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40"><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="lucide lucide-copy h-3 w-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></button><span aria-live="polite" class="sr-only"></span></div></div><p class="mt-4 max-w-2xl text-sm leading-relaxed text-muted-foreground">Current feeds keep roughly two days of posts so daily polling does not miss a burst. Older entries stay reachable from the feed's next-page link in readers that follow it, or from the<!-- --> <a href="/blog/archive" class="text-primary hover:underline">blog archive</a>.</p><p class="mt-4 text-sm text-muted-foreground">Following one topic instead?<!-- --> <a href="/blog/tags" class="text-primary hover:underline">Browse tags</a></p></div><div class="mt-12 pb-8 text-center text-xs text-muted-foreground"><p></p></div></main><footer class="relative border-t bg-background border-border/50"><div aria-hidden="true" class="pointer-events-none absolute top-0 left-0 right-0 h-px bg-gradient-to-r from-primary/0 via-primary/60 to-primary/0"></div><div class="mx-auto max-w-[1400px] px-4 py-10 sm:px-6 sm:py-12"><div class="grid grid-cols-2 gap-x-6 gap-y-8 sm:grid-cols-3 xl:grid-cols-[1.3fr_repeat(5,minmax(0,1fr))] xl:gap-x-8"><div class="col-span-2 sm:col-span-3 xl:col-span-1 flex flex-col gap-5"><a aria-label="bex.co home" href="/" class="flex items-center w-fit cursor-pointer max-md:min-h-11"><img src="/img/bex-co-logo.webp" alt="bex.co" width="512" height="512" class="block shrink-0 object-contain select-none size-8"/></a><p class="text-sm text-muted-foreground leading-relaxed max-w-xs">The cloud your agents can actually run</p></div><nav aria-label="Footer" class="contents"><div class="min-w-0 flex flex-col gap-3"><h3 class="text-[11px] uppercase tracking-[0.18em] text-muted-foreground">Products</h3><ul class="flex flex-col gap-0 md:gap-2"><li><a href="/docs/platform" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">bex<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/bex-security" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">bex security<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li></ul></div><div class="min-w-0 flex flex-col gap-3"><h3 class="text-[11px] uppercase tracking-[0.18em] text-muted-foreground">Navigation</h3><ul class="flex flex-col gap-0 md:gap-2"><li><a href="https://status.bex.co/" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Service Status<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="/pricing" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Pricing<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/help/how-to-apply-coupon-code" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Apply Coupon Code<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/about-us" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">About Us<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="https://stargately.com/" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Stargately Home<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li></ul></div><div class="min-w-0 flex flex-col gap-3"><h3 class="text-[11px] uppercase tracking-[0.18em] text-muted-foreground">Resources</h3><ul class="flex flex-col gap-0 md:gap-2"><li><a href="/changelog" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Changelog<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/download" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Download<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/cli" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Bex CLI<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/examples" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Examples<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/tools" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Tools<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/brand-assets" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Brand Assets<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="https://github.com/blockedenhq" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">GitHub<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li></ul></div><div class="min-w-0 flex flex-col gap-3"><h3 class="text-[11px] uppercase tracking-[0.18em] text-muted-foreground">Learning</h3><ul class="flex flex-col gap-0 md:gap-2"><li><a href="/blog/archive" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Blog Archive<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/topics" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Topics<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/glossary" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Glossary<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li></ul></div><div class="min-w-0 flex flex-col gap-3"><h3 class="text-[11px] uppercase tracking-[0.18em] text-muted-foreground">Community</h3><ul class="flex flex-col gap-0 md:gap-2"><li><a href="https://discord.gg/eWZvE4RSBw" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Discord<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://x.com/bexdotco" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Twitter<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://medium.com/@BlockEden.xyz" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Medium<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://www.linkedin.com/in/dora-noda-35952622a/" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">LinkedIn<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://www.youtube.com/@BlockEdenHQ" target="_blank" rel="noopener noreferrer" class="group inline-flex items-center gap-1 text-sm text-muted-foreg
15round hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">YouTube<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0 opacity-60 group-hover:opacity-100 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 transition-transform" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="/cdn-cgi/l/email-protection#2f474a4343406f4d4a57014c40" class="group inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Email<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li></ul></div></nav></div><div class="mt-5 flex flex-col gap-4 border-t border-border/50 pt-5 lg:flex-row lg:items-center lg:justify-between"><p class="text-xs text-muted-foreground">Copyright © 2026 Stargately, Inc.</p><div class="flex flex-wrap items-center gap-x-6 gap-y-3"><nav aria-label="Legal"><ul class="flex flex-wrap gap-x-5 gap-y-1"><li><a href="/privacy-policy" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Privacy Policy<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li><li><a href="/terms-of-service" class="group inline-flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors cursor-pointer max-md:min-h-11"><span class="relative">Terms of Service<span class="absolute left-0 right-0 -bottom-0.5 h-px scale-x-0 origin-left bg-primary transition-transform duration-300 group-hover:scale-x-100"></span></span></a></li></ul></nav><div class="flex items-center gap-1 text-muted-foreground"><button type="button" id="radix-_R_qtlqq_" aria-haspopup="menu" aria-expanded="false" data-state="closed" aria-label="Languages" class="inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground data-[state=open]:bg-accent cursor-pointer max-xl:min-h-11 max-xl:min-w-11"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg></button><button class="inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground data-[state=open]:bg-accent cursor-pointer max-xl:min-h-11 max-xl:min-w-11" aria-hidden="true" tabindex="-1"></button></div></div></div></div></footer></div>
vendor: 108 bytes, line 15
15<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
15<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
15<!--/$-->
15<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){if(this.hydrated&&this.streamEnded){const e=()=>{self.$_TSR?.hydrated&&self.$_TSR?.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-C1toZImK.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-C1toZImK.js"}}],css:$R[8]=["/assets/index-CZJBUMFF.css"]},"/($locale)":$R[9]={preloads:$R[10]=["/assets/route-tqWSb7jd.js"]},"/($locale)/blog/":$R[11]={preloads:$R[12]=["/assets/index-Bt9fEFti.js","/assets/BlogListPage-CldwFze9.js","/assets/BlogPostItem-C0nUxQ-4.js","/assets/badge-ll0GW--z.js","/assets/calendar-C-AwTIH-.js","/assets/rss-b-7qu-BY.js","/assets/check-krdpyJwV.js","/assets/copy-BLaStDA8.js","/assets/book-open-B25J0aFv.js"]}}}
15,matches:$R[13]=[$R[14]={i:"__root__�",u:1791587670669,s:"success",l:$R[15]={messages:$R[16]={"apiReference.gradeNote":$R[17]={message:"Operations are graded against the bex backend. Partial and not-implemented endpoints are marked in the reference."},"apiReference.loading":$R[18]={message:"Loading interactive API referenceâ¦"},"apiReference.openJson":$R[19]={message:"Open the graded OpenAPI document"},"blog.archive.browse":$R[20]={message:"Browse the archive"},"blog.archive.monthDescription":$R[21]={message:"All {count} posts published in {month}."},"blog.archive.monthTitle":$R[22]={message:"{month} archive"},"blog.archive.postCount.plural":$R[23]={message:"{count} posts"},"blog.archive.postCount.singular":$R[24]={message:"1 post"},"blog.archive.tagline":$R[25]={message:"Every post on the blog, grouped by year and month."},"blog.archive.viewAllInMonth":$R[26]={message:"View all {count} posts in {month}"},"blog.archive.yearDescription":$R[27]={message:"All {count} posts published in {year}."},"blog.archive.yearTitle":$R[28]={message:"{year} archive"},"blog.author.metaDescription":$R[29]={message:"Blog posts written by {author}."},"blog.author.metaTitle":$R[30]={message:"Posts by {author}"},"blog.author.metaTitlePaged":$R[31]={message:"Posts by {author} â Page {page}"},"blog.author.postCount.plural":$R[32]={message:"{count} posts"},"blog.author.postCount.singular":$R[33]={message:"1 post"},"blog.author.socialLabel":$R[34]={message:"{name} on {platform}"},"blog.authors.dora.bio":$R[35]={message:"Dora Noda is a Software Engineer writing about Web3 infrastru
15cture, blockchain networks, and self-hosting."},"blog.authors.jack.bio":$R[36]={message:"Jack Sim is a Web3 Builder writing about API products and network launches across Sui, Ethereum, and Aptos."},"blog.authors.lark.bio":$R[37]={message:"Lark Birdy is the Chief Bird Officer covering AI research, decentralized AI, and company updates."},"blog.authors.metaDescription":$R[38]={message:"Browse blog posts by author."},"blog.authors.simlis8.bio":$R[39]={message:"SamLis is a Software Engineer covering Aptos developer tooling and API playgrounds."},"blog.authors.tian.bio":$R[40]={message:"Tian Pan is a Community Hacker who wrote about Optimism architecture."},"blog.authors.zainan.bio":$R[41]={message:"Zainan Zhou is the founder of Namefi.io, writing about turning domains into programmable Web3 assets."},"blog.backToAllPosts":$R[42]={message:"Back to all posts"},"blog.browseByTag":$R[43]={message:"Browse by tag"},"blog.heading":$R[44]={message:"Blog"},"blog.lastUpdated":$R[45]={message:"Last updated on {date}"},"blog.meta.description":$R[46]={message:"The latest news, tutorials, and updates from bex.co â Web3 infrastru
15cture, blockchain APIs, and crypto payment tools."},"blog.minRead":$R[47]={message:"{count} min read"},"blog.minUnit":$R[48]={message:"min"},"blog.noPosts":$R[49]={message:"No posts yet."},"blog.pagination.first":$R[50]={message:"First page"},"blog.pagination.goToPage":$R[51]={message:"Page {page}"},"blog.pagination.jumpToArchive":$R[52]={message:"Browse by year"},"blog.pagination.last":$R[53]={message:"Last page"},"blog.pagination.metaTitle":$R[54]={message:"{blog} â Page {page}"},"blog.pagination.navLabel":$R[55]={message:"Pagination"},"blog.pagination.next":$R[56]={message:"Next"},"blog.pagination.pageOf":$R[57]={message:"Page {page} of {total}"},"blog.pagination.prev":$R[58]={message:"Prev"},"blog.relatedArticles":$R[59]={message:"Related articles"},"blog.showing":$R[60]={message:"Showing {start}â{end} of {total} posts"},"blog.subscribe.atom":$R[61]={message:"Atom"},"blog.subscribe.body":$R[62]={message:"New posts land in your reader as soon as they publish. Pick a format â all three carry the same posts."},"blog.subscribe.browseTags":$R[63]={message:"Browse tags"},"blog.subscribe.catchUp":$R[64]={message:"Current feeds keep roughly two days of posts so daily polling does not miss a burst. Older entries stay reachable from the feed's next-page link in readers that follow it, or from the"},"blog.subscribe.copied":$R[65]={message:"Feed URL copied"},"blog.subscribe.copy":$R[66]={message:"Copy feed URL"},"blog.subscribe.heading":$R[67]={message:"Subscribe"},"blog.subscribe.historyLink":$R[68]={message:"blog archive"},"blog.subscribe.json":$R[69]={message:"JSON Feed"},"blog.subscribe.perTag":$R[70]={message:"Following one topic instead?"},"blog.subscribe.rss":$R[71]={message:"RSS"},"blog.tag.metaTitle":$R[72]={message:"Posts tagged \"{tag}\""},"blog.tag.metaTitlePaged":$R[73]={message:"Posts tagged \"{tag}\" â Page {page}"},"blog.tag.postCount.plural":$R[74]={message:"{count} posts tagged with \"{tag}\""},"blog.tag.postCount.singular":$R[75]={message:"1 post tagged with \"{tag}\""},"blog.tagline":$R[76]={message:"Insights, analysis, and updates from the AI agent economy."},"blog.tags.noTags":$R[77]={message:"No tags yet."},"blog.tags.tagline":$R[78]={message:"Browse blog posts by topic."},"blog.tags.tier.growing":$R[79]={message:"Growing topics ({count})"},"blog.tags.tier.major":$R[80]={message:"Major topics ({count})"},"blog.tags.tier.niche":$R[81]={message:"Niche topics ({count})"},"common.cta.freeTierNote":$R[82]={message:"Free tier available. No credit card required."},"common.cta.getApiKeyFree":$R[83]={message:"Get API Key Free"},"common.cta.signUpForFree":$R[84]={message:"Sign Up For Free"},"common.stat.blockchains":$R[85]={message:"Blockchains"},"common.stat.developers":$R[86]={message:"Developers"},"common.stat.uptimeSla":$R[87]={message:"Uptime SLA"},"contentCta.agents.action":$R[88]={message:"Read the agents guide"},"contentCta.agents.body":$R[89]={message:"Autonomous agents hit RPC endpoints very differently than people do. See what bex router handles on their behalf."},"contentCta.agents.title":$R[90]={message:"Give your agents a chain backend"},"contentCta.course.action":$R[91]={message:"Start course"},"contentCta.course.body":$R[92]={message:"A short, practical course â from primitives to production â built from the bex docs and the corpus you just read."},"contentCta.course.title":$R[93]={message:"Learn with a bex course"},"contentCta.payments.action":$R[94]={message:"Read the EdenPay docs"},"contentCta.payments.body":$R[95]={message:"EdenPay handles the payment events, webhooks, and signatures so you don't have to build them."},"contentCta.payments.title":$R[96]={message:"Accept crypto payments"},"contentCta.platform.action":$R[97]={message:"Get started with bex"},"contentCta.platform.body":$R[98]={message:"bex is the open-source, AI-native Render alternative â push a git repo and get a running HTTPS service on your own machines."},"contentCta.platform.title":$R[99]={message:"Run this on infrastructure you own"},"contentCta.pricing.action":$R[100]={message:"See pricing"},"contentCta.pricing.body":$R[101]={message:"Open-source infrastru
15cture for apps and agents â deploy on machines you own, or use the hosted multi-chain API."},"contentCta.pricing.title":$R[102]={message:"Build on bex.co"},"contentCta.router.action":$R[103]={message:"Explore bex router"},"contentCta.router.body":$R[104]={message:"bex router is a single multi-chain gateway â one key, one bill, metered in compute units instead of an account per network."},"contentCta.router.title":$R[105]={message:"One API key for 30+ chains"},"contentLanguage.fallback":$R[106]={message:"This content is available in English. A translation in your selected language is not available yet."},"contentLanguage.readOriginal":$R[107]={message:"Read the English version"},"docs.askChatGPT":$R[108]={message:"Ask in ChatGPT"},"docs.askClaude":$R[109]={message:"Ask in Claude"},"docs.copiedMarkdown":$R[110]={message:"Copied!"},"docs.copyMarkdown":$R[111]={message:"Copy as Markdown"},"docs.copyMarkdownFailed":$R[112]={message:"Copy failed"},"docs.copyMarkdownFailedHint":$R[113]={message:"Could not copy Markdown. Use View as Markdown instead."},"docs.copyPage":$R[114]={message:"Copy page"},"docs.copyingMarkdown":$R[115]={message:"Copyingâ¦"},"docs.lastUpdated":$R[116]={message:"Last updated on {date}"},"docs.markdownSourceEnglish":$R[117]={message:"Copy and View Markdown use the English source for this page."},"docs.onThisPage":$R[118]={message:"On this page"},"docs.print":$R[119]={message:"Print"},"docs.printFailed":$R[120]={message:"Print preparation failed"},"docs.printPreparing":$R[121]={message:"Preparingâ¦"},"docs.sidebar.close":$R[122]={message:"Close docs menu"},"docs.sidebar.label":$R[123]={message:"Documentation"},"docs.sidebar.open":$R[124]={message:"Open docs menu"},"docs.viewMarkdown":$R[125]={message:"View as Markdown"},"docs.viewMarkdownInstead":$R[126]={message:"View as Markdown instead"},"embed.defaultTitle":$R[127]={message:"{provider} embed"},"embed.externalTitle":$R[128]={message:"External embedded content"},"embed.openExternal":$R[129]={message:"Open external content"},"embed.watchOn":$R[130]={message:"Watch on {provider}"},"error.temporarilyUnavailable":$R[131]={message:"We could not load this page just now. This is usually temporary â try again in a moment."},"footer.community.title":$R[132]={message:"Community"},"footer.ecosystem.title":$R[133]={message:"Ecosystem"},"footer.link.about":$R[134]={message:"About Us"},"footer.link.blog":$R[135]={message:"Blog"},"footer.link.docs":$R[136]={message:"Documentation"},"footer.link.home":$R[137]={message:"Home"},"footer.link.item.label.API Marketplace":$R[138]={message:"API Marketplace"},"footer.link.item.label.About Us":$R[139]={message:"About Us"},"footer.link.item.label.Apply Coupon Code":$R[140]={message:"Apply Coupon Code"},"footer.link.item.label.Bex CLI":$R[141]={message:"Bex CLI"},"footer.link.item.label.Blockchain-as-a-Service":$R[142]={message:"Blockchain-as-a-Service"},"footer.link.item.label.Blockroma":$R[143]={message:"Blockroma"},"footer.link.item.label.Blog Archive":$R[144]={message:"Blog Archive"},"footer.link.item.label.Brand Assets":$R[145]={message:"Brand Assets"},"footer.link.item.label.Cuckoo Network":$R[146]={message:"Cuckoo Network"},"footer.link.item.label.Discord":$R[147]={message:"Discord"},"footer.link.item.label.Email":$R[148]={message:"Email"},"footer.link.item.label.Examples":$R[149]={message:"Examples"},"footer.link.item.label.Fewcha Wallet":$R[150]={message:"Fewcha Wallet"},"footer.link.item.label.GitHub":$R[151]={message:"GitHub"},"footer.link.item.label.LinkedIn":$R[152]={message:"LinkedIn"},"footer.link.item.label.Medium":$R[153]={message:"Medium"},"footer.link.item.label.Mirror":$R[154]={message:"Mirror"},"footer.link.item.label.Noves Data":$R[155]={message:"Noves Data"},"footer.link.item.label.Pricing":$R[156]={message:"Pricing"},"footer.link.item.label.Privacy Policy":$R[157]={message:"Privacy Policy"},"footer.link.item.label.Secure3":$R[158]={message:"Secure3"},"footer.link.item.label.Service Status":$R[159]={message:"Service Status"},"footer.link.item.label.Stargately Home":$R[160]={message:"Stargately Home"},"footer.link.item.label.Sui":$R[161]={message:"Sui"},"footer.link.item.label.Switchboard Oracle":$R[162]={message:"Switchboard Oracle"},"footer.link.item.label.Terms of Service":$R[163]={message:"Terms of Service"},"footer.link.item.label.Twitter":$R[164]={message:"Twitter"},"footer.link.item.label.YouTube":$R[165]={message:"YouTube"},"footer.link.pricing":$R[166]={message:"Pricing"},"footer.link.privacy":$R[167]={message:"Privacy Policy"},"footer.link.terms":$R[168]={message:"Terms of Service"},"footer.link.title.Community":$R[169]={message:"Community"},"footer.link.title.Ecosystem":$R[170]={message:"Ecosystem"},"footer.link.title.Navigation":$R[171]={message:"Navigation"},"footer.link.title.Products":$R[172]={message:"Products"},"footer.link.title.Resources":$R[173]={message:"Resources"},"footer.live":$R[174]={message:"Live"},"footer.navAriaLabel":$R[175]={message:"Footer"},"footer.navigation.title":$R[176]={message:"Navigation"},"footer.resources.title":$R[177]={message:"Resources"},"mermaid.renderFailed":$R[178]={message:"This diagram could not be rendered"},"mermaid.retry":$R[179]={message:"Try again"},"navbar.about.label":$R[180]={message:"About"},"navbar.beancount.label":$R[181]={message:"Beancount.io"},"navbar.bex.label":$R[182]={message:"bex"},"navbar.bexRouter.label":$R[183]={message:"bex router"},"navbar.bexSecurity.label":$R[184]={message:"bex security"},"navbar.blog.label":$R[185]={message:"Blog"},"navbar.cli.label":$R[186]={message:"Bex CLI"},"navbar.cryptoPriceApi.label":$R[187]={message:"Crypto Price API"},"navbar.description.beancount":$R[188]={message:"Plain-text double-entry bookkeeping with automatic financial statements."},"navbar.description.bex":$R[189]={message:"Deploy a git repo to a running HTTPS service on infrastru
15cture you own."},"navbar.description.bexRouter":$R[190]={message:"One API key for RPC and REST across 30+ blockchain networks."},"navbar.description.bexSecurity":$R[191]={message:"Scan code repositories for vulnerabilities with evidence-driven AI security agents."},"navbar.description.cli":$R[192]={message:"Deploy, inspect, and code from your terminal."},"navbar.description.cryptoPriceApi":$R[193]={message:"Real-time crypto price data"},"navbar.description.download":$R[194]={message:"Get Bex Desktop for your OS"},"navbar.docs.label":$R[195]={message:"Docs"},"navbar.download.label":$R[196]={message:"Download"},"navbar.group.products":$R[197]={message:"Products"},"navbar.login.label":$R[198]={message:"Login"},"navbar.menu.close":$R[199]={message:"Close menu"},"navbar.menu.open":$R[200]={message:"Open menu"},"navbar.pricing.label":$R[201]={message:"Pricing"},"navbar.products.label":$R[202]={message:"Products"},"navbar.signup.label":$R[203]={message:"Sign Up"},"notFound.didYouMean":$R[204]={message:"Did you mean one of these?"},"notFound.goToBlog":$R[205]={message:"Go to Blog"},"notFound.goToHome":$R[206]={message:"Go to Home"},"notFound.searchSite":$R[207]={message:"Search the site"},"search.empty":$R[208]={message:"Type a query to start searching."},"search.error.http":$R[209]={message:"Search could not be completed. Try again in a moment."},"search.error.malformed":$R[210]={message:"Search returned an unexpected response. Try again."},"search.error.network":$R[211]={message:"Search is temporarily unavailable. Check your connection and try again."},"search.error.retry":$R[212]={message:"Try again"},"search.error.timeout":$R[213]={message:"Search took too long to respond. Try again."},"search.error.unauthorized":$R[214]={message:"Search is unavailable with the current configuration."},"search.header.fallback":$R[215]={message:"Open search page"},"search.header.loading":$R[216]={message:"Search (loading)"},"search.header.retry":$R[217]={message:"Retry search widget"},"search.heading":$R[218]={message:"Search"},"search.meta.description":$R[219]={message:"Search bex.co documentation, blog posts, and guides."},"search.meta.title":$R[220]={message:"Search"},"search.noResults":$R[221]={message:"No results found for â{query}â."},"search.pagination.navLabel":$R[222]={message:"Search results pages"},"search.pagination.next":$R[223]={message:"Next"},"search.pagination.page":$R[224]={message:"Page {page}"},"search.pagination.pageOf":$R[225]={message:"Page {page} of {total}"},"search.pagination.prev":$R[226]={message:"Previous"},"search.placeholder":$R[227]={message:"Search the documentation"},"search.resultsCap":$R[228]={message:"Result totals may be capped by the search provider."},"search.resultsCount":$R[229]={message:"{count} results for â{query}â"},"search.searching":$R[230]={message:"Searchingâ¦"},"search.staleResults":$R[231]={message:"Showing previous results while search updates."},"search.unconfigured":$R[232]={message:"Search is not configured on this site yet."},"share.copied":$R[233]={message:"Link copied"},"share.copy":$R[234]={message:"Copy link"},"share.hackernews":$R[235]={message:"Share on Hacker News"},"share.label":$R[236]={message:"Share"},"share.linkedin":$R[237]={message:"Share on LinkedIn"},"share.reddit":$R[238]={message:"Share on Reddit"},"share.x":$R[239]={message:"Share on X"},"site.tagline":$R[240]={message:"The cloud your agents can actually run"},"theme.CodeBlock.copied":$R[241]={message:"Copied"},"theme.CodeBlock.copy":$R[242]={message:"Copy"},"theme.CodeBlock.copyButtonAriaLabel":$R[243]={message:"Copy code to clipboard"},"theme.ErrorPageContent.title":$R[244]={message:"This page crashed."},"theme.ErrorPageContent.tryAgain":$R[245]={message:"Try again"},"theme.NavBar.navAriaLabel":$R[246]={message:"Main"},"theme.NavBar.secondaryNavAriaLabel":$R[247]={message:"Utility"},"theme.NotFound.p1":$R[248]={message:"We could not find what you were looking for."},"theme.NotFound.p2":$R[249]={message:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."},"theme.NotFound.title":$R[250]={message:"Page Not Found"},"theme.admonition.caution":$R[251]={message:"caution"},"theme.admonition.danger":$R[252]={message:"danger"},"theme.admonition.info":$R[253]={message:"info"},"theme.admonition.note":$R[254]={message:"note"},"theme.admonition.tip":$R[255]={message:"tip"},"theme.admonition.warning":$R[256]={message:"warning"},"theme.blog.archive.title":$R[257]={message:"Archive"},"theme.blog.author.noPosts":$R[258]={message:"This author has not written any posts yet."},"theme.blog.authorsList.pageTitle":$R[259]={message:"Authors"},"theme.blog.authorsList.viewAll":$R[260]={message:"View all authors"},"theme.blog.post.paginator.navAriaLabel":$R[261]={message:"Blog post page navigation"},"theme.blog.post.paginator.newerPost":$R[262]={message:"Newer post"},"theme.blog.post.paginator.olderPost":$R[263]={message:"Older post"},"theme.colorToggle.ariaLabel":$R[264]={message:"Switch between dark and light mode (currently {mode})"},"theme.colorToggle.ariaLabel.mode.dark":$R[265]={message:"dark mode"},"theme.colorToggle.ariaLabel.mode.light":$R[266]={message:"light mode"},"theme.colorToggle.ariaLabel.mode.system":$R[267]={message:"system mode"},"theme.docs.breadcrumbs.home":$R[268]={message:"Home page"},"theme.docs.breadcrumbs.navAriaLabel":$R[269]={message:"Breadcrumbs"},"theme.docs.paginator.navAriaLabel":$R[270]={message:"Docs pages"},"theme.docs.paginator.next":$R[271]={message:"Next"},"theme.docs.paginator.previous":$R[272]={message:"Previous"},"theme.navbar.mobileLanguageDropdown.label":$R[273]={message:"Languages"},"theme.routeAnnounced":$R[274]={message:"Navigated to {title}"},"theme.skipToContent":$R[275]={message:"Skip to main content"},"theme.table.scrollRegion":$R[276]={message:"Scrollable table"},"theme.tags.tagsPageLink":$R[277]={message:"View all tags"},"theme.tags.tagsPageTitle":$R[278]={message:"Tags"}
15,"visualInspect.close":$R[279]={message:"Close"},"visualInspect.diagram":$R[280]={message:"Enlarge diagram"},"visualInspect.failed":$R[281]={message:"This visual could not load. Try again."},"visualInspect.help":$R[282]={message:"Zoom, then scroll to explore. Enlarging does not add detail to the source."},"visualInspect.image":$R[283]={message:"Enlarge image"},"visualInspect.in":$R[284]={message:"Zoom in"},"visualInspect.out":$R[285]={message:"Zoom out"},"visualInspect.pan":$R[286]={message:"Scrollable visual"},"visualInspect.reset":$R[287]={message:"Reset"},"visualInspect.retry":$R[288]={message:"Retry"},"navbar.resources.label":$R[289]={message:"Resources"},"navbar.group.platform":$R[290]={message:"Platform & APIs"},"navbar.group.appsTools":$R[291]={message:"Apps & tools"},"navbar.group.learn":$R[292]={message:"Learn & build"},"navbar.group.company":$R[293]={message:"Company"},"navbar.examples.label":$R[294]={message:"Examples"},"navbar.changelog.label":$R[295]={message:"Changelog"},"navbar.tools.label":$R[296]={message:"Tools"},"navbar.description.tools":$R[297]={message:"Check your render.yaml against Bex in the browser."},"footer.link.item.label.Tools":$R[298]={message:"Tools"},"contentCta.tools.title":$R[299]={message:"Check your move before you migrate"},"contentCta.tools.body":$R[300]={message:"Free browser tools: check a render.yaml or your Render scripts against bex, or turn a Heroku app or docker-compose.yml into a draft render.yaml. Nothing you paste leaves your browser."},"contentCta.tools.action":$R[301]={message:"Open the migration tools"},"footer.link.title.Learning":$R[302]={message:"Learning"},"footer.link.title.Legal":$R[303]={message:"Legal"}}},ssr:!0},$R[304]={i:"�($locale)�",u:1791587670669,s:"success",l:$R[305]={locale:"en",messages:$R[16]},ssr:!0},$R[306]={i:"�($locale)�blog��blog�",u:1791587670682,s:"success",l:$R[307]=Object.assign(Object.create(null),{posts:$R[308]=[$R[309]=Object.assign(Object.create(null),{slug:"railway-ai-native-per-second-pricing-vs-hetzner",year:"2026",month:"10",day:"05",date:"2026-10-05",title:"Railway's $100M AI-Native Cloud vs a $42 Hetzner Box: A Worked Bill Recompute",description:"Railway's $100M AI-native cloud pitch promises 50% savings over hyperscalers, but a line-by-line recompute of a steady API, worker, and Postgres puts the per-second meter at $106.50/month against $42.60 for a flat Hetzner box, with the crossover near 25% utilization.",tags:$R[310]=["PaaS","cost-optimization","self-hosting","migration"],keywords:$R[311]=["Railway pricing","AI-native cloud","Hetzner vs Railway","PaaS cost comparison","per-second billing","cloud cost optimization","self-hosting costs"],image:"",authors:$R[312]=["dora"],excerpt:"Railway raised \\$100 million to become the AI-native cloud, charging \\$0.00000772 per vCPU-second â a meter so fine it sounds like it must be cheap. I recomputed the same steady API-plus-worker-plus-",readingTime:9,dateModified:null,authorLinks:$R[313]=[$R[314]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[315]=Object.assign(Object.create(null),{slug:"lets-encrypt-tlsclient-shutdown-mtls-migration",year:"2026",month:"10",day:"05",date:"2026-10-05",title:"Let's Encrypt Ended Free mTLS Client Certs on July 8 â the Last Ones Expire This Week",description:"Let's Encrypt's last clientAuth certificates expire the first week of October 2026. A five-minute audit to find certs that renew into rejection, and a decision table for moving client-auth issuance to SPIRE, a mesh CA, or private PKI.",tags:$R[316]=["security","Kubernetes","self-hosting","PaaS"],keywords:$R[317]=["Let's Encrypt tlsclient shutdown","mTLS client certificates","clientAuth EKU expiry","SPIFFE SPIRE migration","cert-manager client auth","private PKI","service mesh mTLS"],image:"",authors:$R[318]=["dora"],excerpt:"The last free mTLS client certificates on the public internet expire this week. On July 8, 2026, Let's Encrypt shut down its `tlsclient` ACME profile â the final pathway to a publicly trusted certifi",readingTime:10,dateModified:null,authorLinks:$R[319]=[$R[320]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[321]=Object.assign(Object.create(null),{slug:"k0rdent-kairos-bindy-reference-idp-stack",year:"2026",month:"10",day:"05",date:"2026-10-05",title:"Kairos + k0rdent + bindy: Is This the 2026 Reference IDP a Small Platform Team Should Copy?",description:"k0rdent's first year plus RBC's 50-cluster Kairos build log add up to a credible 2026 reference IDP â adopt the fleet layers (immutable nodes, CAPI lifecycle, OpenCost chargeback) and diverge at the app layer.",tags:$R[322]=["Kubernetes","self-hosting","PaaS","infrastru
15cture"],keywords:$R[323]=["k0rdent","Kairos","Cluster API","internal developer platform","k0s","GitOps","OpenCost","platform engineering"],image:"",authors:$R[324]=["dora"],excerpt:"A regulated bank runs 50-plus Kubernetes clusters across VMware and multiple clouds, every node booting from a versioned OCI image, every cluster a reconciled CRD, every DNS record a Git commit. No t",readingTime:11,dateModified:null,authorLinks:$R[325]=[$R[326]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[327]=Object.assign(Object.create(null),{slug:"tailscale-aperture-llm-keys-network-identity",year:"2026",month:"10",day:"04",date:"2026-10-04",title:"Tailscale's Aperture Puts LLM API Keys Behind Network Identity Instead of Env Vars",description:"Tailscale's Aperture replaces per-agent LLM API keys with tailnet identity, per-user audit logs, and token-spend attribution. Here's the five-step mechanism, why a mesh vendor built a credential broker, and the parts list for a self-hosted equivalent.",tags:$R[328]=["AI agents","LLM","identity","self-hosting","security"],keywords:$R[329]=["Tailscale Aperture","AI gateway","network identity","API key security","spend attribution","WireGuard","self-hosted gateway","MCP"],image:"",authors:$R[330]=["dora"],excerpt:"Point your co
15ding agent at `http://ai`, hand it a fake key, and it just works â the real Anthropic key never leaves the gateway, and every token gets billed to the human or device that actually spent",readingTime:10,dateModified:null,authorLinks:$R[331]=[$R[332]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[333]=Object.assign(Object.create(null),{slug:"suse-mcp-portfolio-agent-infra-interface",year:"2026",month:"10",day:"04",date:"2026-10-04",title:"SUSE Put MCP Across Its Whole Portfolio: What a Vendor-Blessed Agent-to-Infra Interface Means for Your PaaS's Own MCP Server",description:"SUSE embedded MCP servers across Rancher Prime and Multi-Linux Manager with AWS, n8n, Revenium, and Stacklok aboard. Here is what a vendor-blessed agent-to-infra interface validates for a PaaS agent API, where its patch-and-monitor scope stops short of the git-push deploy surface, and a checklist for building that surface yourself.",tags:$R[334]=["Model Context Protocol","AI agents","Kubernetes","PaaS"],keywords:$R[335]=["SUSE","Model Context Protocol","MCP server","AI agents","Kubernetes","Rancher","PaaS","self-hosted"],image:"",authors:$R[336]=["dora"],excerpt:"On April 22, 2026, SUSE did something no infrastructure vendor had done before: it embedded a Model Context Protocol server across its portfolio â Rancher Prime, Multi-Linux Manager, and SUSE Linux E",readingTime:12,dateModified:null,authorLinks:$R[337]=[$R[338]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[339]=Object.assign(Object.create(null),{slug:"superagent-sandbox-benchmark-cold-start-concurrency",year:"2026",month:"10",day:"04",date:"2026-10-04",title:"0.27s at 37%: What the August Sandbox Burst Benchmark Really Says About Cold-Start Claims",description:"Daytona's 0.27-second median at 37% success, Modal at 0.88s, E2B at 1.61s: a guided reading of the August burst benchmark, a four-question decoder for any cold-start slide, and the concurrent bar a self-hosted Firecracker pool must clear to claim parity.",tags:$R[340]=["AI agents","self-hosting","cloud infrastructure","developer tools"],keywords:$R[341]=["sandbox cold start","AI code sandbox","Daytona","Modal","
15E2B","Firecracker","time to interactive","burst concurrency"],image:"",authors:$R[342]=["dora"],excerpt:"The fastest sandbox in the August burst benchmark goes from `create()` to a working shell in 0.27 seconds â when it works, which was 37 times out of 100. Every other provider in the same run complete",readingTime:12,dateModified:null,authorLinks:$R[343]=[$R[344]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[345]=Object.assign(Object.create(null),{slug:"sonobuoy-conformance-fleet-gate-caph",year:"2026",month:"10",day:"04",date:"2026-10-04",title:"Sonobuoy Conformance as a Fleet Gate: Don't Schedule Tenants on an Unproven Node",description:"A two-tier Sonobuoy gate for CAPH-managed Hetzner fleets: taint every new machine at join, prove it with a focused non-disruptive conformance slice, and reserve full certified-conformance for template promotion on a canary cluster.",tags:$R[346]=["Kubernetes","self-hosting","PaaS","tutorial"],keywords:$R[347]=["Sonobuoy","CNCF conformance","Cluster API","CAPH","Hetzner Kubernetes","node readiness taints","e2e testing","Hydrophone"],image:"",authors:$R[348]=["dora"],excerpt:"Cilium's own documentation admits something most fleet operators learn the hard way: when a new node joins, application pods can be scheduled onto it before the Cilium agent is ready to manage them,",readingTime:9,dateModified:null,authorLinks:$R[349]=[$R[350]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[351]=Object.assign(Object.create(null),{slug:"serviceaccount-token-image-pulls",year:"2026",month:"10",day:"04",date:"2026-10-04",title:"Stop Copying Registry Passwords Into Every Namespace: Kubernetes 1.34 ServiceAccount Image Pulls in Practice",description:"Kubernetes 1.34's beta ServiceAccount token flow replaces per-namespace imagePullSecrets with short-lived, workload-bound pull credentials â how to wire the registry side, bind ServiceAccounts, handle rotation, and test the failure modes before deleting static secrets.",tags:$R[352]=["Kubernetes","security","self-hosting","PaaS","tutorial"],keywords:$R[353]=["kubernetes 1.34","imagePullSecrets","ServiceAccount tokens","KEP-4412","credential providers","container registry security","multi-tenant Kubernetes","workload identity"],image:"",authors:$R[354]=["dora"],excerpt:"The most over-shared credential in a multi-tenant Kubernetes cluster is the one that unlocks every tenant's container images. Today it usually lives as a long-lived `imagePullSecret`, copied into nam",readingTime:12,dateModified:null,authorLinks:$R[355]=[$R[356]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"}),$R[357]=Object.assign(Object.create(null),{slug:"pocketbasecloud-fixed-price-vs-per-project-metering",year:"2026",month:"10",day:"04",date:"2026-10-04",title:"Unlimited Apps, One Flat Bill: What PocketBaseCloud's $25 Show HN Pitch Reveals About Per-Project Pricing",description:"PocketBaseCloud's Show HN offers unlimited small apps on a $25 flat slice â we work the N-app math against Supabase per-project metering, Vercel usage billing, and a $6 self-hosted box.",tags:$R[358]=["self-hosting","PaaS","cost-optimization","hosting"],keywords:$R[359]=["pocketbase","fixed pricing","per-project billing","supabase pricing","vercel pricing","side projects","self-hosting","backend as a service"],image:"",authors:$R[360]=["dora"],excerpt:"Your side-project count just 6x'd. Your bill noticed before you did.\n\nThat is the entire pitch behind [PocketBaseCloud's September Show HN](https://news.ycombinator.com/item?id=49626282): unlimited s",readingTime:10,dateModified:null,authorLinks:$R[361]=[$R[362]=Object.assign(Object.create(null),{key:"dora",name:"Dora Noda",title:"Software Engineer",url:"https://github.com/doranoda",image_url:"https://avatars.githubusercontent.com/u/38552114?v=4",__typename:"AuthorDetail"})],__typename:"BlogPostMeta"})],totalCount:3495,page:1,pageSize:9,__typename:"BlogPostsPage"}),ssr:!0}],lastMatchId:"�($locale)�blog��blog�"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
15<script type="module" async="" src="/assets/index-C1toZImK.js"></script>
15<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"28eae4cc785a4b3b90b734133811535e","r":1,"spa":2}' crossorigin="anonymous"></script>
15 16</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.