# 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`/`pmset` keeps 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.