Skip to content

Install Friday on Apple Silicon Macs - #8

Merged
debpalash merged 4 commits into
mainfrom
port/phase-1-macos
Sep 4, 2026
Merged

Install Friday on Apple Silicon Macs#8
debpalash merged 4 commits into
mainfrom
port/phase-1-macos

Conversation

@debpalash

Copy link
Copy Markdown
Owner

Summary

Phase 1 of the cross-platform port: Friday installs and runs on macOS 14+ with Apple Silicon.

  • install.sh detects Darwin, bootstraps a pinned uv 0.12.9 (digest kept in sync with requirements/uv-pins.json by a test), verifies sources with shasum, validates archive members, and hands over to ops/install_core.py.
  • ops/install_core.py runs the same transaction as the Linux bash body (lock, snapshot, release dir, hashed venv from runtime-macos-arm64.lock, assets, engine, config, service, atomic current switch, doctor, rollback) using only the standard library and friday_host.
  • friday_host/service.py adds systemd and launchd backends with exact command coverage; ops/friday.launchd.plist.in and ops/friday_launch.py run the supervisor as a login agent with friday.env applied.
  • ops/fridayctl.py provides the friday subcommands on macOS plus trust-ca/untrust-ca; ops/uninstall.py is the portable uninstall.
  • Pinned installers for llama-server builds, the MLX runtime, and official Qwen3 checkpoints verify every byte before publishing.
  • Doctor and data scripts are host-aware; the site bootstrap accepts Darwin; README, site hero, installer docs, and changelog describe the macOS target.

Safety note

Rehearsing the Darwin path on another platform now requires FRIDAY_INSTALL_REHEARSAL=1, and the harness clears XDG_* variables. Without that, a developer shell exporting XDG paths pointed the rehearsal at the real Linux install root.

Test plan

  • scripts/run_tests.py --require-no-platform-skips (1049 tests)
  • scripts/check-release.sh, scripts/check_architecture.py, git diff --check
  • Astro site builds
  • CI columns green (Linux, macOS; Windows advisory)
  • Manual checklist on a real Apple Silicon Mac (pending hardware)

🤖 Generated with Claude Code

https://claude.ai/code/session_01Kz3qQeARQrqpAaCAHcy96c

debpalash and others added 4 commits September 4, 2026 15:04
Add the macOS install path: install.sh detects Darwin, bootstraps a pinned
uv, verifies the source with shasum, and hands over to ops/install_core.py,
a stdlib-plus-friday_host transaction with the same rollback contract as the
Linux bash body. friday_host/service.py provides systemd and launchd
backends; the launchd agent runs ops/friday_launch.py so friday.env applies
without EnvironmentFile. ops/fridayctl.py serves the friday subcommands on
macOS, including trust-ca, and ops/uninstall.py is the portable uninstall.

Pinned asset installers for llama-server builds, the MLX runtime, and the
official Qwen3 checkpoints verify size and SHA-256 before publishing, extract
archives with path validation, and are idempotent. requirements/uv-pins.json
records the uv 0.12.9 archive digests per target.

The doctor and data scripts use the host layer, the site bootstrap accepts
Darwin with shasum, and the README, site, and installer docs describe the
macOS target. Rehearsals of the macOS path on other platforms require
FRIDAY_INSTALL_REHEARSAL=1 and clear XDG_* so they cannot touch a real
Linux install.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kz3qQeARQrqpAaCAHcy96c
@debpalash
debpalash merged commit d731952 into main Sep 4, 2026
5 of 6 checks passed
@debpalash
debpalash deleted the port/phase-1-macos branch September 4, 2026 11:18
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