Status: Current
Home AI Cluster keeps static-cluster topology declarations and local runtime-composition files separate. Topology declarations describe explicit cluster nodes and routing eligibility; runtime-composition files configure only the caller-local runtime adapter. Neither introduces discovery, scheduling, supervision, or implicit configuration lookup.
The canonical repository examples remain under examples/ on GitHub.
Users of an installed HAC package can copy and adapt the TOML shown here into a
local file, then pass that file's path explicitly. From a repository checkout,
the corresponding files under examples/ can be used directly.
Static-cluster topology declarations
One remote node
This saved declaration file form declares one remote node. The 192.0.2.0/24
address is
documentation address space; replace it with an operator-owned trusted-LAN
address.
Source: examples/static-cluster-single-remote.toml.
remote_node_id = "remote-node"
remote_base_url = "http://192.0.2.10:25042"
Two ordered remote nodes
Declaration order is remote priority order. It does not introduce load balancing or scheduling.
Source: examples/static-cluster-two-remotes.toml.
[[remote_nodes]]
node_id = "remote-a"
base_url = "http://192.0.2.10:25042"
[[remote_nodes]]
node_id = "remote-b"
base_url = "http://192.0.2.11:25042"
Local Chat-only eligibility
local_capabilities = ["chat"] restricts caller-local routing eligibility. It
does not disable adapters or configure the runtime; the remote declaration
remains separate.
Source: examples/static-cluster-local-chat-only.toml.
local_capabilities = ["chat"]
[[remote_nodes]]
node_id = "remote-node"
base_url = "http://192.0.2.10:25042"
Local runtime composition
Retained local HAC execution limit
Use hac config local to retain an HAC execution limit for this machine's
ordinary HAC process:
hac config local \
--runtime ollama \
--ollama-model llama3.2:1b \
--execution-limit 2
This means this HAC process may engage up to two overlapping HAC-owned
execution intervals. The value limits overlapping HAC-owned execution
intervals. It does not describe or guarantee runtime concurrency. It belongs
only to this machine's local HAC configuration; do not add it to config node
or a remote declaration.
Inspect retained configuration with:
hac config show
The output displays an explicitly retained local value, or HAC execution
limit: not retained. not retained preserves the ordinary effective limit of
1. This command reports retained configuration only: it does not inspect
current work or runtime load. hac config local --reset clears the retained
local record. Configuring a complete local record without --execution-limit
also leaves the limit not retained, with effective limit 1.
Retained local Image Generation companion
For the ordinary integrated workflow, retain the textual runtime and the operator-managed stable-diffusion.cpp endpoint separately:
hac config local --runtime ollama --ollama-model qwen2.5-coder:7b \
--local-capability code
hac config image-generation --base-url http://127.0.0.1:<SD_SERVER_PORT>
hac config show
hac local
sd-server lifecycle and image-model selection remain operator-managed. HAC
retains only the explicit loopback HTTP endpoint, then composes it with the
ordinary textual runtime. hac local --runtime-config <PATH> remains a
complete alternative and does not merge this retained companion.
Ollama
runtime = "ollama" selects Ollama, and [ollama] contains local adapter
configuration. model names an already-installed operator-owned model, while
disable_thinking = true requests the already-documented Ollama behavior. This
file does not configure topology.
Source: examples/runtime-ollama.toml.
runtime = "ollama"
[ollama]
# Replace with an already-installed operator-owned Ollama model.
model = "replace-with-installed-model"
disable_thinking = true
llama-server
runtime = "llama-server" selects an already-running local llama-server. Its
base URL points to that server, and model is the server's model identifier.
This file does not start or supervise llama-server and does not configure
topology.
Source: examples/runtime-llama-server.toml.
runtime = "llama-server"
[llama_server]
# Adapt this loopback port to the already-running local llama-server.
base_url = "http://127.0.0.1:8080"
# Replace with that server's model identifier.
model = "replace-with-server-model"
Using the files
Use topology declarations explicitly with the ordinary static-cluster commands:
hac preflight --declaration <PATH>
hac status --declaration <PATH>
hac static-cluster --declaration <PATH>
Use a runtime-composition file explicitly for the caller-local adapter:
hac local --runtime-config <PATH>
hac static-cluster \
--declaration <TOPOLOGY_PATH> \
--runtime-config <RUNTIME_PATH>
hac status \
--declaration <TOPOLOGY_PATH> \
--runtime-config <RUNTIME_PATH>
The existing single-runtime file shape works with all three commands. An
RFC-0110 multi-binding file uses only [[bindings]] entries and is accepted by
request-capable hac local and hac static-cluster; hac status rejects it
locally before observation, and hac health remains unchanged.
These are explicit declaration and runtime-composition files: commands use them
only when their paths are supplied. They are distinct from HAC-managed retained
configuration created with hac config. That retained configuration is an
ordinary baseline for hac static-cluster when applicable, but bare
hac preflight remains local-only and hac status requires
--declaration <PATH>. --runtime-config remains a self-contained alternate
runtime-composition source and does not carry an HAC execution limit.
From a repository checkout, the example files are available directly under
examples/. See the Command Reference for exact command
contracts and the Canonical Operator Workflow for the
supported operating procedure.