1.6 KiB
1.6 KiB
ADR-0002: Daemon placement and remote target configuration
Status: Accepted — 2026-05-23
Context
The inference box is an M1 Pro MacBook — a laptop, not always-on infrastructure. The rest of steveternet runs on the homelab and is deployed/managed through Komodo. We do not want bespoke job-controller logic living on the Mac.
Decision
foreman runs on the homelab (e.g. orgrimmar), containerized and deployed via
Komodo like everything else. It is given its Ollama target as a configurable
base URL (default: the Mac's Tailscale address) and reaches it over the network.
The Mac runs Ollama and nothing foreman-specific. It stays a dumb appliance.
Consequences
- Ops consistency: foreman is a normal Komodo-managed container.
- The target URL is config, never hardcoded — swapping the Mac for another backend is a config edit (within the one-target-per-daemon rule of ADR-0001).
- The Mac is a laptop and may sleep or change networks. The daemon must treat an
unreachable target as a transient, recoverable condition (see ADR-0007 for the
model poller's degraded mode and ADR-0004 for job retry semantics), never as a
fatal error. Operationally:
caffeinate/pmsetkeeps the Mac awake; Tailscale keeps its address stable. - Network is now the trust boundary; Ollama has no auth of its own (see ADR-0010).
Alternatives considered
- Co-locate foreman on the Mac. Rejected: contradicts the stated preference to keep controller logic off the laptop, and complicates Komodo-based deployment. Note that "given a target URL" keeps this reversible — co-location would just be pointing the URL at localhost.