There are two config homes. Mixing them is the usual “I edited the wrong file” failure.
| Product | Default directory | What lives there |
|---|---|---|
Fabric (houdry) | ~/.houdry (HOUDRY_HOME) | Binary, node id, PKI, server state, catalog |
| Agent (desktop) | ~/.houdry-agent or %LOCALAPPDATA%\houdry-agent (HERMES_HOME) | Sessions, knowledge, config.yaml |
Point Agent at Fabric
In the app: Houdry server URL → https://HOST:8080/v1.
| Place | URL |
|---|---|
| Dashboard in a browser | https://HOST:8080/ |
| Agent / OpenAI SDK | https://HOST:8080/v1 |
Match the port you passed to houdry serve --listen. Default is 8080. Agent discovery also checks 18080 and 8090.
Equivalent Agent config if you edit files instead of the UI:
# ~/.houdry-agent/config.yaml
model:
provider: custom
base_url: https://127.0.0.1:8080/v1
default: auto
# ~/.houdry-agent/.env
OPENAI_API_KEY=houdry
OPENAI_API_KEY here is only the token Fabric expects. It does not send traffic to OpenAI.
Trust $HOUDRY_HOME/server/pki/root_ca.crt (created on first houdry serve) on every machine that calls /v1.
Fabric listen and token
houdry serve --listen 0.0.0.0:8080 --token YOUR_TOKEN
Then Agent must send that token. CLI:
export HOUDRY_SERVER=https://127.0.0.1:8080
export HOUDRY_TOKEN=YOUR_TOKEN
--no-lan-discover disables Wi-Fi announce. Everyone then uses an explicit URL.
GPU enrollment uses a different token: houdry node enroll create prints HDRY_…. Do not put that in HOUDRY_TOKEN or --token.