Skip to content

macOS arm64 release binaries require macOS 26 (Tahoe) minimum - breaks on macOS 15 and earlier #74

Description

@EnzoPython3

Summary

The macOS arm64 release binaries have LC_BUILD_VERSION set to minos 26.0, meaning they refuse to run on any macOS version before 26 (Tahoe). This silently breaks atomic-agent's managed local backend for anyone not yet on macOS 26.

Environment

  • macOS 15.7.8 (Sequoia), build 24G824
  • Apple Silicon (arm64), M3 Pro
  • atomic-agent, managed mode, model gemma-4-12b

Steps to reproduce

  1. Install atomic-agent, leave localModels.mode as "managed"
  2. Let atomic-agent download the macOS arm64 backend release into <stateDir>/models/backend/
  3. Start a chat turn

Actual behaviour

atomic-agent surfaces only:

Turn failed [transport]: fetch failed

There's no indication that the backend process never launched, or why. It looks like a network/config problem, not an OS compatibility one.

Root cause

$ otool -l llama-server | grep -A4 LC_BUILD_VERSION
     cmd LC_BUILD_VERSION
 platform 1
   minos 26.0
     sdk 26.5

dyld refuses to load a binary whose minimum OS requirement exceeds the running OS, so the managed llama-server process never actually starts, and every subsequent fetch to the local port fails.

This reproduces on both the current release at the time of filing (b10269-1.5.1) and the prior one (b10018-1.3.0, 27 Jul), so it looks like the macOS build job moved to a macOS 26 runner without pinning an explicit deployment target (e.g. -mmacosx-version-min / MACOSX_DEPLOYMENT_TARGET) below the build host's OS version.

Suggested fix

  • Pin the macOS build job's deployment target (e.g. macOS 14 or 15) so releases stay runnable on non-bleeding-edge installs, or
  • If macOS 26 is an intentional minimum going forward, surface that clearly in release notes and ideally have atomic-agent detect the spawn failure and report the real cause instead of a generic transport error.

Workaround

Installed llama.cpp via Homebrew (bottled for Sequoia), ran llama-server externally as a background service, and pointed atomic-agent's config.localModels.mode at "external" instead of "managed".

Happy to test a fix against this environment if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions