Originally created by: Akarsh-Hegde
Step 2 of Approach C: a CI pipeline that builds the download-and-provision runtime — meridian-mlx-runtime-<ver>-aarch64.tar.gz + runtime-manifest.json. This is the payload the tray fetches into ~/.meridian/runtime/ on first run. It bundles its own python-build-standalone CPython, so a customer machine needs no system Python/Node/uv — only Apple Silicon + macOS ≥ the manifest floor (13.5). The ~7 GB model stays a separate first-run download.
scripts/build-mlx-runtime.sh — resolves the latest PBS install_only aarch64 CPython 3.11; builds the venv with that bundled interpreter (ABI match — never the runner's system python); installs meridian-agents[mlx,pm_worklog_update]; drops a thin server.py launcher at the runtime root (matches mlx_server.rs's resolver); strips pycache/tests; emits tarball + sha256 + manifest. Sets MACOSX_DEPLOYMENT_TARGET=13.5 so source builds can't raise the floor.scripts/smoke-test-mlx-runtime.sh — extracts to a fresh path (exactly as the app does, --strip-components=1), imports the native stack, boots the server, asserts /health 200..github/workflows/build-mlx-runtime.yml — build (macos-14) → smoke (macos-15, a different arm64 machine/OS → exercises relocation + ABI + deployment-target on a box that didn't build it) → publish to the release on a runtime-v* tag. workflow_dispatch builds + smoke-tests without publishing.mlx-metal 0.31.2), manifest with sha256.mlx, mlx_lm, outlines, fastapi, agents and booted the MLX server to /health 200 in ~2s — proving the runtime is self-contained and relocatable.RUNTIME_TARBALL_URL in mlx_server.rs is still empty — once this workflow publishes a release, point it (or MERIDIAN_RUNTIME_URL) at the asset to light up the wizard's download.download_runtime() (the manifest now carries the hash to check against).pyarrow/pandas/transformers prune is a deliberate follow-up, gated by this smoke test so a dropped import fails CI rather than a customer.feat/tray-mlx-supervision (→ feat/dmg-onboarding → spike/meridian-core).🤖 Generated with Claude Code
Ticket changed by: Akarsh-Hegde