Skip to content

installer: pick-free install + auto-resolve Hindsight-compatible Python#1085

Merged
thinmintdev merged 2 commits into
mainfrom
installer/pick-free-install-and-hindsight-py
Jul 5, 2026
Merged

installer: pick-free install + auto-resolve Hindsight-compatible Python#1085
thinmintdev merged 2 commits into
mainfrom
installer/pick-free-install-and-hindsight-py

Conversation

@thinmintdev

Copy link
Copy Markdown
Contributor

Two related installer-robustness changes, split into one commit each.

1. Auto-resolve a Hindsight-compatible Python (60444fa)

The Hindsight memory engine builds its own venv and pulls litellm, which publishes requires-python >=3.10,<3.14. On a Python 3.14 host (Ubuntu 25.10+/26.04) the main hal0 venv is fine, but litellm's metadata gate made pip install hindsight-api fail with a wall of "Could not find a version" resolver output before the install could fall back.

Now resolved up front in preflight (resolve_hindsight_python):

  • prefer the default python when already in litellm's 3.11–3.13 band
  • else pick python3.13→3.11 from PATH
  • else best-effort auto-install one via the distro package manager (apt/dnf)
  • else fall back to the default interpreter and go straight to --ignore-requires-python (litellm runs fine on 3.14 — classifier dropped over a since-resolved fastuuid wheel gap, [Feature]: Support Python 3.14 BerriAI/litellm#26343), skipping the doomed first attempt and its noise

Adds HAL0_HINDSIGHT_PYTHON override and a read-only preflight_hindsight_python wired into preflight_all so hal0 doctor reports the decision.

2. Stop shipping model picks (fc50839)

The installer already never downloaded weights (--no-pull); it only recorded a hardware-recommended model name per slot (chat always, coder if an agent extension is on, plus ComfyUI capability defaults) into the slot configs. We no longer ship those picks — a fresh box boots with services up and the operator chooses every model afterward.

  • build_auto_selections gains with_slots (default True); False → zero slot picks, zero ComfyUI defaults, extensions untouched
  • new hal0 setup --no-slots flag threads it through; interactive/manual hal0 setup still picks recommended models
  • installer first-run setup now runs --auto --no-pull --no-slots --no-extensions

Fresh-boot consequence: OpenWebUI/Hermes come up with no model configured until the operator runs hal0 setup / hal0 model pull. Docs follow-up: #1082, #1083, #1084.

Testing

  • bash -n clean on install.sh + preflight.sh
  • resolve_hindsight_python exercised across clean / PATH-scan / forced-fallback / override / skip cases
  • tests/cli/test_setup_command.py → 6/6 pass; with_slots=False verified to seed 0 slots / 0 comfyui picks with extensions still on
  • --no-slots confirmed registered on the CLI

🤖 Generated with Claude Code

thinmintdev and others added 2 commits July 5, 2026 16:44
… a raw pip wall

The Hindsight memory engine builds its own venv and pulls litellm, which
publishes `requires-python >=3.10,<3.14`. On a Python 3.14 host (Ubuntu
25.10+/26.04) the main hal0 venv is fine, but litellm's metadata gate makes
`pip install hindsight-api` fail with a wall of "Could not find a version"
resolver output before the install could fall back.

Resolve the Hindsight interpreter up front in preflight:
- prefer the default python when it's already in litellm's 3.11-3.13 band
- else pick python3.13→3.11 from PATH
- else best-effort auto-install one via the distro package manager
  (HAL0_HINDSIGHT_AUTOINSTALL=1, set by install.sh)
- else fall back to the default interpreter and go STRAIGHT to
  --ignore-requires-python (litellm runs fine on 3.14 — the classifier was
  dropped over a since-resolved fastuuid wheel gap, BerriAI/litellm#26343),
  skipping the doomed first attempt and its resolver noise.

Exposes HAL0_HINDSIGHT_PYTHON override and a read-only
preflight_hindsight_python wired into preflight_all so `hal0 doctor` reports
the decision. The Hindsight install block now consumes HINDSIGHT_PY /
HINDSIGHT_PY_FALLBACK rather than always using ${PY}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… slots

The installer already never downloaded weights (--no-pull); it only recorded
a hardware-recommended model name per slot (chat always, coder if an agent
extension is on, plus ComfyUI capability defaults) into the slot configs. We
no longer want to ship those picks — a fresh box should boot with services up
and let the operator choose every model afterward.

- setup_command.build_auto_selections gains with_slots (default True); when
  False it seeds no slot picks and no ComfyUI defaults, leaving extensions
  untouched.
- new `hal0 setup --no-slots` flag threads it through; interactive/manual
  `hal0 setup` still picks recommended models.
- install.sh first-run setup now runs `--auto --no-pull --no-slots
  --no-extensions`, seeding the first-run sentinel + wiring but zero model
  picks. Messaging updated to "no model picks, no downloads".

Fresh-boot consequence: OpenWebUI/Hermes come up with no model configured
until the operator runs `hal0 setup` / `hal0 model pull`. Docs follow-up
tracked in #1082, #1083, #1084.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thinmintdev thinmintdev enabled auto-merge (rebase) July 5, 2026 20:47
@thinmintdev thinmintdev merged commit d2c2101 into main Jul 5, 2026
3 checks passed
thinmintdev added a commit that referenced this pull request Jul 6, 2026
The pick-free installer (#1085) runs `hal0 setup --auto --no-pull --no-slots
--no-extensions` — it writes the first-run sentinel + wiring only and seeds
NO model slot. #1088 corrected first-model.mdx/cli.mdx but setup.mdx and the
README still described the old "seeds the recommended Main slot" behavior.

- setup.mdx first-run Aside: real installer command + "no model slots, no
  download; a fresh box boots with no model configured".
- README (install one-liner, feature list, setup-TUI note): drop "recommended
  Main slot", say the installer seeds no model picks and nothing downloads.

Closes #1082.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thinmintdev added a commit that referenced this pull request Jul 6, 2026
The pick-free installer (#1085) runs `hal0 setup --auto --no-pull --no-slots
--no-extensions` — it writes the first-run sentinel + wiring only and seeds
NO model slot. #1088 corrected first-model.mdx/cli.mdx but setup.mdx and the
README still described the old "seeds the recommended Main slot" behavior.

- setup.mdx first-run Aside: real installer command + "no model slots, no
  download; a fresh box boots with no model configured".
- README (install one-liner, feature list, setup-TUI note): drop "recommended
  Main slot", say the installer seeds no model picks and nothing downloads.

Closes #1082.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant