Hermes installs itself on first run, prewired to the local /v1 API, with your own model screening its risky shell commands. hal0-brain is a resident operator you ask about the box in plain language. Both run as contained units on the box.
Own YourInference
All local. All yours.
Chat, speech, images, embeddings — every modality, served from one OpenAI-compatible API on your Strix Halo box or any Linux machine.
Six default runners,
one /v1/* surface.
Chat, embeddings, rerank, speech both ways and image generation, each served by a runner image on the accelerator that suits it, behind one OpenAI-compatible API. Every tag is immutable and hardware-gated. Six runners ship by default; Qwen3 TTS and CUDA are opt-in.
More than models.
A whole AI stack.
Agents, profiles, memory, voice and image generation ship in the box and come up wired to each other. Not a model runner you then spend a weekend assembling a platform around.
A model records facts about its file. A profile holds every tune: flags, context, thinking, vision, MTP and the runtime. A slot holds placement. One model runs several ways through several profiles, and the launch command is shown layer by layer.
A local Hindsight engine bound to loopback holds it, embeddings included. A write lands or is refused up front with a reason, never dropped quietly, and you set the extraction limits in Settings. Destructive operations write an attributable audit row.
One stt slot and one tts slot, each resolving by device. Moonshine on the CPU or FastFlowLM on the XDNA NPU listens; Kokoro on the CPU or the optional Qwen3 TTS runner on the GPU speaks. Switch the engine, not the plumbing.
POST /v1/images/generations runs SDXL, SD 1.5 or Flux through a ComfyUI engine. Generating flips the iGPU into exclusive image mode and back, so chat and images share one accelerator without fighting over it.
One command brings up the API, a coherent set of slots, ComfyUI, the agent and Open WebUI on :3001. Open WebUI arrives wired for chat, voice, documents (RAG on hal0 embeddings) and images through ComfyUI.
One box,
three day jobs.
The same install serves all three at once — the slots share the accelerator instead of taking turns with it.
Point your editor at your own box
Aim any OpenAI-compatible client at :8080/v1 — chat, completions, and a dedicated coder slot. Your code never leaves the LAN, and there's no per-token bill.
Retrieval grounded on your data
Embeddings, reranking, Open WebUI document uploads that go through RAG on hal0 embeddings, and a bundled agent with memory and MCP tools. Retrieval runs on your hardware, not someone else's server.
Speech and images, one control plane
Transcription, text-to-speech and local image generation behind the same API. STT runs on the XDNA NPU or the CPU, TTS on the CPU or the GPU, and ComfyUI on the iGPU, switched cleanly so they share the box.
what this box does
| model | params | decode ▼ | prefill | gb |
|---|---|---|---|---|
| qwen3.5-0.8b | 0.8B | 169.8 | 6248 | 0.6 |
| chadrock3-6-35b-uncensored-mtp-strix-lean | 35B MoE | 102.1 | 890 | 19 |
| chadrock-35b-ace-saber | 35B-A3B | 100.5 | 903 | 19 |
| qwopus3-5-4b-coder-mtp-q6-k | 4B | 85.0 | 889 | 3.6 |
| qwen3.6-35b-a3b-crown-halo-mtp-dynamic | 35B-A3B | 84.4 | 873 | 22.6 |
Strix Halo native.
Not Strix-Halo-only.
The probe is UMA-aware on Strix Halo and falls back to portable parsers on every other host. The dashboard only labels memory "unified" when it actually is. Linux + systemd is the only hard requirement.
The orchestration layer
around your inference engine.
Slots survive hal0-api restarts. Embeddings, rerank, STT, TTS, and image gen all sit behind the same/v1/* surface. UMA-aware hardware probe and slot-fit warnings are first-class, not a slash command in a chat window.
Competitor capabilities reflect each project's published docs as of October 2026 and move fast — treat this as a snapshot, not a live scorecard.
Slots, profiles and memory,
one console.
Slots, models, profiles, image generation, agent memory, an agent task board, MCP and logs: every surface in one React operator console. SSE-backed, dark by default. Real screenshots from a live hal0 instance.




Plus the Hermes agent, the Operator Board kanban wired to it, the Runner Images page and the Services page. See what's newfor recent changes.
Agents that
live on the box.
Hermes installs and bootstraps itself on first run, confined by its own systemd unit and prewired to the local /v1 API, hal0's MCP servers and memory. Reach it from Telegram or Discord; it chains tool calls unattended for hours and writes each run back to memory.
- Self-bootstraps: env probe → model wiring → MCP memory → persona.
[email protected]: NoNewPrivileges, ProtectSystem=strict, a pinned ReadWritePaths set, and the terminal off by default.- Smart command approvals: your local
hal0/agentmodel pre-screens risky shell commands and falls back to asking you. Manual mode asks every time. - Gated MCP tools wait in an approval queue for a human.

A resident operator, not a chatbot
hal0's own small always-on model, wired to hal0's admin catalog and reachable from the dashboard's Agent Chat or hal0 chat --brain on a headless box. Ask it what's loaded, what the box is doing, what's eating the memory pool. It ships read-only: it reads and explains out of the box, and one config line lets it act.
The platform is the tool catalog
Two Streamable-HTTP servers mount onto the API,/mcp/admin and /mcp/memory, so any MCP client can drive the box: models, slots, profiles, stacks, memory, bench, telemetry and the updater. A validator keeps the gating tiers from overlapping, so the catalog cannot drift quietly.
Recall that reaches no one
Memory runs on a local Hindsight engine bound to loopback, local embeddings included. Writes go to a shared namespace by default or to an agent's private one; recall merges, ranks and fits the result to a token budget.
Key auth is optional and off by default, the trusted-LAN posture. Once you set an admin key, off-box callers need it for admin routes. hal0 has no TLS of its own: put your reverse proxy in front and allow its origin with hal0 network public-url set. Updates are signed, the agent runs in a contained unit, and destructive memory operations are audited.
What the latest
releases changed.
The short version. The changelog has every line, and the docs cover each change in depth.
The AMD llama.cpp runner is now Standard, built from upstream llama.cpp for ROCm and Vulkan. One pin table drives every runner image, each tag is immutable and hardware-gated, and the catalogue syncs itself.
Context, thinking, vision, MTP, flags and runtime moved off the model and the slot onto the profile. Existing installs convert automatically, with a backup.
A box with a 32 GB or larger memory pool now seeds Qwen3.8 27B with vision at 96K context. Smaller boxes keep Qwen3.5 9B or Qwen3 4B.
Writes that used to vanish on a slow box now land, or are refused up front with a reason. Extraction limits live under Settings ▸ Memory.
Document uploads go through RAG on hal0 embeddings and the image button generates through ComfyUI as soon as the matching slots are bound. It keeps working with auth on.
hal0 update converges Open WebUI, runner images, Hermes and Hindsight, restarts slots whose runner image changed, and rolls back with one flag.
what users are talking about
optimized model & hardware recipes from the community
0.6 GB. Not a chat model — the draft half of a speculative pair, pinned so the big model never waits on it.
draft-mtp with an f16 KV cache. The fastest tokens this box produces, at the cost of 19 GB resident and no room for a second big slot.
Sized for autocomplete rather than long generations: 28.5 GB resident, prefill above 750 tok/s so a whole file lands fast.
latest from the blog
Runners, profiles and a bigger default brain: what changed in hal0 since 1.0
One name per runner, config where the model holds facts and the profile holds the tune, a 27B vision model as the default agent brain, memory that no longer drops writes, and updates that converge the whole system. A look at what hal0 does now compared with the 1.0 GA.
blog · 2026-07-04What's new in the v0.8 line: Stacks, canonical roles, and voice end-to-end
Put the whole stack
on your own box.
One command on a fresh Linux box brings up the API, the slots, voice, image gen, and the agent. Apache-2.0, signed releases, no telemetry.