Hlið is a local web UI for working with an Obsidian vault through Claude,
Codex, or another installed Agent Client Protocol provider. This guide is
for the packaged Windows app. If you are running from source, the
README has the setup and validation commands.
- Download the current
hlid-vX.Y.Z-windows-x64.exefrom GitHub Releases. - Run it.
Hliðis currently unsigned, soWindows SmartScreenmay get in the way. Check the filename, choose More info, then Run anyway if you trust the release. - The downloaded executable installs the real copy at
%LOCALAPPDATA%\Hlid\hlid.exe, refreshes the Hlið Start Menu shortcut, starts the service, and openshttp://127.0.0.1:3000.
Use the Start Menu shortcut after that. Running Hlið again while it is already
up just opens the existing interface. Autostart is optional and lives in
Forge.
The first browser on the Hlið machine shows Create app password. Use
12–256 characters. There is no uppercase, number, or symbol checklist.
Initial setup only works from the host machine. Once that is done, other trusted
devices can sign in over the HTTPS endpoint. A browser stays trusted for 30
days unless you lock it, change the password, or revoke every device in Forge.
Pick the local Obsidian vault, then make sure the detected structure actually matches it.
The first-run wizard has five small steps:
- Welcome explains the page names.
- Vault picks an existing local
Obsidianvault. Hidden folders stay out of the folder picker. - Structure detects a
PARAor wiki-style layout and fills in the folders it recognizes. Check the vault name, folder mappings, available default provider, that provider's permission mode, and the theme. Empty optional mappings are fine. - Primer explains how
Hlið, the vault, and its skills fit together. - Done opens the app.
The wizard writes hlid.config.toml beside the installed executable. The same
settings live under FORGE → Workspace later. If the vault gets moved,
renamed, or disconnected, fix the path there before wondering why the vault
pages are empty.
Open RAVEN and pick a provider. That provider needs to exist and already be
authenticated in its configured runtime, either native Windows or a WSL
wrapper.
The packaged app checks Claude and Codex during startup so provider-native
commands, models, subagents, and MCP status are ready before the first real
chat. If a provider is slow, Hlið finishes the check in the background. It
does not send a user turn or spend model tokens.
Pick an old session or start a new one. Typing / opens the shared command
picker, where vault skills, Hlid-managed imports, global skills, and
provider-native commands live together. Compatible commands can be stacked.
Their badges stay above the composer until they are removed or run.
Need to point the agent at something without pasting half the vault? Type @
in the Watch or Raven composer. The picker searches exact vault files and
recent Relics, then keeps each selection attached to that turn. Hlid resolves
the real path on the server and translates it for the selected Windows, WSL, or
ACP runtime. The same references survive when a prompt gets queued behind a
running turn.
The book button beside the normal attachment control grabs whichever note is active in the Obsidian desktop and adds it as the same kind of exact vault reference. Handy when the prompt is basically "look at what I am looking at."
Hlið can expose separate Claude Code · CLIProxy, Codex · CLIProxy, and
OpenCode · CLIProxy providers. The selected harness still owns its agent
loop, tools, commands, permissions, and MCP behavior, while
CLIProxyAPI translates model
requests to a connected OAuth account. These are optional routes alongside the
normal Claude, Codex, and ACP providers.
Open Forge → Integrations → CLIProxyAPI and choose Install managed. On Windows, Hlid downloads a reviewed, pinned release, verifies it against the SHA-256 digest shipped with Hlid, creates a loopback-only configuration, and owns the process lifecycle. CLIProxy updates advance only with an Hlid release after the new archive has had time to settle. The managed install includes matching Windows and Linux binaries. Hlid starts the Linux sidecar inside each configured WSL distro so WSL-backed Claude Code and Codex harnesses keep their native toolchain while using the same OAuth accounts. Connect any supported account shown in Forge: OpenAI Codex, Anthropic Claude, Google Antigravity, Moonshot Kimi, or xAI. OpenAI, Kimi, and xAI use device-code flows, so you can finish their sign-in from the Hlid desktop or a mobile browser without a localhost callback. Claude and Antigravity keep their browser-callback flows on the Windows host. Forge opens the authorization page, keeps a fallback link visible, and shows the verification code when one is required. Hlid starts the integration with the app, offers an explicit repair control, and can remove the binaries and all saved accounts.
If Windows Security quarantines the executable after extraction, check Protection history before retrying. Once the reviewed file is allowed, Check / repair puts the managed install back together.
The generated client key and OAuth tokens remain in Hlid's private integration directory and are never returned to Forge. Remote management and the CLIProxyAPI control panel are disabled because Hlid does not use either one.
After CLIProxy is enabled, choose one of its routed providers anywhere Hlid
offers a provider picker. Claude Code and Codex routes appear when their CLIs
are installed. The OpenCode route appears when OpenCode's ACP command is
installed. Hlid injects runtime-only provider configuration for Codex and
OpenCode, so it does not rewrite ~/.codex/config.toml, opencode.json, or
either harness's saved credentials.
For an existing, externally managed CLIProxyAPI process, configure advanced
mode in hlid.config.toml:
[cliproxy]
enabled = true
mode = "external"
base_url = "http://127.0.0.1:8317"
api_key = "replace-with-a-long-local-key"
model = "gpt-5.6-sol"
effort = "xhigh"
permission_mode = "default"
turn_recaps = trueKeep an external process on loopback. The api_key is a CLIProxyAPI
client-facing api-keys value, not a management secret. Hlid stores it in the
local config file but redacts it from browser config responses. The provider
health check verifies the selected harness executable and the proxy model
catalog. Forge and Raven use every model returned by the catalog and show its
upstream owner in the model label.
Ledger stores the routed harness and actual response model. Hlid estimates known OpenAI and Anthropic models from its effective-dated pricing catalogs. Models without a matching catalog rule, including supported Google, Moonshot, or xAI models, remain explicitly unpriced. Estimates are API-equivalent comparisons, not the amount charged to an OAuth subscription. Existing priced rows stay frozen when rates change.
Hlid does not consume CLIProxyAPI's short-lived usage queue or import traffic from other clients. Ledger therefore covers requests made through Hlid only. CLIProxyAPI account-wide quotas and subscription limits are not available as Hlid usage windows, so automatic usage-window sleep does not apply to this route.
Tool calls stay in the conversation. No mystery spinner while the agent does who knows what.
While a run is active:
- Tool calls show up inline and can be expanded when the details matter.
- Permission cards can approve once, approve for the session, save a permanent approval, or deny with feedback.
- Another prompt gets queued instead of interrupting the current turn. It can be promoted or canceled before it runs.
- Agent questions show their choices inline, with a note field when the buttons do not quite cover the answer.
- Plan mode waits for approval, revisions, or cancellation before the
implementation turn. The
HTMLtoggle opens an agent-authored plan in the sandboxed viewer. A pending plan stays visible when another trusted device opens the same session. - Supported providers show subagent status, current work, runtime, and usage.
- Long chats load the newest history first. LOAD OLDER HISTORY pulls in the earlier turns without jumping the scroll position around.
- Agent output can render tables, alerts, highlighted text,
Mermaid, andLaTeXmath using$...$,$$...$$,\(...\), or\[...\]. - The message copy button copies the rendered text.
Files can be dropped onto the composer or added with the attachment button. Uploads can stay temporary for one session or become managed vault attachments.
Watch is the landing page and the fastest way to throw work at an agent.
WATCH runs a prompt or a compatible mix of vault, global, and provider-native slash commands. It can target a registered agent, attach files, use voice input, continue the current session, or send the run into the background.
The rest of the page keeps live session state, provider usage, recent query
cost, seven- and thirty-day activity, the active provider's MCP status, and
recent sessions in view. When more than one provider reports usage, use the
provider tabs above the usage strip to switch between their reported windows.
Hlið keeps the last good readings in place while it loads new ones. Live
provider updates and a regular refresh keep them current. The draft survives
navigation and refreshes until it is run or cleared. Small thing, but boy does
losing a half-written prompt get old fast.
Use Schedule to turn the current prompt into a Routine, or open it with an
empty draft to build one from scratch. A routine can run once, at a fixed
interval, daily, or on selected weekdays. It freezes the provider, model,
effort, agent directory, prompt inputs, and timezone with the definition, so a
later default change does not quietly alter the job.
Routine inputs can include prompts, skills, provider commands, exact vault
references, and retained Relics. Results can stay as a Markdown Relic, append
to the daily note or an exact note, or create a new note in the mapped Inbox or
Raw folder. Run now is there for the sensible test before trusting a
schedule. The manager also shows run history and can pause, resume, or archive
the definition.
Unattended access is explicit. A routine can be read-only, use a reviewed set
of exact grants, or run with full access when Umbod also allows it. Exact
grants can cover a file operation, shell command, Obsidian action, MCP call,
or Hlid tool. Agent questions, plan exits, and Windows Computer Use are never
preapproved. If a run reaches anything outside its policy, it stops at
Action required instead of guessing what you meant. Overlapping runs are
skipped rather than piled on top of each other.
RAVEN is the full agent workspace. Conversation history, provider controls, slash commands, attachments, voice, tools, permissions, questions, plans, subagents, and queued follow-ups all live here.
The badge above the composer changes the provider, model, effort, and permission mode for that chat. Those choices stick to the session. So do the selected agent, queued prompts, and unsent draft. Navigating away or refreshing the page does not reset the whole thing back to whatever the vault default happens to be.
Codex skills can be composed with each other. Claude accepts up to six
compatible selections. An ACP session accepts one provider-native prompt
command at a time, but that command can still use vault skills. Switching the
active CLI drops commands that belong to the old provider instead of quietly
sending nonsense to the new one.
The picker keeps three execution types distinct: vault or Hlid-managed skills
inject a skill file, provider-native commands go back to that provider, and
Hlid capabilities such as /review and /computer-use use Hlid's own routing,
approval, audit, and accounting path.
Structured provider actions stay out of the prompt text too. /compact asks a
supported Claude or Codex runtime to compact its active conversation, /mcp
refreshes the session's MCP inventory, and /goal manages a native Codex goal
without making the model interpret a pretend slash command.
Native Codex chats show their current goal above the conversation. Use /goal
to open the editor, set an objective, and optionally give it a token budget.
/goal pause, /goal resume, and /goal clear manage it directly. The strip
shows elapsed time and token use, plus whether the goal is active, paused,
blocked, usage-limited, budget-limited, or complete. The goal stays with the
Codex thread.
Turn on Plan when the agent should figure out the work before touching it. Turn on HTML beside it for the full styled plan. Approval, cancellation, and revision feedback all happen from the plan card or viewer.
Completed assistant replies have Obsidian actions beside copy and read aloud. One appends the reply to the active note, and another appends it to today's daily note. If the vault has an Inbox or Raw folder mapped, a third action makes a new timestamped note there. That capture can use the template selected under FORGE → Workspace → Vault. Each action only sends the finished reply text, and one save is limited to 20,000 characters.
The Terminal toggle opens a real login shell in the current vault or registered-agent directory. Desktop puts it below the chat. Mobile switches between Chat and Terminal tabs. Toggling the terminal off ends the shell, but normal site navigation only detaches the browser. Come back to that chat and the shell is still there.
An idle supported Claude or Codex chat gets a fork control beside the new-chat
button. It asks the provider for an exact copy of the whole conversation,
opens the copy, and leaves the source alone. The fork keeps a link back to its
source. Claude also offers Branch from here beside a completed assistant
reply when only the conversation through that point should come along. The
same whole-session fork is available from the row menu in Ledger. Current
ACP agents do not expose an exact fork.
If interactive Claude mode is enabled in Forge, Raven becomes a full
Claude CLI terminal instead of the structured timeline.
Same session and controls, just fitted to the smaller screen without turning into button soup.
Vault follows the folders and status words picked during setup.
VAULT browses the configured note, project, memory, and skill directories.
Projects come from YAML front matter and the status vocabulary in
hlid.config.toml. Hlið does not impose its own project statuses on the
vault.
Text search ignores case and accents, so Hlid still matches Hlið. The same
normalization is used by Relics, Ledger, Forge, and the slash-command
picker.
Expand a note or project and Open in Obsidian jumps the desktop app straight
to that file. Selected vault references in Watch and Raven get the same
shortcut, which is pretty useful when an agent points out the exact note that
needs a human pass.
Relics is the Hlid-owned library for attachments, plans, reports, and
imported skills.
RELICS is the browser for Hlid-owned files. Uploads, generated HTML plans,
reports, and imported skill packages live under the installed app's library
directory rather than inside a repository or agent folder. The Obsidian vault
and WSL workspaces remain linked sources; Hlid does not copy or relocate them.
When you ask for a durable deliverable, agents can publish generated HTML,
PDFs, images, and other reports directly into Relics from an ordinary chat.
Hlid copies workspace files across the Windows or WSL boundary into managed
storage, associates them with the chat, and returns a link that opens through
the existing Relics viewer. General HTML reports do not require plan mode;
HTML plan proposals continue to use the separate plan review workflow.
Use Skills to install a managed Agent Skill from a GitHub repository,
repository URL, or skills.sh URL. Hlid discovers the available packages,
stages the selected revision, and shows every readable file for review before
anything is installed. Approve one package at a time when its instructions and
supporting files make sense. The installed copy then appears in the Watch and
Raven skill picker and can be removed from Hlid later without changing its
source repository.
Use Import for skills that are already installed in a Claude or Codex registry or a configured ACP workspace. Discovery does not start an agent or CLI process, so it remains responsive while those providers are busy. Hlid groups the results by provider and shows scope, known enabled state, Windows or WSL runtime, description, file count, and size. Read SKILL.md loads the complete source document on demand without sending its filesystem path to the browser. Select the packages you want and import them together. The provider-neutral Hlid copies work even when a provider has a same-named skill. Removing an imported copy leaves the provider's original alone, ready to import again if that seemed like a better idea tomorrow.
The same managed files show up under Relics in the composer @ picker. Pick
one there when an existing attachment, report, or generated plan needs to go
back into a prompt. It stays a reference to Hlid's managed copy, so there is no
second upload to clean up later.
Filename search updates while you type. The list can be filtered by artifact
category, date, MIME group, or owning session, then sorted by size or creation
time. If a new upload lands while the page is open, a NEW RELICS pill
appears instead of yanking the list back to page one. Desktop gets the full
table, while mobile uses compact cards.
Deleting a vault attachment normally removes its managed record. Deleting the
source file too is a separate opt-in setting in Forge, because those are two
very different levels of "clean up."
LEDGER has two views: Sessions and Stats.
Sessions puts live processes above the recorded session list. Search labels
as you type, filter by agent or model, and sort by recent activity, cost, or
tokens. A drill-down from Stats carries its date, provider, model, or stop
reason filters into the list.
On mobile, the live rows collapse into a LIVE SESSIONS summary. Open it to
see sessions ordered with approvals and errors first, followed by running and
idle work. A session can still be opened in Raven, stopped, or closed from
that panel.
The overflow menu exports every session as CSV or JSON. It can also remove
records older than 7, 30, or 90 days when the database actually has sessions
that old. A row menu handles one rename or delete, pins a useful session to the
top, or moves it into the archived view. Archiving is reversible, clears its
pin, and protects the session from age-based cleanup. Supported idle Claude and
Codex rows also get the exact fork action.
Import provider history discovers Claude CLI/SDK/Cowork and Codex
CLI/Desktop/editor sessions from Windows and every configured WSL distro. Hlid
makes a checked SQLite backup, imports the transcripts and usage, and marks
the original surface on each row. Current imports can be opened and resumed in
Raven. Sessions that already came through Hlid's Codex bridge are skipped so
their usage is not counted twice. Running the import again upgrades what it can
and leaves anything already current alone. Older usage-only imports remain
read-only if their original transcript is no longer available.
Stats filters by date range, agent, provider, and model. It breaks down cost, priced coverage, input/output/cache tokens, activity, model share, tool use, tool errors, stop reasons, and time-of-day patterns. Pick a model or stop-reason segment to drill into the matching sessions.
Privacy mode masks the headline totals, sensitive chart labels, session names, and paths. Handy when a screenshot is the goal and leaking the whole workspace is not.
EINHERJAR adds other agent directories. A context entry loads AGENTS.md
or CLAUDE.md as an instruction/personality overlay while keeping the vault as
the working directory. If both files exist, AGENTS.md wins because it is the
provider-neutral ACP contract. CLAUDE.md stays as the compatibility
fallback.
A cwd entry runs the agent from the registered directory instead. Paths
outside the vault need the external-agent switch in Forge.
Expand an Einherjar entry to preview or edit its root AGENTS.md and
CLAUDE.md. Missing files can be created in place. Hlid keeps the two files
separate because Codex and Claude load different native instruction names.
Forge groups settings by what you are trying to change, not by whichever config object owns it.
FORGE is split into these categories:
- Overview shows the current config and service state.
- Workspace holds the vault, folder mappings, vocabulary, and the optional Obsidian desktop CLI connection.
- Agents holds provider, model, effort, permissions, usage limits, recaps,
vault and global instruction-file editors, automatic usage-window
sleep/resume behavior, and
Codex Computer Usedefaults when the Windows capability exists. Global files are grouped by their Windows or WSL runtime, and edits take effect when the matching provider conversation starts or reloads. - Access has network,
TLS, password, and trusted-device settings. - Experience has built-in or custom desktop/mobile themes, input behavior,
the provider-entry visibility toggle for the
/picker,HTMLplan defaults, voice, and browser-local privacy mode. Hlid and vault entries always remain visible; the toggle controls every provider-badged skill, command, or plugin. - Integrations manages
CLIProxyAPI,MCP,Umbod, and theACPcatalog. - Extensions manages installed Claude and Codex plugins and their marketplaces.
- Developer switches between the event log, local API reference, and pricing catalog.
- Advanced has database maintenance, provider-session reload, restart, and shutdown controls.
Most edits autosave. The header shows whether the form is saving, dirty, saved,
or waiting on a restart. Server, ACP, and Umbod changes are the main things
that set the restart marker. If a save or system inventory call fails, the same
header has a retry action.
The search box filters whole setting categories. Vault MCP configuration stays
vault-scoped. Each Einherjar entry keeps its own MCP configuration on that
agent's page. Hlid merges those compatibility files with provider-native and
live runtime discovery into one scoped inventory; it does not flatten servers
from unrelated agents into a global list. MCP edits sync into the live vault
session. Working-context changes still need a provider-session reload,
which clears the live provider conversation but leaves its recorded Ledger
history alone.
Extensions keeps the Claude and Codex inventories separate. Browse an
installed package or marketplace, filter by environment or category, and
review one package before installing it. The review includes its files and the
capabilities it declares, such as hooks, MCP servers, scripts, or apps. You
can also add or remove a marketplace source, then enable, disable, update, or
remove its packages through the provider's native registry. An idle runtime
refreshes immediately. If a turn is running, Hlid leaves it alone and reloads
the extensions before the next turn.
Agents → Auto-sleep on usage limit pauses work near the provider's usage
threshold or after the provider reports a hard limit. Hlið uses the five-hour
window when it is available and weekly usage when it is not. The Raven banner
shows which window filled up and when the session should wake. RESUME NOW
wakes every sleeping session on that provider and lets them keep going until
the current window resets. Maximum sleep keeps a session from waiting longer
than the configured cap.
Developer → Pricing shows the built-in model and alias timelines, then edits
pricing-overrides.toml for local rules. Rates and aliases can use UTC
effective_from and effective_until dates, so a moving label like
codex-auto-review can change without an app release. Saving validates the
whole file before replacing it. Old priced rows stay frozen, and new fallback
estimates use the rule that was active at the query time.
The custom theme editor can start from the active, dark, tan, or desktop
palette. App, navigation, chat, Ledger, and chart colors are separate.
Desktop and mobile can have different palettes, and the native-control setting
keeps browser menus, inputs, and scrollbars readable against the result.
Hlið still reads the configured vault directly, so the Obsidian CLI is an
optional extra rather than a new requirement. It is there for the bits where
Obsidian's own index and desktop state know more than a filesystem scan does.
Install Obsidian 1.12.7 or newer and turn on Settings → General → Command
line interface inside Obsidian. Then open FORGE → Workspace → Obsidian
desktop. Recheck detects the installation without launching anything.
Test connection verifies the configured vault and may start the Obsidian
desktop if it is closed.
Hlid can find the installed Windows redirector even when obsidian is not on
PATH. A source build running inside WSL can use that same Windows install,
so there is no second Obsidian setup hiding in the sauce.
When the bridge is available, Claude, Codex, and installed ACP agents get
the same curated Obsidian tools. They can search indexed text, inspect the
active or daily note, read exact notes, follow the link graph when asked, find
unresolved or orphaned notes, query tasks and properties, run Bases views, and
inspect or compare local file history. Broad queries come back with totals and
truncation details instead of dumping the whole vault out the wazoo. The agent
can narrow by path, status, view, or version, or ask for a count when that is
all it needs.
The write side is curated too. Agents can create notes with a core Templates or
Templater template, capture a quick note into the mapped Inbox or Raw folder,
open today's daily note, append or prepend text, replace one exact block in an
existing note, or apply several exact replacements as one atomic patch. They
can also add an item through a Base, update one exact task or property, move or
rename a file through Obsidian so its links can follow along, and send one exact
file to trash through Obsidian's default delete behavior. Hlid does not expose
the permanent flag. Exact replacement first requires the agent to read the
note. It fails without a change when expected text is missing or occurs more
than once. An atomic patch applies every replacement or none of them. Raven
groups successful changes into a Vault activity card with the affected
paths, added and removed text previews, and shortcuts back into Obsidian. File
history stays read-only, so recovery still happens in Obsidian itself.
Every note change follows the active agent permission policy. Running an arbitrary Obsidian command is stricter: the agent discovers the exact command ID first, and a new command still asks for approval even when the chat would normally bypass permission prompts. Always trusts only that command in the configured vault. Remembered commands show under FORGE → Workspace → Obsidian desktop, where they can be forgotten again.
A command's vault activity shows the active note before and after when Obsidian can report it. That is useful context, not a complete file diff, because a plugin command can touch more than the active note. Open the note in Obsidian for the full history and recovery options.
Hlið binds to 127.0.0.1 by default. Do not put port 3000 directly on an
untrusted network. Come on now.
For another device:
- Install and authenticate
Tailscaleon theWindowshost and the other device. - Open FORGE → Access → Network and use Set up with agent, or follow the manual steps shown there.
- Generate a
Tailscalecertificate for the host'sMagicDNSname and keep the certificate and private key under%LOCALAPPDATA%\Hlid. - Set the
TLScertificate/key paths, turn on network access, and restartHlið. - Open the
HTTPSMagicDNSaddress shown inForge. The defaultTLSproxy port is3443. - Sign in with the app password. The browser can install the
PWAif an app-shaped window is useful on that device.
Remote password login and microphone capture both need HTTPS. Hlið accepts
localhost and Tailscale CGNAT peers by default. Only turn on regular RFC1918
LAN access for a network you actually trust.
Every completed assistant reply in Raven has a speaker control beside the
copy action. It starts only when tapped. While it is reading, the same control
pauses or resumes and a separate stop control ends playback.
Open FORGE → Experience → Read aloud to choose the speech engine, voice,
and reading speed. Device browser uses a local speech voice on the device
viewing Raven. Hlið excludes voices that the browser reports as remote.
Microsoft host uses a voice installed on the Windows computer running
Hlið, then plays the result as regular audio on the viewing device. That
option works from a phone connected through Tailscale and gives the browser
exact media pause and resume behavior.
When Codex realtime Developer Preview is available for the signed-in Codex account, Codex realtime appears as another read-aloud engine with its own voice. This is a separately gated Codex capability. The local device and Microsoft choices remain available without it.
The speech engine, Microsoft voice, and reading speed are saved in the Hlið
configuration and apply to every device. The selected device-browser voice
stays on that device because each browser can expose a different voice list.
Microsoft speech and device speech both run locally without a cloud speech
service. Microsoft speech audio does travel from the Hlið host to the viewing
device over the current Hlið connection.
Read aloud skips fenced code blocks, link addresses, and Markdown formatting. It reads the finished response text, not tool activity or a reply that is still streaming.
Open FORGE → Experience → Voice and choose what the microphone should do.
Dictate with Whisper creates editable text locally. Download a Whisper
model, select it, and turn voice on. The model loads locally and stays warm for
repeated transcription. Switching models hot-loads the new one without a
server restart.
Whisper threads controls how much CPU a transcription can use. Higher is faster, but boy does it make the machine work for it. Changing the value reloads the voice model. Vocabulary hints gives Whisper up to 50 preferred spellings, one per line, which is handy for project names and technical terms the old noggin does not want to correct after every recording.
In Watch or Raven, tap the microphone once to record and again to stop. On
desktop, the configured shortcut does the same thing. The default is
Alt+Shift+V.
The browser converts the recording to mono 16 kHz WAV, then the Hlið host
transcribes it locally. Audio does not become an attachment or a database row.
The text can fill the draft or send immediately, depending on the Forge
setting.
Talk to Codex records the full clip and sends it as a normal audio turn to the selected native Codex model. It appears only when that model and account support audio. Unlike dictation, it does not turn the recording into an editable draft first.
With the same separately gated Codex realtime capability, an idle native Codex chat also shows Raven Live. It opens a live microphone session with two-way audio and a running transcript. It is its own mode, not a replacement for local Whisper or the normal recorded audio turn.
Remote microphone capture needs the HTTPS endpoint. If it is not working,
check browser permission, HTTPS, the selected model, and the voice toggle.
The default upload limit is 25 MB. Images, PDF, plain text, Markdown, CSV,
and JSON are allowed out of the box. Both the byte limit and MIME allowlist
live in hlid.config.toml.
Use an ephemeral attachment for throwaway session context. Use a vault attachment when the file should still exist after the session is done.
Windows Computer Use only appears when Hlið runs on Windows with a native
Codex CLI and the computer-use:computer-use plugin installed and enabled.
Its status lives under FORGE → Agents → Computer Use.
The one-shot worker can inherit the calling chat's model and effort or use fixed
defaults. Select /computer-use in Watch or Raven, then describe the
Windows desktop task. Hlið starts a fresh native Codex worker and shows its
progress inline.
This works from a WSL-backed chat because /computer-use is an Hlid capability,
not a command executed inside that WSL process. Hlid authorizes and audits the
handoff, then delegates the desktop task to the Windows-native worker. Codex's
native per-application approval store remains the final app-access boundary.
Every app approval still goes through the normal Hlið/Umbod policy. Session
and permanent approvals need an explicit choice. The worker closes when the job
is done, while its turns, duration, tokens, cache use, and estimated cost stay
in Ledger.
These tools are for a source checkout, not the packaged app. They dry-run first
and write a JSON manifest before changing anything.
bun scripts/import-provider-history.ts --db /path/to/hlid.db \
--codex-root /path/to/.codex/sessions \
--claude-root /path/to/.claude/projects
# Discover the current user's 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/projectsAdd another root flag for archive directories. Read the manifest, then repeat
the command with --apply if the plan is right. Apply mode verifies source
hashes and a standalone SQLite backup before touching the database. Current
imports include the transcript needed to resume from Raven; old
accounting-only rows can be upgraded when their original source is still
available. Stop Hlið before running maintenance against its live hlid.db.
Hlið checks GitHub Releases at startup and can check again from Forge. An
app update downloads a versioned executable and launches it through Windows
so SmartScreen can do its thing. Accepting that launch replaces the canonical
copy and restarts Hlið. Dismissing it leaves the current version alone.
Hlið also checks the installed Claude and Codex CLI versions. Enabled
ACP agents report their own versions, which get compared with the ACP
registry. Updates show in the global banner and under FORGE → Overview with
the command that belongs to that installation.
From a loopback browser or an authenticated Tailscale connection, UPDATE
can handle a user-writable installation. Hlið warns before stopping active
provider sessions, releases shared app-server processes, runs the known update
command, then checks the installed version again. Terminal sessions stay open.
An install that needs elevation, like a root-owned global npm package inside
WSL, gets OPEN TERMINAL instead. Hlið releases the provider, copies the
exact command, and opens a terminal in the matching distro and workspace. Paste
the command there so sudo can ask for the password itself. Hlið never asks
for, stores, or relays that password. Custom ACP executables keep using their
original installer.
Other LAN clients can see versions and copy guidance, but they cannot stop sessions or launch an update.
Installed PWA clients pick up a new build through the service worker. It swaps
the cached assets and refreshes on the next load. No manual cache-clearing dance
needed.
Forge can add or remove the current executable from the per-user Windows
Run key. Restart and shutdown are in the same area. Autostart runs Hlið in the
background without opening a browser.
Reload a provider session after changing its vault context or MCP setup. A
browser refresh only reloads the interface. It does not replace a provider
reload or a full Hlið restart.
Run this on the Windows host, then restart Hlið:
%LOCALAPPDATA%\Hlid\hlid.exe auth resetThat removes the password credential and every trusted-device session. Vault data and application config stay put. The next local visit goes back to Create app password.
Check that the URL uses HTTPS, both devices are on the same Tailscale
network, Forge shows the expected MagicDNS name and certificate paths,
network access is on, and Hlið was restarted after the change. A normal LAN
IP also needs the local-network switch.
Open FORGE → Workspace on the host and check that the vault path still exists and is a directory. Fix moved or renamed folder mappings, save, then reload the provider session that uses them.






