Short for Hliðskjálf, Óðinn's high seat where he could see all nine realms.
Hlið is a local command center for working with an Obsidian vault through
AI agents. It puts Claude, Codex, and installed Agent Client Protocol
providers in one interface, with visible tool use, permission prompts, vault
browsing, and the settings needed to run the whole thing.
It runs on a Windows machine, keeps its data local, and works from other
devices over Tailscale. The vault can use PARA, an LLM wiki layout, or its
own folder vocabulary. Hlið does not care as long as the paths are set up.
- Keeps agent sessions around with live streaming, visible tool calls, approvals, attachments, queued follow-ups, inline questions, plan review, and subagent activity. Supported Claude and Codex chats can be forked whole, while Claude can also branch from a specific reply. Native Codex chats keep their goals and token budgets visible too. The provider, model, effort, and permission mode stay with the chat they belong to.
- Pulls vault skills, reviewed Hlid-managed skills, provider-native imports,
and slash commands into
WatchandRaven, including compatible multi-skill runs. - Schedules one-time or repeating
RoutinesfromWatch. Each run keeps its provider context, follows a narrow unattended permission policy, and can deliver the result toRelicsor the vault. - Points prompts at exact vault files and managed
Relicsthrough the shared@picker. No copying paths around just to give the agent some context. - Lets agents publish generated HTML, PDFs, images, and reports directly into
Relicsfrom ordinary chats. The existing Relics previews remain the viewer, and publishing does not require an HTML plan turn. - Uses the official
Obsidian CLIfor the parts only Obsidian knows: the active note, indexed search, backlinks, tasks, properties, Bases, and local file history. Agents get curated tools for reading and changing the vault through Obsidian itself. Writes follow the chat's permission mode, andRavenkeeps a vault activity summary of what changed. - Browses notes and projects, searches without getting tripped up by accents, manages attachments, and tracks usage and cost. It can pause running sessions near a provider limit, then pick them back up after the window resets.
- Puts
Claude,Codex, and installedACPproviders behind the same session interface. - Can route models from Forge-managed
CLIProxyAPIOAuth accounts throughClaude Code,Codex, and installedOpenCodeACP. Each route keeps its harness and actual model identity inLedger. - Can hand a task to a fresh Windows-native
Codex Computer Useworker, while keeping approvals,Umbodpolicy, and usage accounting insideHlið. - Runs
Whisperlocally for editable dictation. Native Codex chats can also take a recorded audio turn or use the separately gatedRaven Livemode. Completed replies can be read aloud through a local device voice, Microsoft speech on the Windows host, or supported Codex realtime audio. - Opens a real project shell in
Raven, with an optional interactiveClaude CLImode when the full terminal makes more sense than the structured chat UI. - Keeps linked vaults and workspaces, provider commands, permissions, scoped
MCPservers,ACPagents, provider extensions,Umbod, networking, updates, and lifecycle controls together without moving source repositories out ofWSL. - Checks
Hlið,Claude,Codex, and enabledACPagents for updates. It shows the right command or in-app flow for the installation, but it does not silently run installers. - Works as a responsive
PWAwith built-in or custom desktop/mobile themes, pull-to-refresh, and a privacy mode for paths, filenames, andLedgertotals.
Hlið is Windows-first and ships as one x64 executable.
- Grab the latest
hlid-vX.Y.Z-windows-x64.exefrom GitHub Releases. - Run it. The executable is currently unsigned, so
Windows SmartScreenmay complain. Check the filename, choose More info, then Run anyway if you trust the release. Hliðcopies itself to%LOCALAPPDATA%\Hlid\hlid.exe, refreshes the Start Menu shortcut, starts the local service, and opens the app in a browser.- Create the app password on the machine running
Hlið. It needs 12–256 characters, with no uppercase, number, or symbol ceremony. - Pick the
Obsidianvault, check the detected folders, choose the default provider and permissions, then pick a theme.
The default address is http://127.0.0.1:3000. It stays on the local machine
until network access is turned on. The user guide covers
the full first-run flow and the optional Tailscale setup.
The Obsidian CLI integration is optional. With Obsidian 1.12.7 or newer,
enable Settings → General → Command line interface, then check the
connection under FORGE → Workspace → Obsidian desktop. Hlid still browses
the vault directly when the CLI is not available.
- WATCH is for quick prompts, skills, slash commands, and scheduled
Routines. A run can stay in the current session or head into the background while the dashboard keeps an eye on it. - RAVEN is the full chat workspace. This is where the per-chat provider controls, goals, forks, voice, plans, approvals, attachments, Obsidian actions, and project terminal live.
- VAULT browses notes, projects, memory, and skills, with a jump back into the Obsidian desktop when the CLI is connected.
- FORGE is where all the setup lives: providers, permissions, networking,
voice, provider extensions,
Obsidian CLI,CLIProxyAPI,MCP,ACP,Umbod, updates, and lifecycle controls.
The user guide gets into the meat and potatoes of each page and the workflows that connect them.
| Page | What it is for |
|---|---|
WATCH (/) |
Quick prompts, skills, slash commands, scheduled Routines, usage, MCP state, recent sessions, and vault context. |
VAULT (/vault) |
Notes, projects, memory, skills, and a jump into the matching Obsidian desktop note. |
RELICS (/relics) |
Hlid-owned attachments, plans, reports, and reviewed Agent Skill packages. |
RAVEN (/raven) |
Full agent chat with provider controls, commands, goals, exact forks, voice, @ references, plans, approvals, questions, queues, and a real project terminal. |
EINHERJAR (/einherjar) |
Extra working directories or personality/context overlays. |
LEDGER (/ledger) |
Live-session controls, pinned and archived sessions, provider-history import, and analytics for tokens, cost, cache behavior, tools, stop reasons, context, and provider limits. |
FORGE (/forge) |
Settings, provider extensions, integrations, access, updates, maintenance, and developer tools. |
The packaged app keeps its executable, config, database, downloaded voice
models, and runtime data under %LOCALAPPDATA%\Hlid.
hlid.config.toml holds the vault layout, providers, server and TLS ports,
network access, attachments, voice, UI preferences, and registered agents. Most
of that can be changed in Forge. If a setting shows a restart marker, it does
not take effect until Hlið restarts. Server, ACP, and Umbod changes are the
main ones that need it.
Changing the working context is different. Reload that provider session so the agent gets the new context. A browser refresh only reloads the UI.
pricing-overrides.toml, managed from FORGE → Developer → Pricing, adds
effective-dated model rates and aliases without touching the built-in pricing
code. Old priced Ledger rows stay frozen, which keeps historical accounting
honest.
Forge can also keep separate custom palettes for desktop and mobile. Codex Computer Use model and effort defaults live under FORGE → Agents → Computer
Use and apply to the next one-shot Windows worker.
There is a small starting point in
hlid.config.example.toml.
The Obsidian CLI bridge covers the optional
desktop setup, note actions, agent tools, and approval behavior.
The CLIProxyAPI integration covers
the routed harnesses, OAuth accounts, and exactly what Hlid records for them.
Hlið uses one owner password. It stores an Argon2id hash, then gives a
successful browser an opaque HttpOnly trusted-device session for 30 days.
The first password can only be created on the Hlið machine, and remote
password login only works over HTTPS.
For another device, open FORGE → Access → Network and follow the guided
Tailscale/TLS setup. By default, Hlið accepts localhost and Tailscale CGNAT peers. Regular RFC1918 LAN devices need the separate local-network
switch. The same server-side session protects HTTP routes, APIs, chat
WebSockets, and terminal WebSockets.
Lost the password? Run this on the Hlið machine and restart it:
hlid.exe auth resetThat removes the credential and every trusted-device session. It leaves the vault and app config alone.
You need Bun 1.3.14 or something compatible, plus a local
Obsidian vault for interactive testing.
bun install
bun run dev:alldev:all starts the Vite UI and the Bun API/WebSocket server. The TLS
proxy joins in when certificate paths exist in hlid.config.toml.
The useful checks are pretty straightforward:
bun run check # Biome, TypeScript, and changed-code Fallow analysis
bun run test # Vitest suite
bun run test:db # Bun-only database and auth tests
bun run validate # Static checks, merged coverage, and full Fallow analysis
bun run build:win # Windows executable buildLedger's Import provider history action discovers Claude CLI/SDK/Cowork and Codex CLI/Desktop/editor sessions on Windows and configured WSL distros. It stores the transcripts and usage in Hlid, then makes those sessions resumable in Raven. Sessions created through Hlid's Codex bridge are excluded so the same work does not get counted twice. The dry-run-first CLI remains available for advanced recovery work.
bun scripts/import-provider-history.ts --db /path/to/hlid.db \
--codex-root /path/to/.codex/sessions \
--claude-root /path/to/.claude/projects
# Discover Claude and Codex history automatically.
bun scripts/import-provider-history.ts --db /path/to/hlid.db \
--discover-claude --discover-codex
bun scripts/repair-codex-usage.ts --db /path/to/hlid.db \
--rollout-root /path/to/.codex/sessions
bun scripts/repair-claude-usage.ts --db /path/to/hlid.db \
--transcript-root /path/to/.claude/projectsEach one writes a JSON manifest first. Read it. If the plan looks right, run
the same command with --apply. Apply mode verifies a standalone SQLite
backup before it touches hlid.db. Current imports retain their source surface
and can be resumed in Raven. Older usage-only rows stay read-only until the
original transcript is found and imported again. The same provider-history
discovery is available from Ledger's actions menu, where Hlid handles the
backup automatically.
Under the hood, Hlið uses TanStack Start/Router, React, a Bun server,
SQLite, WebSockets, and an AgentProvider abstraction. The Vite client
and runtime assets get embedded into the executable, so a release does not need
a loose dist folder sitting beside it.
Tagged releases validate on Linux, build and smoke-test the executable on
Windows, then publish the executable and its SHA-256 checksum. The
release workflow is the source of truth there.

