<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>hal0 | Blog</title><description>Local AI for your home. Strix Halo native.</description><link>https://hal0.dev/</link><language>en</language><item><title>What&apos;s new in the v0.8 line: Stacks, canonical roles, and voice end-to-end</title><link>https://hal0.dev/blog/whats-new-in-the-v0-8-line/</link><guid isPermaLink="true">https://hal0.dev/blog/whats-new-in-the-v0-8-line/</guid><description>Config becomes a declarative single source of truth with Stacks, agent/utility replace chat/primary as the canonical roles, voice ships end-to-end behind one engine switch, and a 72-finding reliability sweep lands resumable pulls, disk preflight, and live dashboard telemetry. A look at the v0.8 beta line through v0.8.4b1.

</description><pubDate>Sat, 04 Jul 2026 12:00:00 GMT</pubDate><content:encoded>&lt;aside aria-label=&quot;Pre-release&quot;&gt; &lt;p aria-hidden=&quot;true&quot;&gt; Pre-release &lt;/p&gt;  &lt;div&gt;&lt;p&gt;hal0 is pre-1.0. &lt;strong&gt;v0.8.4b1&lt;/strong&gt; is a &lt;em&gt;beta&lt;/em&gt; — the current development line, not a
GA release. Expect breaking changes between cuts. See the
&lt;a href=&quot;https://hal0.dev/releases&quot;&gt;releases page&lt;/a&gt; for the stable-vs-next split, and the
&lt;a href=&quot;https://hal0.dev/changelog#v0.8.4b1&quot;&gt;full changelog&lt;/a&gt; for the complete list.&lt;/p&gt;&lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;The v0.8 line runs from &lt;code dir=&quot;auto&quot;&gt;v0.8.0-beta.1&lt;/code&gt; (2026-06-21) through &lt;code dir=&quot;auto&quot;&gt;v0.8.4b1&lt;/code&gt;
(2026-07-04) — eleven cuts. The throughline is &lt;em&gt;config as a single source of
truth&lt;/em&gt;: Stacks, canonical roles, portable profiles, and a resolved-argv
endpoint all collapse “what is this slot actually running” down to one
answer instead of several that could disagree. Everything below traces to the
&lt;a href=&quot;https://hal0.dev/changelog#v0.8.0-beta.1&quot;&gt;changelog&lt;/a&gt; — no roadmap promises, just what shipped.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;stacks-declarative-config-as-the-ssot&quot;&gt;Stacks: declarative config as the SSOT&lt;/h2&gt;&lt;a href=&quot;#stacks-declarative-config-as-the-ssot&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Stacks: declarative config as the SSOT”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.8.0-beta.1&lt;/code&gt; introduces &lt;strong&gt;Stacks&lt;/strong&gt; — a &lt;code dir=&quot;auto&quot;&gt;StackConfig&lt;/code&gt; schema plus a
&lt;code dir=&quot;auto&quot;&gt;StackApplyEngine&lt;/code&gt; that &lt;code dir=&quot;auto&quot;&gt;plan()&lt;/code&gt;s a Stack into a ChangeSet, &lt;code dir=&quot;auto&quot;&gt;apply_config()&lt;/code&gt;s
it as an atomic commit with rollback, and &lt;code dir=&quot;auto&quot;&gt;converge()&lt;/code&gt;s the live slot set
(primary-slot load/swap/skip plus capability-child routing through the
orchestrator). Stacks carry content-hash drift detection and an active-stack
pointer, export/import through a checksummed &lt;code dir=&quot;auto&quot;&gt;.hal0stack.json&lt;/code&gt; envelope, and a
snapshot path that captures your live config back into a Stack. Three seed
stacks — saber, forge, pi — ship derived from the roster bench. Later fixes in
&lt;code dir=&quot;auto&quot;&gt;v0.8.2b2&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;v0.8.3b1&lt;/code&gt; round this out: absent stack models can now be
pulled (curated HF coordinates were registered for the seed-stack GGUF
builds), and &lt;code dir=&quot;auto&quot;&gt;apply&lt;/code&gt; flags unresolved profile/model refs and reports
&lt;strong&gt;degraded&lt;/strong&gt; rather than a false “clean” when a slot fails to load.&lt;/p&gt;
&lt;p&gt;Alongside Stacks, &lt;code dir=&quot;auto&quot;&gt;v0.8.0-beta.1&lt;/code&gt; also single-sources &lt;strong&gt;slot launch argv&lt;/strong&gt;: a
resolver dedups the flag soup into a last-wins canonical command, and
per-flag provenance is exposed at &lt;code dir=&quot;auto&quot;&gt;GET /api/slots/{name}/resolved&lt;/code&gt; — the
&lt;a href=&quot;https://hal0.dev/docs/concepts/slots&quot;&gt;slot&lt;/a&gt; edit drawer renders the resolved command with
source badges (base / profile / extra_args) so you can see exactly which
layer set which flag.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;canonical-roles-agent-and-utility-replace-chat-and-primary&quot;&gt;Canonical roles: &lt;code dir=&quot;auto&quot;&gt;agent&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;utility&lt;/code&gt; replace &lt;code dir=&quot;auto&quot;&gt;chat&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;primary&lt;/code&gt;&lt;/h2&gt;&lt;a href=&quot;#canonical-roles-agent-and-utility-replace-chat-and-primary&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Canonical roles: agent and utility replace chat and primary”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.8.0-beta.3&lt;/code&gt; establishes two canonical LLM roles: &lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;agent&lt;/code&gt;&lt;/strong&gt; (the capable
default and dispatch fallback anchor, replacing &lt;code dir=&quot;auto&quot;&gt;chat&lt;/code&gt;) and &lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;utility&lt;/code&gt;&lt;/strong&gt; (a
cheap helper now seeded on every install, so extraction work no longer
silently falls back to a heavy model). Any enabled &lt;code dir=&quot;auto&quot;&gt;type=llm&lt;/code&gt; slot is
addressable as &lt;code dir=&quot;auto&quot;&gt;hal0/&amp;#x3C;slot&gt;&lt;/code&gt;, and the advertised canonical virtuals are
&lt;code dir=&quot;auto&quot;&gt;hal0/agent&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;hal0/utility&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;hal0/npu&lt;/code&gt;.&lt;/p&gt;
&lt;aside aria-label=&quot;Breaking&quot;&gt; &lt;p aria-hidden=&quot;true&quot;&gt; Breaking &lt;/p&gt;  &lt;div&gt;&lt;p&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;hal0/chat&lt;/code&gt; is no longer advertised.&lt;/strong&gt; Anything pinned to it — Hermes,
Open WebUI, custom clients — must repoint to &lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;hal0/agent&lt;/code&gt;&lt;/strong&gt;; Hermes’
&lt;code dir=&quot;auto&quot;&gt;model.default&lt;/code&gt; is updated automatically. &lt;code dir=&quot;auto&quot;&gt;primary&lt;/code&gt; is also gone as a slot
alias, and &lt;code dir=&quot;auto&quot;&gt;memory.graph.route&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;memory.graph.upstream&lt;/code&gt; are replaced by
&lt;code dir=&quot;auto&quot;&gt;memory.graph.extraction_slot&lt;/code&gt; (old keys are dropped silently, not
hard-failed). See the &lt;a href=&quot;https://hal0.dev/changelog#v0.8.0-beta.3&quot;&gt;changelog&lt;/a&gt; for the full list.&lt;/p&gt;&lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;This work also finishes removing Cognee: Hindsight is now the only memory
engine, with a PgVector boot-degrade fallback.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;voice-end-to-end&quot;&gt;Voice, end-to-end&lt;/h2&gt;&lt;a href=&quot;#voice-end-to-end&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Voice, end-to-end”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.8.0-beta.1&lt;/code&gt; brings up the &lt;a href=&quot;https://hal0.dev/docs/guides/voice-stt-tts&quot;&gt;voice stack&lt;/a&gt; for
real — &lt;code dir=&quot;auto&quot;&gt;voice_wire&lt;/code&gt; fixed, Open WebUI Call mode wired, and the NPU-trio facade
auto-provisioning STT. &lt;code dir=&quot;auto&quot;&gt;v0.8.2b3&lt;/code&gt; completes the picture on the synthesis side:
a new &lt;code dir=&quot;auto&quot;&gt;Qwen3TTSProvider&lt;/code&gt; serves Qwen3-TTS from the canonical &lt;code dir=&quot;auto&quot;&gt;tts&lt;/code&gt; slot, and
the &lt;code dir=&quot;auto&quot;&gt;voice.tts&lt;/code&gt; capability is a single switch that swaps the engine between
Kokoro-82M (CPU) and Qwen3-TTS (GPU) — no separate slot to configure, no
reconfiguration step. That release also ships a GPU benchmark harness
(&lt;code dir=&quot;auto&quot;&gt;hal0-benchctl&lt;/code&gt;) and a standalone-to-slot migration runbook for anyone
running an older Qwen3-TTS setup outside of hal0.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;portable-profiles&quot;&gt;Portable profiles&lt;/h2&gt;&lt;a href=&quot;#portable-profiles&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Portable profiles”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.8.2b1&lt;/code&gt; gives &lt;a href=&quot;https://hal0.dev/docs/reference/providers-profiles-devices&quot;&gt;profiles&lt;/a&gt; the
same sharing model Stacks already had: export to a self-contained, checksummed
&lt;code dir=&quot;auto&quot;&gt;.hal0profile.json&lt;/code&gt; envelope and import it on another host. New routes
(&lt;code dir=&quot;auto&quot;&gt;GET /api/profiles/{name}&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;POST /api/profiles/{name}/export&lt;/code&gt;,
&lt;code dir=&quot;auto&quot;&gt;POST /api/profiles/import&lt;/code&gt;) and matching MCP tools (&lt;code dir=&quot;auto&quot;&gt;profile_export&lt;/code&gt; is
autonomous; &lt;code dir=&quot;auto&quot;&gt;profile_import&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;profile_delete&lt;/code&gt; are gated) mirror the &lt;code dir=&quot;auto&quot;&gt;stack_*&lt;/code&gt;
set. The dashboard adds an Export button to every profile card and an
Import dialog with a dry-run preview before commit.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;v083b1-the-72-finding-reliability-sweep&quot;&gt;v0.8.3b1: the 72-finding reliability sweep&lt;/h2&gt;&lt;a href=&quot;#v083b1-the-72-finding-reliability-sweep&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “v0.8.3b1: the 72-finding reliability sweep”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.8.3b1&lt;/code&gt; is a large reliability and completeness release — a 72-finding
platform review remediated in eight verified waves, each regression-tested
and gated by CI + Playwright. The user-visible defaults change too: the
dashboard now shows &lt;strong&gt;Power &amp;#x26; Thermal&lt;/strong&gt; (live GPU clock/temp/power) and
&lt;strong&gt;Per-Slot Throughput&lt;/strong&gt; cards by default, disabling a capability actually
stops it serving, and the &lt;code dir=&quot;auto&quot;&gt;bge&lt;/code&gt; reranker is finally classified and routed as
a reranker instead of &lt;code dir=&quot;auto&quot;&gt;chat&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Underneath:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Interrupted pulls resume&lt;/strong&gt; via HTTP &lt;code dir=&quot;auto&quot;&gt;Range&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;If-Range&lt;/code&gt; instead of
restarting from zero, with the on-disk prefix re-hashed so the final
SHA-256 stays exact.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disk-space preflight&lt;/strong&gt; fails fast with a structured
&lt;code dir=&quot;auto&quot;&gt;model.insufficient_disk&lt;/code&gt; error before a multi-GB pull can fill the disk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Host-memory-pressure LRU eviction&lt;/strong&gt; unloads idle slots under pressure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-process safety&lt;/strong&gt; — advisory file locks around registry and
capability writes, plus parent-directory &lt;code dir=&quot;auto&quot;&gt;fsync&lt;/code&gt; after atomic writes.&lt;/li&gt;
&lt;li&gt;Every backend-supported field the API already accepted (&lt;code dir=&quot;auto&quot;&gt;capabilities&lt;/code&gt;,
&lt;code dir=&quot;auto&quot;&gt;backends&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;rope_freq_base&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;mmproj&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;hf_repo&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;hf_filename&lt;/code&gt;, per-slot
&lt;code dir=&quot;auto&quot;&gt;vision&lt;/code&gt;, NPU &lt;code dir=&quot;auto&quot;&gt;asr&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;embed&lt;/code&gt;) is now exposed in the edit drawers.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;v084b1-models-logs-and-memory&quot;&gt;v0.8.4b1: models, logs, and memory&lt;/h2&gt;&lt;a href=&quot;#v084b1-models-logs-and-memory&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “v0.8.4b1: models, logs, and memory”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The current cut, &lt;code dir=&quot;auto&quot;&gt;v0.8.4b1&lt;/code&gt;, is a safe, additive follow-up. A registry model
can now declare a &lt;strong&gt;preferred runtime profile&lt;/strong&gt; (&lt;code dir=&quot;auto&quot;&gt;defaults.profile&lt;/code&gt;) that a
slot adopts on create and on every model swap, gated on device/type
compatibility. The Models view gets a dedicated &lt;strong&gt;Image/ComfyUI&lt;/strong&gt; toggle, and
image-gen models are correctly tagged and grouped by their on-disk category.
The slot edit drawer’s context field finally seeds from the &lt;em&gt;persisted&lt;/em&gt;
&lt;code dir=&quot;auto&quot;&gt;context_size&lt;/code&gt; instead of the live runtime metric or a hardcoded 16k, so a
cold reload or model swap no longer clobbers your configured context window.
Logs and events are unified into one surface with real source/slot
attribution, and &lt;a href=&quot;https://hal0.dev/docs/concepts/memory&quot;&gt;memory&lt;/a&gt; gains a durable audit trail
for every destructive op — bank, memory, config, document, directive,
operation, and mental-model deletes are now attributable after the fact —
plus a response-shape guard so upstream drift surfaces as a loud error
instead of a silently blank console panel.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;hermes-durable-memory-on-by-default&quot;&gt;Hermes durable memory, on by default&lt;/h2&gt;&lt;a href=&quot;#hermes-durable-memory-on-by-default&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Hermes durable memory, on by default”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.8.1-beta.1&lt;/code&gt; makes cross-session recall a zero-config default: a fresh
&lt;code dir=&quot;auto&quot;&gt;hal0 agent bootstrap hermes&lt;/code&gt; now provisions a working &lt;code dir=&quot;auto&quot;&gt;hal0-memory&lt;/code&gt;
provider automatically, backed by two banks — &lt;code dir=&quot;auto&quot;&gt;private:hermes&lt;/code&gt; (default) and
&lt;code dir=&quot;auto&quot;&gt;shared&lt;/code&gt; (cross-agent) — through hal0’s Hindsight engine. The agent gets
&lt;code dir=&quot;auto&quot;&gt;hal0_memory_{search,recall,add}&lt;/code&gt; tools and auto-injects recalled context each
turn with no manual config.&lt;/p&gt;
&lt;aside aria-label=&quot;Breaking&quot;&gt; &lt;p aria-hidden=&quot;true&quot;&gt; Breaking &lt;/p&gt;  &lt;div&gt;&lt;p&gt;The Hermes memory namespace is renamed &lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;private:hermes-agent&lt;/code&gt; →
&lt;code dir=&quot;auto&quot;&gt;private:hermes&lt;/code&gt;&lt;/strong&gt;. Existing &lt;code dir=&quot;auto&quot;&gt;private:hermes-agent&lt;/code&gt; data is not
auto-migrated; a reprovisioned agent starts fresh against &lt;code dir=&quot;auto&quot;&gt;private:hermes&lt;/code&gt; +
&lt;code dir=&quot;auto&quot;&gt;shared&lt;/code&gt;. See the &lt;a href=&quot;https://hal0.dev/changelog#v0.8.1-beta.1&quot;&gt;changelog&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt; &lt;/aside&gt;
&lt;div&gt;&lt;h2 id=&quot;next-v09&quot;&gt;Next: v0.9&lt;/h2&gt;&lt;a href=&quot;#next-v09&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Next: v0.9”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The v0.8 beta line has been an unusually long run of consolidation — Stacks,
canonical roles, voice, portable profiles, and a 72-finding reliability
sweep, capped by &lt;code dir=&quot;auto&quot;&gt;v0.8.2b4&lt;/code&gt;’s docs re-baseline against that current reality.
&lt;strong&gt;v0.9 is coming soon&lt;/strong&gt;, and its job is to take everything landed across
these betas and stabilize it into the next line. Watch the
&lt;a href=&quot;https://hal0.dev/changelog&quot;&gt;changelog&lt;/a&gt; and &lt;a href=&quot;https://hal0.dev/releases&quot;&gt;releases page&lt;/a&gt; for the cut when it
ships.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;/h2&gt;&lt;a href=&quot;#try-it&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Try it”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;--0:#82AAFF;--1:#3B61B0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#3B61B0&quot;&gt;-fsSL&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#ECC48D;--1:#3B61B0&quot;&gt;https://hal0.dev/install.sh&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#7FDBCA;--1:#096E72&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#3B61B0&quot;&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Already running an older line? &lt;code dir=&quot;auto&quot;&gt;hal0 update --channel stable&lt;/code&gt; (or
&lt;code dir=&quot;auto&quot;&gt;nightly&lt;/code&gt;), and &lt;code dir=&quot;auto&quot;&gt;hal0 update --rollback&lt;/code&gt; reverts atomically. Full notes on
the &lt;a href=&quot;https://hal0.dev/releases&quot;&gt;releases page&lt;/a&gt; and the
&lt;a href=&quot;https://hal0.dev/docs/guides/update-and-rollback&quot;&gt;update and rollback guide&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>release</category><category>stacks</category><category>voice</category><category>beta</category></item><item><title>What&apos;s new in the v0.7 line: hal0&apos;s first beta</title><link>https://hal0.dev/blog/whats-new-in-the-v0-7-line/</link><guid isPermaLink="true">https://hal0.dev/blog/whats-new-in-the-v0-7-line/</guid><description>The dashboard becomes a full operations console — ComfyUI image generation, an agent task board, NPU occupancy, and a unified profile-card layout — on top of honest slot health. A look at v0.7.3-beta.1, the first beta cut.

</description><pubDate>Fri, 19 Jun 2026 12:00:00 GMT</pubDate><content:encoded>&lt;aside aria-label=&quot;Pre-release&quot;&gt; &lt;p aria-hidden=&quot;true&quot;&gt; Pre-release &lt;/p&gt;  &lt;div&gt;&lt;p&gt;hal0 is pre-1.0. &lt;strong&gt;v0.7.3-beta.1&lt;/strong&gt; is a &lt;em&gt;beta&lt;/em&gt; — the current development line,
not a GA release. Expect breaking changes between cuts. See the
&lt;a href=&quot;https://hal0.dev/releases&quot;&gt;releases page&lt;/a&gt; for the stable-vs-next split, and the
&lt;a href=&quot;https://hal0.dev/changelog#v0.7.3-beta.1&quot;&gt;full changelog&lt;/a&gt; for the complete list.&lt;/p&gt;&lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;v0.7.3-beta.1&lt;/code&gt; is hal0’s &lt;strong&gt;first beta&lt;/strong&gt;. The headline is the dashboard: it
graduates from a status panel into a full operations console. Everything below
traces to the &lt;a href=&quot;https://hal0.dev/changelog#v0.7.3-beta.1&quot;&gt;changelog&lt;/a&gt; — no roadmap promises, just
what landed.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-dashboard-is-now-an-ops-console&quot;&gt;The dashboard is now an ops console&lt;/h2&gt;&lt;a href=&quot;#the-dashboard-is-now-an-ops-console&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “The dashboard is now an ops console”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The inference, NPU, and ComfyUI cards are unified into one profile-card style.
Profiles moved into the &lt;strong&gt;Slots&lt;/strong&gt; tab under an engine-style header, the
memory + throughput band was lifted above the tabs, and a live-journal footer
now carries runtime and service-health groups. Slot cards came out of the
accordion so they read at a glance.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://hal0.dev/screenshots/dashboard-overview.png&quot; alt=&quot;hal0 dashboard overview&quot;&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;comfyui-image-generation-first-class&quot;&gt;ComfyUI image generation, first-class&lt;/h2&gt;&lt;a href=&quot;#comfyui-image-generation-first-class&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “ComfyUI image generation, first-class”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A full ComfyUI generation engine is wired into the platform — model store,
capability picker, installer, and a V2 Image-Gen pane. Generation flips the GPU
into exclusive image mode via the iGPU switchover, and an Inference-tab dot
tracks live state so you always know what the accelerator is doing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://hal0.dev/screenshots/image-gen-comfyui.png&quot; alt=&quot;ComfyUI image generation pane&quot;&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;npu-occupancy-and-the-operator-board&quot;&gt;NPU occupancy and the Operator Board&lt;/h2&gt;&lt;a href=&quot;#npu-occupancy-and-the-operator-board&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “NPU occupancy and the Operator Board”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The XDNA NPU gets a living occupancy grid with per-slot accents — it breathes
with real activity instead of hiding behind a static picker. Alongside it, the
&lt;strong&gt;Operator Board&lt;/strong&gt; is a hal0-skinned kanban wired to the bundled Hermes agent
(&lt;code dir=&quot;auto&quot;&gt;/api/board/*&lt;/code&gt;), with a live agent-chat drawer and working task creation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://hal0.dev/screenshots/operator-board.png&quot; alt=&quot;Operator Board — Hermes kanban&quot;&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;honesty-under-the-hood&quot;&gt;Honesty under the hood&lt;/h2&gt;&lt;a href=&quot;#honesty-under-the-hood&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Honesty under the hood”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The less flashy changes matter most for an operator’s tool:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Slot health is honest.&lt;/strong&gt; A slot is marked &lt;code dir=&quot;auto&quot;&gt;ready&lt;/code&gt; only once its real
&lt;code dir=&quot;auto&quot;&gt;/health&lt;/code&gt; passes — not on a systemd snapshot that lies about readiness.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-slot context is derived&lt;/strong&gt;, never silently inheriting llama-server’s
4096-token default; the edit-drawer default is 16k.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware reports the live GTT total&lt;/strong&gt;, not a stale cached probe value — so
the unified-memory pool you see is the pool you have.&lt;/li&gt;
&lt;li&gt;Disabled-but-running slots are surfaced instead of vanishing.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;/h2&gt;&lt;a href=&quot;#try-it&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span data-pagefind-ignore=&quot;&quot;&gt;Section titled “Try it”&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;--0:#82AAFF;--1:#3B61B0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#3B61B0&quot;&gt;-fsSL&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#ECC48D;--1:#3B61B0&quot;&gt;https://hal0.dev/install.sh&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#7FDBCA;--1:#096E72&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#D6DEEB;--1:#403F53&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#3B61B0&quot;&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Already running an older line? &lt;code dir=&quot;auto&quot;&gt;hal0 update --channel stable&lt;/code&gt; (or &lt;code dir=&quot;auto&quot;&gt;nightly&lt;/code&gt;),
and &lt;code dir=&quot;auto&quot;&gt;hal0 update --rollback&lt;/code&gt; reverts atomically. Full notes on the
&lt;a href=&quot;https://hal0.dev/releases&quot;&gt;releases page&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>release</category><category>dashboard</category><category>beta</category></item></channel></rss>