<!DOCTYPE html><html lang="en" data-theme="dark" class="astro-olr72t43"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="theme-color" content="#0a0a0a"><title>Releases — hal0</title><meta name="description" content="hal0 releases: the latest stable and the current pre-release line, with install and upgrade commands. hal0 is pre-1.0 — the active development line is labelled pre-release."><link rel="canonical" href="https://hal0.dev/releases/"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="apple-touch-icon" href="/brand/logo-halo-dark-favico.png"><link rel="mask-icon" href="/favicon.svg" color="#feaf00"><!-- Preload critical latin web fonts so above-the-fold content
         doesn't reflow when the swap finally arrives. --><link rel="preload" href="/_astro/geist-latin-wght-normal.Dm3htQBi.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/_astro/jetbrains-mono-latin-700-normal.BYuf6tUa.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2" as="font" type="font/woff2" crossorigin><meta property="og:title" content="Releases — hal0"><meta property="og:description" content="hal0 releases: the latest stable and the current pre-release line, with install and upgrade commands. hal0 is pre-1.0 — the active development line is labelled pre-release."><meta property="og:type" content="website"><meta property="og:url" content="https://hal0.dev/releases/"><meta property="og:site_name" content="hal0"><meta property="og:image" content="https://hal0.dev/og-default.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="hal0 — local AI inference for AMD Strix Halo"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://hal0.dev/og-default.png"><link rel="stylesheet" href="/_astro/Wordmark.DecNp_yd.css">
<style>.hal0-nav:where(.astro-olr72t43){--hal0-nav-bg: transparent;--hal0-nav-shadow: 0 0 0 0 transparent;--hal0-nav-filament: 0;background-color:var(--hal0-nav-bg);box-shadow:var(--hal0-nav-shadow);transition:background-color .2s var(--hal0-ease, ease),backdrop-filter .2s var(--hal0-ease, ease),box-shadow .2s var(--hal0-ease, ease);position:sticky;top:0}.hal0-nav:where(.astro-olr72t43)[data-tone=solid],.hal0-nav:where(.astro-olr72t43)[data-tone=transparent][data-scrolled=true]{--hal0-nav-bg: rgba(10, 10, 10, .85);--hal0-nav-shadow: 0 1px 24px -10px rgba(255, 176, 0, .28);--hal0-nav-filament: 1;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.hal0-nav:where(.astro-olr72t43):after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(to right,transparent 0%,color-mix(in srgb,var(--hal0-accent) 60%,transparent) 50%,transparent 100%);opacity:var(--hal0-nav-filament, 0);transition:opacity .2s var(--hal0-ease, ease);pointer-events:none}@media(prefers-reduced-motion:reduce){.hal0-nav:where(.astro-olr72t43),.hal0-nav:where(.astro-olr72t43):after{transition:none}}.hal0-burger:where(.astro-olr72t43){display:inline-flex;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:9px;border:1px solid var(--hal0-border);border-radius:8px;background:transparent;cursor:pointer}.hal0-burger:where(.astro-olr72t43) span:where(.astro-olr72t43){display:block;height:1.5px;width:100%;background:var(--hal0-fg-muted);border-radius:2px;transition:transform .2s var(--hal0-ease, ease),opacity .15s ease}.hal0-burger:where(.astro-olr72t43).open span:where(.astro-olr72t43):nth-child(1){transform:translateY(6.5px) rotate(45deg)}.hal0-burger:where(.astro-olr72t43).open span:where(.astro-olr72t43):nth-child(2){opacity:0}.hal0-burger:where(.astro-olr72t43).open span:where(.astro-olr72t43):nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}.hal0-mobile-menu:where(.astro-olr72t43){list-style:none;margin:0;padding:8px 24px 16px;display:flex;flex-direction:column;gap:2px;background:#0a0a0af7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--hal0-border);box-shadow:0 12px 30px -12px #000000b3}.hal0-mobile-menu:where(.astro-olr72t43)[hidden]{display:none}.hal0-mobile-menu:where(.astro-olr72t43) a:where(.astro-olr72t43){display:block;padding:12px 4px;font-family:var(--hal0-font-mono);font-size:.95rem;color:var(--hal0-fg-muted);text-decoration:none;border-bottom:1px solid var(--hal0-border)}.hal0-mobile-menu:where(.astro-olr72t43) li:where(.astro-olr72t43):last-child a:where(.astro-olr72t43){border-bottom:none}.hal0-mobile-menu:where(.astro-olr72t43) a:where(.astro-olr72t43):hover{color:var(--hal0-fg)}
</style><script type="module" src="/_astro/page.B_tncCx8.js"></script></head> <body class="min-h-screen bg-hal0-bg text-hal0-fg antialiased astro-olr72t43"> <header class="hal0-nav sticky top-0 z-40 astro-olr72t43" data-tone="solid" data-scrolled="false"> <nav class="mx-auto flex max-w-6xl items-center justify-between px-6 py-4 astro-olr72t43"> <a href="/" class="flex items-center gap-2 astro-olr72t43"> <span class="wordmark inline-flex items-center leading-none text-xl astro-olr72t43"> <svg viewBox="160 480 1340 500" role="img" aria-label="hal0" height="1em" style="overflow: visible;" xmlns="http://www.w3.org/2000/svg"> <g transform="translate(150 194)" fill="currentColor"> <g transform="translate(0 713.543886)"> <path d="M 247.515625 -28.328125 C 247.515625 -20.523438 244.847656 -13.851562 239.515625 -8.3125 C 234.179688 -2.769531 227.613281 0 219.8125 0 L 202.578125 0 C 194.773438 0 188.203125 -2.769531 182.859375 -8.3125 C 177.523438 -13.851562 174.859375 -20.523438 174.859375 -28.328125 L 174.859375 -237.046875 C 174.859375 -239.515625 173.9375 -241.566406 172.09375 -243.203125 C 170.25 -244.847656 168.300781 -245.671875 166.25 -245.671875 L 106.515625 -245.671875 C 104.460938 -245.671875 102.515625 -244.847656 100.671875 -243.203125 C 98.828125 -241.566406 97.90625 -239.515625 97.90625 -237.046875 L 97.90625 -28.328125 C 97.90625 -20.523438 95.234375 -13.851562 89.890625 -8.3125 C 84.554688 -2.769531 77.988281 0 70.1875 0 L 52.953125 0 C 45.148438 0 38.476562 -2.769531 32.9375 -8.3125 C 27.394531 -13.851562 24.625 -20.523438 24.625 -28.328125 L 24.625 -387.90625 C 24.625 -396.113281 27.394531 -402.882812 32.9375 -408.21875 C 38.476562 -413.550781 45.148438 -416.21875 52.953125 -416.21875 L 70.1875 -416.21875 C 77.988281 -416.21875 84.554688 -413.550781 89.890625 -408.21875 C 95.234375 -402.882812 97.90625 -396.113281 97.90625 -387.90625 L 97.90625 -326.328125 C 97.90625 -324.273438 98.828125 -322.53125 100.671875 -321.09375 C 102.515625 -319.65625 104.460938 -318.9375 106.515625 -318.9375 L 179.171875 -318.9375 C 191.898438 -318.9375 203.394531 -315.859375 213.65625 -309.703125 C 223.914062 -303.546875 232.125 -295.234375 238.28125 -284.765625 C 244.4375 -274.296875 247.515625 -262.703125 247.515625 -249.984375 Z M 247.515625 -28.328125"></path> </g> <g transform="translate(272.763287 713.543886)"> <path d="M 247.515625 -68.953125 C 247.515625 -49.660156 240.84375 -33.34375 227.5 -20 C 214.164062 -6.664062 198.054688 0 179.171875 0 L 93.59375 0 C 74.707031 0 58.488281 -6.664062 44.9375 -20 C 31.394531 -33.34375 24.625 -49.660156 24.625 -68.953125 L 24.625 -136.078125 C 24.625 -148.796875 27.804688 -160.179688 34.171875 -170.234375 C 40.535156 -180.296875 48.847656 -188.40625 59.109375 -194.5625 C 69.367188 -200.71875 80.863281 -203.796875 93.59375 -203.796875 L 166.25 -203.796875 C 168.300781 -203.796875 170.25 -204.617188 172.09375 -206.265625 C 173.9375 -207.910156 174.859375 -209.960938 174.859375 -212.421875 L 174.859375 -237.046875 C 174.859375 -239.515625 173.9375 -241.566406 172.09375 -243.203125 C 170.25 -244.847656 168.300781 -245.671875 166.25 -245.671875 L 93.59375 -245.671875 C 85.789062 -245.671875 79.117188 -248.335938 73.578125 -253.671875 C 68.035156 -259.015625 65.265625 -265.582031 65.265625 -273.375 L 65.265625 -290 C 65.265625 -298.207031 68.035156 -305.082031 73.578125 -310.625 C 79.117188 -316.164062 85.789062 -318.9375 93.59375 -318.9375 L 179.171875 -318.9375 C 191.898438 -318.9375 203.394531 -315.859375 213.65625 -309.703125 C 223.914062 -303.546875 232.125 -295.234375 238.28125 -284.765625 C 244.4375 -274.296875 247.515625 -262.703125 247.515625 -249.984375 Z M 174.859375 -80.65625 L 174.859375 -123.140625 C 174.859375 -125.191406 173.9375 -127.035156 172.09375 -128.671875 C 170.25 -130.316406 168.300781 -131.140625 166.25 -131.140625 L 106.515625 -131.140625 C 104.460938 -131.140625 102.515625 -130.316406 100.671875 -128.671875 C 98.828125 -127.035156 97.90625 -125.191406 97.90625 -123.140625 L 97.90625 -80.65625 C 97.90625 -78.601562 98.828125 -76.753906 100.671875 -75.109375 C 102.515625 -73.472656 104.460938 -72.65625 106.515625 -72.65625 L 166.25 -72.65625 C 168.300781 -72.65625 170.25 -73.472656 172.09375 -75.109375 C 173.9375 -76.753906 174.859375 -78.601562 174.859375 -80.65625 Z M 174.859375 -80.65625"></path> </g> <g transform="translate(545.526555 713.543886)"> <path d="M 136.6875 -28.328125 C 136.6875 -20.523438 133.914062 -13.851562 128.375 -8.3125 C 122.832031 -2.769531 116.160156 0 108.359375 0 L 92.96875 0 C 74.09375 0 57.878906 -6.664062 44.328125 -20 C 30.785156 -33.34375 24.015625 -49.660156 24.015625 -68.953125 L 24.015625 -387.90625 C 24.015625 -396.113281 26.785156 -402.882812 32.328125 -408.21875 C 37.867188 -413.550781 44.539062 -416.21875 52.34375 -416.21875 L 69.578125 -416.21875 C 77.378906 -416.21875 84.050781 -413.550781 89.59375 -408.21875 C 95.132812 -402.882812 97.90625 -396.113281 97.90625 -387.90625 L 97.90625 -80.65625 C 97.90625 -75.320312 100.363281 -72.65625 105.28125 -72.65625 L 108.359375 -72.65625 C 116.160156 -72.65625 122.832031 -69.984375 128.375 -64.640625 C 133.914062 -59.304688 136.6875 -52.535156 136.6875 -44.328125 Z M 136.6875 -28.328125"></path> </g> </g> <g transform="translate(671 518)" fill="var(--hal0-accent, #feaf00)"> <g transform="translate(183.175087 1.720401)"> <path d="M 301.6875 188.453125 C 314.144531 188.523438 324.09375 191.941406 331.53125 198.703125 C 338.96875 205.460938 342.660156 214.578125 342.609375 226.046875 C 342.546875 237.503906 338.757812 246.578125 331.25 253.265625 C 323.738281 259.953125 313.753906 263.257812 301.296875 263.1875 L 226.5625 262.796875 C 214.101562 262.722656 204.15625 259.304688 196.71875 252.546875 C 189.28125 245.785156 185.59375 236.675781 185.65625 225.21875 C 185.707031 213.75 189.488281 204.671875 197 197.984375 C 204.507812 191.296875 214.492188 187.988281 226.953125 188.0625 Z M 152.546875 127.859375 C 121.648438 127.691406 97.0625 136.28125 78.78125 153.625 C 60.5 170.976562 51.28125 194.601562 51.125 224.5 C 50.957031 254.394531 59.921875 278.109375 78.015625 295.640625 C 96.109375 313.171875 120.601562 322.019531 151.5 322.1875 L 383.171875 323.421875 C 414.066406 323.585938 438.65625 315 456.9375 297.65625 C 475.21875 280.320312 484.441406 256.707031 484.609375 226.8125 C 484.765625 196.914062 475.796875 173.195312 457.703125 155.65625 C 439.609375 138.113281 415.113281 129.257812 384.21875 129.09375 Z M 152.90625 60.609375 L 384.578125 61.84375 C 408.992188 61.976562 431.144531 65.957031 451.03125 73.78125 C 470.925781 81.601562 487.804688 92.648438 501.671875 106.921875 C 515.535156 121.203125 526.148438 138.453125 533.515625 158.671875 C 540.890625 178.890625 544.507812 201.707031 544.375 227.125 C 544.238281 252.53125 540.378906 275.300781 532.796875 295.4375 C 525.210938 315.570312 514.410156 332.703125 500.390625 346.828125 C 486.367188 360.960938 469.375 371.835938 449.40625 379.453125 C 429.4375 387.078125 407.242188 390.820312 382.828125 390.6875 L 151.15625 389.453125 C 126.738281 389.328125 104.707031 385.347656 85.0625 377.515625 C 65.414062 369.691406 48.65625 358.640625 34.78125 344.359375 C 20.90625 330.078125 10.160156 312.703125 2.546875 292.234375 C -5.054688 271.765625 -8.789062 249.078125 -8.65625 224.171875 C -8.519531 198.753906 -4.664062 175.976562 2.90625 155.84375 C 10.488281 135.707031 21.289062 118.570312 35.3125 104.4375 C 49.34375 90.3125 66.34375 79.441406 86.3125 71.828125 C 106.289062 64.222656 128.488281 60.484375 152.90625 60.609375 Z M 152.90625 60.609375"></path> </g> </g> </svg> </span> <span class="sr-only astro-olr72t43">— home</span> </a> <ul class="hidden items-center gap-7 font-mono text-sm text-hal0-fg-muted md:flex astro-olr72t43"> <li class="astro-olr72t43"><a class="transition hover:text-hal0-fg astro-olr72t43" href="/docs/">docs</a></li> <li class="astro-olr72t43"><a class="transition hover:text-hal0-fg astro-olr72t43" href="/blog">blog</a></li> <li class="astro-olr72t43"><a class="transition hover:text-hal0-fg astro-olr72t43" href="/changelog">changelog</a></li> <li class="astro-olr72t43"><a class="transition hover:text-hal0-fg astro-olr72t43" href="/releases">releases</a></li> <li class="astro-olr72t43"><a class="transition hover:text-hal0-fg astro-olr72t43" href="/#roadmap">roadmap</a></li> <li class="astro-olr72t43"> <a class="transition hover:text-hal0-fg astro-olr72t43" href="https://github.com/hal0ai/hal0" rel="noopener">github</a> </li> <li class="astro-olr72t43"> <a class="flex items-center transition hover:text-hal0-fg astro-olr72t43" href="https://discord.gg/7M4y6dcUyq" rel="noopener" aria-label="Join the hal0 Discord" title="Discord"> <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true" class="astro-olr72t43"><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 0 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" class="astro-olr72t43"></path></svg> <span class="sr-only astro-olr72t43">Discord</span> </a> </li> </ul> <button id="nav-toggle" class="hal0-burger md:hidden astro-olr72t43" type="button" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-menu"> <span class="astro-olr72t43"></span><span class="astro-olr72t43"></span><span class="astro-olr72t43"></span> </button> </nav> <ul id="mobile-menu" class="hal0-mobile-menu md:hidden astro-olr72t43" hidden> <li class="astro-olr72t43"><a href="/docs/" class="astro-olr72t43">docs</a></li> <li class="astro-olr72t43"><a href="/blog" class="astro-olr72t43">blog</a></li> <li class="astro-olr72t43"><a href="/changelog" class="astro-olr72t43">changelog</a></li> <li class="astro-olr72t43"><a href="/releases" class="astro-olr72t43">releases</a></li> <li class="astro-olr72t43"><a href="/#roadmap" class="astro-olr72t43">roadmap</a></li> <li class="astro-olr72t43"><a href="https://github.com/hal0ai/hal0" rel="noopener" class="astro-olr72t43">github</a></li> <li class="astro-olr72t43"><a href="https://discord.gg/7M4y6dcUyq" rel="noopener" class="astro-olr72t43">discord</a></li> </ul> </header> <main class="astro-olr72t43">  <section class="mx-auto max-w-4xl px-6 pt-16 pb-8"> <p class="font-mono text-xs uppercase tracking-wider text-hal0-accent">downloads</p> <h1 class="mt-3 text-4xl font-semibold tracking-tight text-hal0-fg md:text-5xl">Releases</h1> <p class="mt-4 max-w-2xl text-pretty text-hal0-fg-muted">
hal0 is pre-1.0. The active development line ships as <strong class="text-hal0-fg">pre-release</strong>
builds; the last cut marked stable is below. Pick the channel that matches your appetite for change.
</p> </section> <section class="mx-auto grid max-w-4xl gap-5 px-6 md:grid-cols-2"> <!-- Latest pre-release (the current dev line) --> <article class="relative flex flex-col rounded-lg border border-hal0-accent/30 bg-hal0-bg-elevated p-6"> <div class="flex items-center gap-2"> <span class="rounded border border-hal0-accent/40 bg-hal0-accent/10 px-2 py-0.5 font-mono text-[11px] uppercase tracking-wider text-hal0-accent">current dev line</span> </div> <h2 class="mt-3 font-mono text-2xl font-semibold text-hal0-fg">v0.8.5b2</h2> <p class="mt-1 font-mono text-xs text-hal0-fg-dim">released 2026-07-04</p> <p class="mt-3 text-sm text-hal0-fg-muted">
The newest pre-release. Tracks the work documented across the site. Not GA — expect breaking changes between alphas.
</p> <div class="mt-4 flex flex-wrap gap-4 font-mono text-xs"> <a class="text-hal0-accent hover:text-hal0-accent-hover" href="/changelog#v0.8.5b2">what's new →</a> <a class="text-hal0-fg-muted hover:text-hal0-fg" href="https://github.com/hal0ai/hal0/releases/tag/v0.8.5b2" rel="noopener">github release ↗</a> </div> </article> <!-- Latest stable --> <article class="relative flex flex-col rounded-lg border border-hal0-border bg-hal0-bg-elevated p-6"> <div class="flex items-center gap-2"> <span class="rounded border border-emerald-500/40 bg-emerald-500/10 px-2 py-0.5 font-mono text-[11px] uppercase tracking-wider text-emerald-300">last stable</span> </div> <h2 class="mt-3 font-mono text-2xl font-semibold text-hal0-fg">0.9.7</h2> <p class="mt-1 font-mono text-xs text-hal0-fg-dim">released 2026-07-11</p> <p class="mt-3 text-sm text-hal0-fg-muted">
The most recent release cut without a pre-release tag. Older and more settled than the dev line.
</p> <div class="mt-4 flex flex-wrap gap-4 font-mono text-xs"> <a class="text-hal0-accent hover:text-hal0-accent-hover" href="/changelog#0.9.7">changelog →</a> <a class="text-hal0-fg-muted hover:text-hal0-fg" href="https://github.com/hal0ai/hal0/releases" rel="noopener">all releases ↗</a> </div> </article> </section>  <section class="mx-auto max-w-4xl px-6 pt-12 pb-6"> <h2 class="text-xl font-semibold tracking-tight text-hal0-fg">Install</h2> <p class="mt-2 text-sm text-hal0-fg-muted">One command on a fresh Linux x86_64 host (Python ≥3.12). AMD (ROCm/Vulkan) is the first-class path; NVIDIA/CUDA support is experimental.</p> <div class="mt-4"> <figure class="overflow-hidden rounded-md border border-hal0-border bg-hal0-bg-sunken font-mono text-sm"> <figcaption class="flex items-center justify-between border-b border-hal0-border bg-hal0-bg-elevated px-4 py-2 text-xs"> <span class="text-hal0-fg-muted">fresh install</span> <div class="flex items-center gap-3"> <span class="rounded bg-hal0-bg px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-hal0-accent"> sh </span> <button type="button" class="hal0-copy text-hal0-fg-muted transition hover:text-hal0-fg" aria-label="Copy code to clipboard">
copy
</button> </div> </figcaption> <pre class="hal0-code overflow-x-auto px-4 py-4 text-hal0-fg leading-relaxed"><code>curl -fsSL https://hal0.dev/install.sh | bash</code></pre> </figure> <script type="module">document.querySelectorAll(".hal0-copy").forEach(t=>{t.addEventListener("click",async()=>{const e=t.closest("figure")?.querySelector("code")?.textContent??"";try{await navigator.clipboard.writeText(e.trim());const o=t.textContent;t.textContent="copied",setTimeout(()=>{t.textContent=o},1200)}catch{t.textContent="failed"}})});</script> </div> <h2 class="mt-10 text-xl font-semibold tracking-tight text-hal0-fg">Upgrade &amp; rollback</h2> <p class="mt-2 text-sm text-hal0-fg-muted">
Self-update verifies a cosign-signed tarball and swaps the <code class="rounded bg-hal0-bg-elevated px-1 py-0.5 font-mono text-xs">current</code> symlink atomically. Two channels:
</p> <div class="mt-4 grid gap-4 md:grid-cols-2"> <figure class="overflow-hidden rounded-md border border-hal0-border bg-hal0-bg-sunken font-mono text-sm"> <figcaption class="flex items-center justify-between border-b border-hal0-border bg-hal0-bg-elevated px-4 py-2 text-xs"> <span class="text-hal0-fg-muted">stable channel</span> <div class="flex items-center gap-3"> <span class="rounded bg-hal0-bg px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-hal0-accent"> sh </span> <button type="button" class="hal0-copy text-hal0-fg-muted transition hover:text-hal0-fg" aria-label="Copy code to clipboard">
copy
</button> </div> </figcaption> <pre class="hal0-code overflow-x-auto px-4 py-4 text-hal0-fg leading-relaxed"><code>hal0 update --channel stable</code></pre> </figure>  <figure class="overflow-hidden rounded-md border border-hal0-border bg-hal0-bg-sunken font-mono text-sm"> <figcaption class="flex items-center justify-between border-b border-hal0-border bg-hal0-bg-elevated px-4 py-2 text-xs"> <span class="text-hal0-fg-muted">nightly channel</span> <div class="flex items-center gap-3"> <span class="rounded bg-hal0-bg px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-hal0-accent"> sh </span> <button type="button" class="hal0-copy text-hal0-fg-muted transition hover:text-hal0-fg" aria-label="Copy code to clipboard">
copy
</button> </div> </figcaption> <pre class="hal0-code overflow-x-auto px-4 py-4 text-hal0-fg leading-relaxed"><code>hal0 update --channel nightly</code></pre> </figure>  </div> <p class="mt-3 text-sm text-hal0-fg-muted">
Reverts in one step: <code class="rounded bg-hal0-bg-elevated px-1 py-0.5 font-mono text-xs">hal0 update --rollback</code>.
      See the <a class="text-hal0-accent hover:text-hal0-accent-hover" href="/docs/guides/update-and-rollback">update &amp; rollback guide</a>.
</p> </section> <section class="relative overflow-hidden border-t border-hal0-border bg-hal0-bg-sunken"> <div class="mx-auto max-w-4xl px-6 py-20 text-center"> <p class="mb-3 font-mono text-xs uppercase tracking-wider text-hal0-accent"> changelog </p> <h2 class="text-balance text-3xl font-semibold tracking-tight text-hal0-fg md:text-4xl"> Read the full history </h2> <p class="mx-auto mt-4 max-w-2xl text-pretty text-hal0-fg-muted"> Every version, newest first — breaking changes, new features, and fixes. </p> <div class="mt-8 flex flex-wrap justify-center gap-3"> <a href="/changelog" class="inline-flex items-center gap-2 rounded-md bg-hal0-accent px-5 py-3 font-mono text-sm font-medium text-black transition hover:bg-hal0-accent-hover"> full changelog → </a> <a href="https://github.com/hal0ai/hal0/releases" class="inline-flex items-center gap-2 rounded-md border border-hal0-border px-5 py-3 font-mono text-sm font-medium text-hal0-fg transition hover:border-hal0-border-strong hover:bg-hal0-bg-elevated"> all github releases ↗ </a> </div> </div> <div aria-hidden="true" class="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-hal0-accent/60 to-transparent"></div> </section>  </main> <footer class="border-t border-hal0-border bg-hal0-bg-sunken astro-olr72t43"> <div class="mx-auto flex max-w-6xl flex-col gap-4 px-6 py-10 text-sm text-hal0-fg-muted md:flex-row md:items-center md:justify-between astro-olr72t43"> <div class="flex items-center gap-3 astro-olr72t43"> <span class="wordmark inline-flex items-center leading-none text-base astro-olr72t43"> <svg viewBox="160 480 1340 500" role="img" aria-label="hal0" height="1em" style="overflow: visible;" xmlns="http://www.w3.org/2000/svg"> <g transform="translate(150 194)" fill="currentColor"> <g transform="translate(0 713.543886)"> <path d="M 247.515625 -28.328125 C 247.515625 -20.523438 244.847656 -13.851562 239.515625 -8.3125 C 234.179688 -2.769531 227.613281 0 219.8125 0 L 202.578125 0 C 194.773438 0 188.203125 -2.769531 182.859375 -8.3125 C 177.523438 -13.851562 174.859375 -20.523438 174.859375 -28.328125 L 174.859375 -237.046875 C 174.859375 -239.515625 173.9375 -241.566406 172.09375 -243.203125 C 170.25 -244.847656 168.300781 -245.671875 166.25 -245.671875 L 106.515625 -245.671875 C 104.460938 -245.671875 102.515625 -244.847656 100.671875 -243.203125 C 98.828125 -241.566406 97.90625 -239.515625 97.90625 -237.046875 L 97.90625 -28.328125 C 97.90625 -20.523438 95.234375 -13.851562 89.890625 -8.3125 C 84.554688 -2.769531 77.988281 0 70.1875 0 L 52.953125 0 C 45.148438 0 38.476562 -2.769531 32.9375 -8.3125 C 27.394531 -13.851562 24.625 -20.523438 24.625 -28.328125 L 24.625 -387.90625 C 24.625 -396.113281 27.394531 -402.882812 32.9375 -408.21875 C 38.476562 -413.550781 45.148438 -416.21875 52.953125 -416.21875 L 70.1875 -416.21875 C 77.988281 -416.21875 84.554688 -413.550781 89.890625 -408.21875 C 95.234375 -402.882812 97.90625 -396.113281 97.90625 -387.90625 L 97.90625 -326.328125 C 97.90625 -324.273438 98.828125 -322.53125 100.671875 -321.09375 C 102.515625 -319.65625 104.460938 -318.9375 106.515625 -318.9375 L 179.171875 -318.9375 C 191.898438 -318.9375 203.394531 -315.859375 213.65625 -309.703125 C 223.914062 -303.546875 232.125 -295.234375 238.28125 -284.765625 C 244.4375 -274.296875 247.515625 -262.703125 247.515625 -249.984375 Z M 247.515625 -28.328125"></path> </g> <g transform="translate(272.763287 713.543886)"> <path d="M 247.515625 -68.953125 C 247.515625 -49.660156 240.84375 -33.34375 227.5 -20 C 214.164062 -6.664062 198.054688 0 179.171875 0 L 93.59375 0 C 74.707031 0 58.488281 -6.664062 44.9375 -20 C 31.394531 -33.34375 24.625 -49.660156 24.625 -68.953125 L 24.625 -136.078125 C 24.625 -148.796875 27.804688 -160.179688 34.171875 -170.234375 C 40.535156 -180.296875 48.847656 -188.40625 59.109375 -194.5625 C 69.367188 -200.71875 80.863281 -203.796875 93.59375 -203.796875 L 166.25 -203.796875 C 168.300781 -203.796875 170.25 -204.617188 172.09375 -206.265625 C 173.9375 -207.910156 174.859375 -209.960938 174.859375 -212.421875 L 174.859375 -237.046875 C 174.859375 -239.515625 173.9375 -241.566406 172.09375 -243.203125 C 170.25 -244.847656 168.300781 -245.671875 166.25 -245.671875 L 93.59375 -245.671875 C 85.789062 -245.671875 79.117188 -248.335938 73.578125 -253.671875 C 68.035156 -259.015625 65.265625 -265.582031 65.265625 -273.375 L 65.265625 -290 C 65.265625 -298.207031 68.035156 -305.082031 73.578125 -310.625 C 79.117188 -316.164062 85.789062 -318.9375 93.59375 -318.9375 L 179.171875 -318.9375 C 191.898438 -318.9375 203.394531 -315.859375 213.65625 -309.703125 C 223.914062 -303.546875 232.125 -295.234375 238.28125 -284.765625 C 244.4375 -274.296875 247.515625 -262.703125 247.515625 -249.984375 Z M 174.859375 -80.65625 L 174.859375 -123.140625 C 174.859375 -125.191406 173.9375 -127.035156 172.09375 -128.671875 C 170.25 -130.316406 168.300781 -131.140625 166.25 -131.140625 L 106.515625 -131.140625 C 104.460938 -131.140625 102.515625 -130.316406 100.671875 -128.671875 C 98.828125 -127.035156 97.90625 -125.191406 97.90625 -123.140625 L 97.90625 -80.65625 C 97.90625 -78.601562 98.828125 -76.753906 100.671875 -75.109375 C 102.515625 -73.472656 104.460938 -72.65625 106.515625 -72.65625 L 166.25 -72.65625 C 168.300781 -72.65625 170.25 -73.472656 172.09375 -75.109375 C 173.9375 -76.753906 174.859375 -78.601562 174.859375 -80.65625 Z M 174.859375 -80.65625"></path> </g> <g transform="translate(545.526555 713.543886)"> <path d="M 136.6875 -28.328125 C 136.6875 -20.523438 133.914062 -13.851562 128.375 -8.3125 C 122.832031 -2.769531 116.160156 0 108.359375 0 L 92.96875 0 C 74.09375 0 57.878906 -6.664062 44.328125 -20 C 30.785156 -33.34375 24.015625 -49.660156 24.015625 -68.953125 L 24.015625 -387.90625 C 24.015625 -396.113281 26.785156 -402.882812 32.328125 -408.21875 C 37.867188 -413.550781 44.539062 -416.21875 52.34375 -416.21875 L 69.578125 -416.21875 C 77.378906 -416.21875 84.050781 -413.550781 89.59375 -408.21875 C 95.132812 -402.882812 97.90625 -396.113281 97.90625 -387.90625 L 97.90625 -80.65625 C 97.90625 -75.320312 100.363281 -72.65625 105.28125 -72.65625 L 108.359375 -72.65625 C 116.160156 -72.65625 122.832031 -69.984375 128.375 -64.640625 C 133.914062 -59.304688 136.6875 -52.535156 136.6875 -44.328125 Z M 136.6875 -28.328125"></path> </g> </g> <g transform="translate(671 518)" fill="var(--hal0-accent, #feaf00)"> <g transform="translate(183.175087 1.720401)"> <path d="M 301.6875 188.453125 C 314.144531 188.523438 324.09375 191.941406 331.53125 198.703125 C 338.96875 205.460938 342.660156 214.578125 342.609375 226.046875 C 342.546875 237.503906 338.757812 246.578125 331.25 253.265625 C 323.738281 259.953125 313.753906 263.257812 301.296875 263.1875 L 226.5625 262.796875 C 214.101562 262.722656 204.15625 259.304688 196.71875 252.546875 C 189.28125 245.785156 185.59375 236.675781 185.65625 225.21875 C 185.707031 213.75 189.488281 204.671875 197 197.984375 C 204.507812 191.296875 214.492188 187.988281 226.953125 188.0625 Z M 152.546875 127.859375 C 121.648438 127.691406 97.0625 136.28125 78.78125 153.625 C 60.5 170.976562 51.28125 194.601562 51.125 224.5 C 50.957031 254.394531 59.921875 278.109375 78.015625 295.640625 C 96.109375 313.171875 120.601562 322.019531 151.5 322.1875 L 383.171875 323.421875 C 414.066406 323.585938 438.65625 315 456.9375 297.65625 C 475.21875 280.320312 484.441406 256.707031 484.609375 226.8125 C 484.765625 196.914062 475.796875 173.195312 457.703125 155.65625 C 439.609375 138.113281 415.113281 129.257812 384.21875 129.09375 Z M 152.90625 60.609375 L 384.578125 61.84375 C 408.992188 61.976562 431.144531 65.957031 451.03125 73.78125 C 470.925781 81.601562 487.804688 92.648438 501.671875 106.921875 C 515.535156 121.203125 526.148438 138.453125 533.515625 158.671875 C 540.890625 178.890625 544.507812 201.707031 544.375 227.125 C 544.238281 252.53125 540.378906 275.300781 532.796875 295.4375 C 525.210938 315.570312 514.410156 332.703125 500.390625 346.828125 C 486.367188 360.960938 469.375 371.835938 449.40625 379.453125 C 429.4375 387.078125 407.242188 390.820312 382.828125 390.6875 L 151.15625 389.453125 C 126.738281 389.328125 104.707031 385.347656 85.0625 377.515625 C 65.414062 369.691406 48.65625 358.640625 34.78125 344.359375 C 20.90625 330.078125 10.160156 312.703125 2.546875 292.234375 C -5.054688 271.765625 -8.789062 249.078125 -8.65625 224.171875 C -8.519531 198.753906 -4.664062 175.976562 2.90625 155.84375 C 10.488281 135.707031 21.289062 118.570312 35.3125 104.4375 C 49.34375 90.3125 66.34375 79.441406 86.3125 71.828125 C 106.289062 64.222656 128.488281 60.484375 152.90625 60.609375 Z M 152.90625 60.609375"></path> </g> </g> </svg> </span> <span class="font-mono text-xs text-hal0-fg-dim astro-olr72t43">
Apache-2.0 · 0.9.7 </span> </div> <ul class="flex flex-wrap items-center gap-6 font-mono text-xs astro-olr72t43"> <li class="astro-olr72t43"><a class="hover:text-hal0-fg astro-olr72t43" href="/docs/">docs</a></li> <li class="astro-olr72t43"><a class="hover:text-hal0-fg astro-olr72t43" href="/blog">blog</a></li> <li class="astro-olr72t43"><a class="hover:text-hal0-fg astro-olr72t43" href="/changelog">changelog</a></li> <li class="astro-olr72t43"><a class="hover:text-hal0-fg astro-olr72t43" href="/releases">releases</a></li> <li class="astro-olr72t43"><a class="hover:text-hal0-fg astro-olr72t43" href="/contributing">contributing</a></li> <li class="astro-olr72t43"> <a class="hover:text-hal0-fg astro-olr72t43" href="mailto:hello@hal0.dev">
hello@hal0.dev
</a> </li> <li class="astro-olr72t43"> <a class="hover:text-hal0-fg astro-olr72t43" href="https://github.com/hal0ai/hal0" rel="noopener">
github
</a> </li> <li class="astro-olr72t43"> <a class="inline-flex items-center gap-1.5 hover:text-hal0-fg astro-olr72t43" href="https://discord.gg/7M4y6dcUyq" rel="noopener"> <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" aria-hidden="true" class="astro-olr72t43"><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 0 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" class="astro-olr72t43"></path></svg>
discord
</a> </li> </ul> </div> </footer> <!-- Screenshot lightbox (shared with the docs/blog via astro.config head). --> <script src="/js/lightbox.js" defer></script> <!-- Scroll-aware navbar:
         data-tone='solid'                    → frosted bg + amber accent
         data-tone='transparent'              → bare (used at top of landing)
         data-tone='transparent' + scrolled   → promotes to solid

         The script is intentionally tiny (no client framework) and uses
         a passive scroll listener, throttled via requestAnimationFrame
         so it stays cheap on long scrolls. --> <script>
      (() => {
        const nav = document.querySelector('header.hal0-nav[data-tone="transparent"]');
        if (!nav) return;
        const threshold = () => window.innerHeight * 0.8;
        let ticking = false;
        const sync = () => {
          ticking = false;
          nav.dataset.scrolled = window.scrollY > threshold() ? 'true' : 'false';
        };
        const onScroll = () => {
          if (ticking) return;
          ticking = true;
          requestAnimationFrame(sync);
        };
        sync();
        window.addEventListener('scroll', onScroll, { passive: true });
        window.addEventListener('resize', sync, { passive: true });
      })();
    </script> <!-- Mobile menu toggle — tiny, no framework. --> <script>
      (() => {
        const btn = document.getElementById('nav-toggle');
        const menu = document.getElementById('mobile-menu');
        if (!btn || !menu) return;
        const setOpen = (open) => {
          btn.setAttribute('aria-expanded', open ? 'true' : 'false');
          menu.hidden = !open;
          btn.classList.toggle('open', open);
        };
        btn.addEventListener('click', () => setOpen(menu.hidden));
        menu.addEventListener('click', (e) => { if (e.target.closest('a')) setOpen(false); });
        document.addEventListener('keydown', (e) => { if (e.key === 'Escape') setOpen(false); });
        // Reset if the viewport grows back to desktop.
        window.matchMedia('(min-width: 768px)').addEventListener('change', (m) => { if (m.matches) setOpen(false); });
      })();
    </script> </body> </html>