[object Object]

← back to Exo Keepalive

exo: --no-sync runner + notes; inference needs full Xcode to build pinned mlx fork (official wheels drift on model archs)

12c2b347ce11138de17ed570b0da9175d57ff85c · 2026-07-06 21:21:30 -0700 · steve

Files touched

Diff

commit 12c2b347ce11138de17ed570b0da9175d57ff85c
Author: steve <steve@designerwallcoverings.com>
Date:   Mon Jul 6 21:21:30 2026 -0700

    exo: --no-sync runner + notes; inference needs full Xcode to build pinned mlx fork (official wheels drift on model archs)
---
 exo.log    | 429 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 run-exo.sh |   2 +-
 2 files changed, 430 insertions(+), 1 deletion(-)

diff --git a/exo.log b/exo.log
index 5b566c5..902bb90 100644
--- a/exo.log
+++ b/exo.log
@@ -131527,3 +131527,432 @@ hint: Build failures usually indicate a problem with the package or the build en
 [ 09:10:40.7452PM | INFO    ] Waiting for other campaign to finish
 [ 09:10:43.7466PM | INFO    ] Node elected Master - maintaining self
 [ 09:10:43.7469PM | INFO    ] Unpausing API
+[ 09:13:11.8766PM | INFO    ] Rotated event log: /Users/macstudio3/.exo/event_log/master/events.bin -> /Users/macstudio3/.exo/event_log/master/events.2026-07-07_04-13-11_872623.bin.zst
+[ 09:13:11.8851PM | INFO    ] Rotated event log: /Users/macstudio3/.exo/event_log/api/events.bin -> /Users/macstudio3/.exo/event_log/api/events.2026-07-07_04-13-11_880752.bin.zst
+[ 09:13:11.8875PM | INFO    ] Stopping Worker
+[ 09:13:12.8741PM | INFO    ] EXO Shutdown complete
+[2026-07-06T21:13:13-0700] === exo start (pid 22704) ===
+[ 09:13:13.6636PM | INFO    ] pid = 22709
+[ 09:13:13.6639PM | INFO    ] EXO_ZENOH_NAMESPACE: None
+[ 09:13:13.6676PM | INFO    ] Using ZID: f7079ec9dd5378e262ae17cad0a74ed7
+[ 09:13:13.6683PM | INFO    ] Starting required plugin "storage_manager"
+[ 09:13:14.1760PM | INFO    ] Starting node f7079ec9dd5378e262ae17cad0a74ed7
+[ 09:13:14.2360PM | INFO    ] Starting Election
+[ 09:13:14.2363PM | INFO    ] Starting DownloadCoordinator
+
+╔═══════════════════════════════════════════════════════════════════════╗
+║                                                                       ║
+║   ███████╗██╗  ██╗ ██████╗                                            ║
+║   ██╔════╝╚██╗██╔╝██╔═══██╗                                           ║
+║   █████╗   ╚███╔╝ ██║   ██║                                           ║
+║   ██╔══╝   ██╔██╗ ██║   ██║                                           ║
+║   ███████╗██╔╝ ██╗╚██████╔╝                                           ║
+║   ╚══════╝╚═╝  ╚═╝ ╚═════╝                                            ║
+║                                                                       ║
+║   Distributed AI Inference Cluster                                    ║
+║                                                                       ║
+╚═══════════════════════════════════════════════════════════════════════╝
+
+╔═══════════════════════════════════════════════════════════════════════╗
+║                                                                       ║
+║  Dashboard & API Ready                                                ║
+║                                                                       ║
+║  http://localhost:52415                                               ║
+║                                                                       ║
+║  Click the URL above to open the dashboard in your browser            ║
+║                                                                       ║
+╚═══════════════════════════════════════════════════════════════════════╝
+
+
+[ 09:13:14.2364PM | INFO    ] Starting Worker
+[ 09:13:14.2366PM | INFO    ] Starting Master
+[ 09:13:14.2366PM | INFO    ] Starting API
+[ 09:13:14.2377PM | INFO    ] discovered: Some("f7079ec9dd5378e262ae17cad0a74ed7")
+[ 09:13:14.2680PM | INFO    ] Node elected Master - maintaining self
+[ 09:13:14.2682PM | INFO    ] Unpausing API
+[ 09:13:14.2687PM | INFO    ] Running on http://0.0.0.0:52415 (CTRL + C to quit)
+[ 09:13:14.2687PM | INFO    ] Running on http://0.0.0.0:52415 (CTRL + C to quit)
+[ 09:13:14.2688PM | INFO    ] Subscribed to global_events
+[ 09:13:14.2690PM | INFO    ] Subscribed to local_events
+[ 09:13:14.2696PM | INFO    ] Subscribed to commands
+[ 09:13:14.2698PM | INFO    ] Subscribed to election_messages
+[ 09:13:14.2713PM | INFO    ] Subscribed to connection_messages
+[ 09:13:14.2714PM | INFO    ] Subscribed to download_commands
+[ 09:13:14.4677PM | INFO    ] Waiting for other campaign to finish
+[ 09:13:17.4693PM | INFO    ] Node elected Master - maintaining self
+[ 09:13:17.4697PM | INFO    ] Unpausing API
+[ 09:18:38.2421PM | INFO    ] Executing command: CreateInstance(command_id='17009bb6-3f20-457b-b126-238e392a3876' instance=MlxRingInstance(instance_id='82a4bac4-ca51-4840-b349-a912030d5370', shard_assignments=ShardAssignments(model_id='mlx-community/Qwen3-VL-4B-Instruct-4bit', runner_to_shard={'903bb6ec-7b40-4da5-b34c-45a9eaf62b06': PipelineShardMetadata(model_card=ModelCard(model_id='mlx-community/Qwen3-VL-4B-Instruct-4bit', storage_size=Memory.from_bytes(3340000000), n_layers=36, hidden_size=2560, supports_tensor=True, num_key_value_heads=None, tasks=[<ModelTask.TextGeneration: 'TextGeneration'>], components=None, family='qwen', quantization='4bit', base_model='Qwen3-VL 4B', capabilities=['text', 'thinking', 'vision'], backends=[<Backend.MlxMetal: 'MlxMetal'>, <Backend.MlxCuda: 'MlxCuda'>, <Backend.MlxCpu: 'MlxCpu'>], reasoning_dialect='none', context_length=262144, uses_cfg=False, trust_remote_code=True, is_custom=False, vision=VisionCardConfig(image_token_id=151655, model_type='qwen3_vl', weights_repo='mlx-community/Qwen3-VL-4B-Instruct-4bit', image_token=None, processor_repo=None), sampling_defaults=SamplingDefaults(temperature=0.7, top_p=0.8, top_k=20, min_p=None, repetition_penalty=1.0, presence_penalty=1.5, frequency_penalty=None, thinking=None, non_thinking=None)), device_rank=0, world_size=1, immediate_exception=False, should_timeout=None, start_layer=0, end_layer=36, n_layers=36)}, node_to_runner={'f7079ec9dd5378e262ae17cad0a74ed7': '903bb6ec-7b40-4da5-b34c-45a9eaf62b06'}), hosts_by_node={'f7079ec9dd5378e262ae17cad0a74ed7': [Host(ip='0.0.0.0', port=53957)]}, ephemeral_port=53957))
+[ 09:18:38.3130PM | INFO    ] Worker plan: CreateRunner
+[ 09:18:38.4227PM | INFO    ] Worker plan: DownloadModel
+[ 09:18:38.8339PM | INFO    ] Fast synch flag: 1
+[ 09:18:39.7484PM | WARNING ] Runner 903bb6ec-7b40-4da5-b34c-45a9eaf62b06 crashed with critical exception No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+
+  File "<string>", line 1, in <module>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 122, in spawn_main
+    exitcode = _main(fd, parent_sentinel)
+               │     │   └ 3
+               │     └ 101
+               └ <function _main at 0x108a4f600>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 135, in _main
+    return self._bootstrap(parent_sentinel)
+           │    │          └ 3
+           │    └ <function BaseProcess._bootstrap at 0x103fbe7a0>
+           └ <Process name='Process-1' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
+    self.run()
+    │    └ <function BaseProcess.run at 0x103fbdd00>
+    └ <Process name='Process-1' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 108, in run
+    self._target(*self._args, **self._kwargs)
+    │    │        │    │        │    └ {}
+    │    │        │    │        └ <Process name='Process-1' parent=22709 started daemon>
+    │    │        │    └ (<multiprocessing.resource_sharer.DupFd object at 0x108ac82f0>, <multiprocessing.resource_sharer.DupFd object at 0x10ce5c050>...
+    │    │        └ <Process name='Process-1' parent=22709 started daemon>
+    │    └ <function _run_with_captured_stdio at 0x10ce51da0>
+    └ <Process name='Process-1' parent=22709 started daemon>
+
+  File "/Users/macstudio3/exo/src/exo/utils/async_process.py", line 267, in _run_with_captured_stdio
+    target(*target_args, **target_kwargs)
+    │       │              └ {}
+    │       └ (BoundInstance(instance=MlxRingInstance(instance_id='82a4bac4-ca51-4840-b349-a912030d5370', shard_assignments=ShardAssignment...
+    └ <function entrypoint at 0x10cd371a0>
+
+> File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+[ 09:18:39.7513PM | INFO    ] bye from the runner
+[ 09:18:39.7514PM | INFO    ] Checking runner's status
+[ 09:18:39.7515PM | INFO    ] Runner was found to be alive, stopping process
+[ 09:18:39.8904PM | INFO    ] Runner exited with exit code 1
+[ 09:18:39.8906PM | ERROR   ] Runner terminated with exitcode=1
+Runner error: ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+  File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+    ...<2 lines>...
+    )
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+        DeepseekV4Cache,
+    )
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+
+[ 09:18:39.8912PM | INFO    ] Runner supervisor shutting down
+[ 09:18:39.8918PM | INFO    ] Runner process successfully terminated: 1
+[ 09:18:39.9384PM | INFO    ] Worker plan: Shutdown
+[ 09:18:39.9388PM | INFO    ] Starting task Shutdown(task_id='00e48781-dcfc-4d67-87fa-13960c55f312' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06')
+[ 09:18:39.9392PM | WARNING ] Task Shutdown(task_id='00e48781-dcfc-4d67-87fa-13960c55f312' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06') dropped, runner closed communication.
+[ 09:18:40.0406PM | INFO    ] Worker plan: CreateRunner
+[ 09:18:40.4671PM | INFO    ] Fast synch flag: 1
+[ 09:18:41.1514PM | WARNING ] Runner 903bb6ec-7b40-4da5-b34c-45a9eaf62b06 crashed with critical exception No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+
+  File "<string>", line 1, in <module>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 122, in spawn_main
+    exitcode = _main(fd, parent_sentinel)
+               │     │   └ 3
+               │     └ 131
+               └ <function _main at 0x1087af600>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 135, in _main
+    return self._bootstrap(parent_sentinel)
+           │    │          └ 3
+           │    └ <function BaseProcess._bootstrap at 0x103d2e7a0>
+           └ <Process name='Process-2' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
+    self.run()
+    │    └ <function BaseProcess.run at 0x103d2dd00>
+    └ <Process name='Process-2' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 108, in run
+    self._target(*self._args, **self._kwargs)
+    │    │        │    │        │    └ {}
+    │    │        │    │        └ <Process name='Process-2' parent=22709 started daemon>
+    │    │        │    └ (<multiprocessing.resource_sharer.DupFd object at 0x1088282f0>, <multiprocessing.resource_sharer.DupFd object at 0x10cc5c050>...
+    │    │        └ <Process name='Process-2' parent=22709 started daemon>
+    │    └ <function _run_with_captured_stdio at 0x10cc51da0>
+    └ <Process name='Process-2' parent=22709 started daemon>
+
+  File "/Users/macstudio3/exo/src/exo/utils/async_process.py", line 267, in _run_with_captured_stdio
+    target(*target_args, **target_kwargs)
+    │       │              └ {}
+    │       └ (BoundInstance(instance=MlxRingInstance(instance_id='82a4bac4-ca51-4840-b349-a912030d5370', shard_assignments=ShardAssignment...
+    └ <function entrypoint at 0x10cb371a0>
+
+> File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+[ 09:18:41.1537PM | INFO    ] bye from the runner
+[ 09:18:41.1537PM | INFO    ] Checking runner's status
+[ 09:18:41.1539PM | INFO    ] Runner was found to be alive, stopping process
+[ 09:18:41.3015PM | INFO    ] Runner exited with exit code 1
+[ 09:18:41.3017PM | ERROR   ] Runner terminated with exitcode=1
+Runner error: ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+  File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+    ...<2 lines>...
+    )
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+        DeepseekV4Cache,
+    )
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+
+[ 09:18:41.3023PM | INFO    ] Runner supervisor shutting down
+[ 09:18:41.3027PM | INFO    ] Runner process successfully terminated: 1
+[ 09:18:41.3554PM | INFO    ] Worker plan: Shutdown
+[ 09:18:41.3557PM | INFO    ] Starting task Shutdown(task_id='e758504b-fd28-479d-950d-d9680f506b90' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06')
+[ 09:18:41.3561PM | WARNING ] Task Shutdown(task_id='e758504b-fd28-479d-950d-d9680f506b90' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06') dropped, runner closed communication.
+[ 09:18:42.0621PM | INFO    ] Worker plan: CreateRunner
+[ 09:18:42.5163PM | INFO    ] Fast synch flag: 1
+[ 09:18:43.1776PM | WARNING ] Runner 903bb6ec-7b40-4da5-b34c-45a9eaf62b06 crashed with critical exception No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+
+  File "<string>", line 1, in <module>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 122, in spawn_main
+    exitcode = _main(fd, parent_sentinel)
+               │     │   └ 3
+               │     └ 155
+               └ <function _main at 0x106063600>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 135, in _main
+    return self._bootstrap(parent_sentinel)
+           │    │          └ 3
+           │    └ <function BaseProcess._bootstrap at 0x105f5a7a0>
+           └ <Process name='Process-3' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
+    self.run()
+    │    └ <function BaseProcess.run at 0x105f59d00>
+    └ <Process name='Process-3' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 108, in run
+    self._target(*self._args, **self._kwargs)
+    │    │        │    │        │    └ {}
+    │    │        │    │        └ <Process name='Process-3' parent=22709 started daemon>
+    │    │        │    └ (<multiprocessing.resource_sharer.DupFd object at 0x1060dc2f0>, <multiprocessing.resource_sharer.DupFd object at 0x10a4d0050>...
+    │    │        └ <Process name='Process-3' parent=22709 started daemon>
+    │    └ <function _run_with_captured_stdio at 0x10a4c5da0>
+    └ <Process name='Process-3' parent=22709 started daemon>
+
+  File "/Users/macstudio3/exo/src/exo/utils/async_process.py", line 267, in _run_with_captured_stdio
+    target(*target_args, **target_kwargs)
+    │       │              └ {}
+    │       └ (BoundInstance(instance=MlxRingInstance(instance_id='82a4bac4-ca51-4840-b349-a912030d5370', shard_assignments=ShardAssignment...
+    └ <function entrypoint at 0x10a3ab1a0>
+
+> File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+[ 09:18:43.1797PM | INFO    ] bye from the runner
+[ 09:18:43.1798PM | INFO    ] Checking runner's status
+[ 09:18:43.1799PM | INFO    ] Runner was found to be alive, stopping process
+[ 09:18:43.3301PM | INFO    ] Runner exited with exit code 1
+[ 09:18:43.3303PM | ERROR   ] Runner terminated with exitcode=1
+Runner error: ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+  File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+    ...<2 lines>...
+    )
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+        DeepseekV4Cache,
+    )
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+
+[ 09:18:43.3311PM | INFO    ] Runner supervisor shutting down
+[ 09:18:43.3316PM | INFO    ] Runner process successfully terminated: 1
+[ 09:18:43.3753PM | INFO    ] Worker plan: Shutdown
+[ 09:18:43.3756PM | INFO    ] Starting task Shutdown(task_id='12ce86d1-3117-4ee2-8f67-81f168b96048' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06')
+[ 09:18:43.3760PM | WARNING ] Task Shutdown(task_id='12ce86d1-3117-4ee2-8f67-81f168b96048' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06') dropped, runner closed communication.
+[ 09:18:46.0991PM | INFO    ] Worker plan: CreateRunner
+[ 09:18:46.5319PM | INFO    ] Fast synch flag: 1
+[ 09:18:47.2031PM | WARNING ] Runner 903bb6ec-7b40-4da5-b34c-45a9eaf62b06 crashed with critical exception No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+
+  File "<string>", line 1, in <module>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 122, in spawn_main
+    exitcode = _main(fd, parent_sentinel)
+               │     │   └ 3
+               │     └ 177
+               └ <function _main at 0x105f37600>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 135, in _main
+    return self._bootstrap(parent_sentinel)
+           │    │          └ 3
+           │    └ <function BaseProcess._bootstrap at 0x1015227a0>
+           └ <Process name='Process-4' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
+    self.run()
+    │    └ <function BaseProcess.run at 0x101521d00>
+    └ <Process name='Process-4' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 108, in run
+    self._target(*self._args, **self._kwargs)
+    │    │        │    │        │    └ {}
+    │    │        │    │        └ <Process name='Process-4' parent=22709 started daemon>
+    │    │        │    └ (<multiprocessing.resource_sharer.DupFd object at 0x105fb02f0>, <multiprocessing.resource_sharer.DupFd object at 0x10a384050>...
+    │    │        └ <Process name='Process-4' parent=22709 started daemon>
+    │    └ <function _run_with_captured_stdio at 0x10a379da0>
+    └ <Process name='Process-4' parent=22709 started daemon>
+
+  File "/Users/macstudio3/exo/src/exo/utils/async_process.py", line 267, in _run_with_captured_stdio
+    target(*target_args, **target_kwargs)
+    │       │              └ {}
+    │       └ (BoundInstance(instance=MlxRingInstance(instance_id='82a4bac4-ca51-4840-b349-a912030d5370', shard_assignments=ShardAssignment...
+    └ <function entrypoint at 0x10a25f1a0>
+
+> File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+[ 09:18:47.2052PM | INFO    ] bye from the runner
+[ 09:18:47.2053PM | INFO    ] Checking runner's status
+[ 09:18:47.2055PM | INFO    ] Runner was found to be alive, stopping process
+[ 09:18:47.3486PM | INFO    ] Runner exited with exit code 1
+[ 09:18:47.3487PM | ERROR   ] Runner terminated with exitcode=1
+Runner error: ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+  File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+    ...<2 lines>...
+    )
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+        DeepseekV4Cache,
+    )
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+
+[ 09:18:47.3494PM | INFO    ] Runner supervisor shutting down
+[ 09:18:47.3498PM | INFO    ] Runner process successfully terminated: 1
+[ 09:18:47.4107PM | INFO    ] Worker plan: Shutdown
+[ 09:18:47.4111PM | INFO    ] Starting task Shutdown(task_id='30e86e9e-e9f6-4ef8-8a21-599337d1974d' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06')
+[ 09:18:47.4115PM | WARNING ] Task Shutdown(task_id='30e86e9e-e9f6-4ef8-8a21-599337d1974d' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06') dropped, runner closed communication.
+[ 09:18:54.1504PM | INFO    ] Worker plan: CreateRunner
+[ 09:18:54.6211PM | INFO    ] Fast synch flag: 1
+[ 09:18:55.3238PM | WARNING ] Runner 903bb6ec-7b40-4da5-b34c-45a9eaf62b06 crashed with critical exception No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+
+  File "<string>", line 1, in <module>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 122, in spawn_main
+    exitcode = _main(fd, parent_sentinel)
+               │     │   └ 3
+               │     └ 107
+               └ <function _main at 0x10a2df600>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/spawn.py", line 135, in _main
+    return self._bootstrap(parent_sentinel)
+           │    │          └ 3
+           │    └ <function BaseProcess._bootstrap at 0x10a1d67a0>
+           └ <Process name='Process-5' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
+    self.run()
+    │    └ <function BaseProcess.run at 0x10a1d5d00>
+    └ <Process name='Process-5' parent=22709 started daemon>
+  File "/Users/macstudio3/.local/share/uv/python/cpython-3.13.14-macos-aarch64-none/lib/python3.13/multiprocessing/process.py", line 108, in run
+    self._target(*self._args, **self._kwargs)
+    │    │        │    │        │    └ {}
+    │    │        │    │        └ <Process name='Process-5' parent=22709 started daemon>
+    │    │        │    └ (<multiprocessing.resource_sharer.DupFd object at 0x10a3582f0>, <multiprocessing.resource_sharer.DupFd object at 0x10e680050>...
+    │    │        └ <Process name='Process-5' parent=22709 started daemon>
+    │    └ <function _run_with_captured_stdio at 0x10e675da0>
+    └ <Process name='Process-5' parent=22709 started daemon>
+
+  File "/Users/macstudio3/exo/src/exo/utils/async_process.py", line 267, in _run_with_captured_stdio
+    target(*target_args, **target_kwargs)
+    │       │              └ {}
+    │       └ (BoundInstance(instance=MlxRingInstance(instance_id='82a4bac4-ca51-4840-b349-a912030d5370', shard_assignments=ShardAssignment...
+    └ <function entrypoint at 0x10e55b1a0>
+
+> File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+[ 09:18:55.3259PM | INFO    ] bye from the runner
+[ 09:18:55.3260PM | INFO    ] Checking runner's status
+[ 09:18:55.3262PM | INFO    ] Runner was found to be alive, stopping process
+[ 09:18:55.4787PM | INFO    ] Runner exited with exit code 1
+[ 09:18:55.4789PM | ERROR   ] Runner terminated with exitcode=1
+Runner error: ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+Traceback (most recent call last):
+  File "/Users/macstudio3/exo/src/exo/worker/runner/bootstrap.py", line 79, in entrypoint
+    from exo.worker.engines.mlx.builder import MlxBuilder
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/builder.py", line 17, in <module>
+    from exo.worker.runner.llm_inference.batch_generator import (
+    ...<2 lines>...
+    )
+  File "/Users/macstudio3/exo/src/exo/worker/runner/llm_inference/batch_generator.py", line 30, in <module>
+    from exo.worker.engines.mlx.cache import KVPrefixCache
+  File "/Users/macstudio3/exo/src/exo/worker/engines/mlx/cache.py", line 16, in <module>
+    from mlx_lm.models.deepseek_v4 import (
+        DeepseekV4Cache,
+    )
+ModuleNotFoundError: No module named 'mlx_lm.models.deepseek_v4'
+
+[ 09:18:55.4795PM | INFO    ] Runner supervisor shutting down
+[ 09:18:55.4800PM | INFO    ] Runner process successfully terminated: 1
+[ 09:18:55.5680PM | INFO    ] Worker plan: Shutdown
+[ 09:18:55.5689PM | INFO    ] Starting task Shutdown(task_id='71f03e7c-a4b3-4e76-b334-63ef0a2170b8' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06')
+[ 09:18:55.5694PM | WARNING ] Task Shutdown(task_id='71f03e7c-a4b3-4e76-b334-63ef0a2170b8' task_status=<TaskStatus.Pending: 'Pending'> instance_id='82a4bac4-ca51-4840-b349-a912030d5370' runner_id='903bb6ec-7b40-4da5-b34c-45a9eaf62b06') dropped, runner closed communication.
+[ 09:19:04.2387PM | WARNING ] Instance 82a4bac4-ca51-4840-b349-a912030d5370 exceeded 5 retries, requesting deletion
+[ 09:19:04.2401PM | INFO    ] Executing command: DeleteInstance(command_id='631bb142-ccfe-45ef-9a93-62afc936801c' instance_id='82a4bac4-ca51-4840-b349-a912030d5370')
+[ 09:19:04.2416PM | INFO    ] Cancelling download for mlx-community/Qwen3-VL-4B-Instruct-4bit
diff --git a/run-exo.sh b/run-exo.sh
index 2641e72..1a08273 100755
--- a/run-exo.sh
+++ b/run-exo.sh
@@ -9,4 +9,4 @@ cd "$HOME/exo" || exit 1
 LOG="$HOME/Projects/exo-keepalive/exo.log"
 echo "[$(date +%FT%T%z)] === exo start (pid $$) ===" >> "$LOG"
 # exec so launchd tracks the real exo process (respawns on crash)
-exec /Users/macstudio3/.local/bin/uv run exo >> "$LOG" 2>&1
+exec /Users/macstudio3/.local/bin/uv run --no-sync exo >> "$LOG" 2>&1

← e985522 exo: add /usr/sbin to PATH (networksetup); revert --extra ml  ·  back to Exo Keepalive  ·  exo: restore clean locked daemon (self-syncing runner); offi e842362 →