Files
foreman/docs/adr/0002-daemon-placement.md
T
2026-05-23 16:41:20 -04:00

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/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.