Heierchat

From The Hei Canon

heierchat is the standalone desktop shell and web frontend for ht-llama.cpp. Extracted from that repo's tools/server/webui-tauri and tools/server/webui. Origin commit: 5be5481f9 (pre-rebase ht tip). Private under heiervang-technologies/heierchat.

What it is

A Tauri 2 desktop app wrapping a SvelteKit frontend (Svelte 5, adapter-static, hash routing) that speaks OpenAI-compatible endpoints. Ships as a native binary at target/release/heierchat, symlinked to ~/.local/bin/heierchat. Omarchy launcher bind: SUPER+A.

Layout

webui/                 SvelteKit frontend (Svelte 5)
webui-tauri/
  src-tauri/           Tauri 2 Rust shell — embedded tiny-http on :5173
  *.desktop            Linux launcher entries
  install-desktop.sh   Installs .desktop files + heierchat symlinks
public/                Build sink populated by 'bun run build' (gitignored)

Build

# Frontend
cd webui
bun install
bun run build       # writes /public/ — that's what the Tauri shell embeds

# Desktop binary
cd ../webui-tauri/src-tauri
cargo build --release

install-desktop.sh in webui-tauri/ installs the heierchat.desktop and heierchat-dev.desktop entries plus icons under XDG dirs so Hyprland / GNOME launchers pick them up.

Backend

The shell expects one or more OpenAI-compatible endpoints. The first is the global backendBaseUrl, set via the in-app Settings panel (persists in WebKit localStorage).

Also manages a local llama-server process directly from Tauri — auto-registers in nodesStore, so a single instance can drive both hosted and local backends.

Multi-node backend selection: NodeSwitch with per-conversation pin, picker filter, multi-host loaded indicators, and a sticky "any" model.

CI

.github/workflows/build.yml covers both halves: type-check, lint, unit tests, frontend bundle build, Tauri release binary build.

Standing rules

  • Every commit on main MUST be single-author marksverdhei.
  • No Co-Authored-By: Claude trailers anywhere.
  • Squash-only merges.
  • Keep dependencies updated but verify they don't break SvelteKit type checks — bun update for webui, cargo update for webui-tauri/src-tauri.

Sources

  • ~/ht/heierchat/README.md — layout + build.
  • ~/ht/heierchat/CLAUDE.md — commands + guidelines.

See also