small gleam coding and persistent agent daemon with a detachable cli and a canvas ui albedo.sh

daemon picks Apple's python3 and the role symlinks make macOS ask for developer tools #172

Open aly.codes
Open opened by aly.codes

What happens #

On a Mac where PATH has no python3 from Homebrew (only python3.12/3.13), the daemon picks Apple's /usr/bin/python3. The first kernel or ssh helper then pops a macOS dialog:

The “albedo-ssh” command requires the command line developer tools. Would you like to install the tools now?

Nothing albedo does requires the command line tools, and installing them does not fix it. If the dialog is dismissed, the helper never runs: kernels do not start and host probes hang.

Why #

  • albedo_python:local_paths/0 is os:find_executable("python3"), so with no Homebrew python3 it resolves to /usr/bin/python3, Apple's stub (3.9 here, below the 3.11 the tree requires).
  • albedo_process_name:python/2 starts helpers through $ALBEDO_HOME/bin/albedo-<role> symlinks, so an ssh probe runs as albedo-ssh and a kernel as albedo-kernel.
  • Apple's stub looks its toolchain up by the invoked name. Called albedo-ssh, it runs xcode-select -find albedo-ssh, fails, and asks the user to install the command line developer tools — a question albedo cannot answer and the person does not need.

Reproduce #

Without touching the daemon:

ln -sf /usr/bin/python3 /tmp/albedo-ssh-probe
/tmp/albedo-ssh-probe -c 'print(1)'
xcode-select: Failed to locate 'albedo-ssh-probe', requesting installation of command line developer tools.

Through albedo: on such a machine run the Go e2e suite; TestTUIIdleBackgroundJobKeepsItsMarkerWithoutAFace and TestLateChatClientRestoresNormalizedToolProgress fail because the kernel never starts, and a host-probe test (cli/test/e2e/tui_folders_test.go) leaves the dialog on screen.

Expected #

local_paths/0 should refuse an interpreter older than the tree requires with its own message ({error, {unavailable, …}} naming the version it found), and/or try python3.12/python3.11 before falling back to python3. Asking macOS to install developer tools is the wrong question, and its answer still leaves 3.9 selected.

Evidence #

On this machine, with python3 -> /opt/homebrew/bin/python3.12 on PATH and no other change, both failing tests pass:

ok  	albedo/cli/test/e2e	8.141s

Only the interpreter resolution changed; the tests and the daemon tree were untouched.

Impact #

Any Mac with Xcode (or CLT) but without a Homebrew python3 alias — a normal setup after brew install python@3.12 — hits a modal system dialog on the first kernel or ssh helper spawn. Dismissing it leaves albedo unable to run a kernel, with nothing in the transcript saying why.

Sign up or Sign in to add to the discussion.