Mindket

exo

Newversion 2 · updated
Star48.2k

Overview

exo’s Apache-2.0 software that links your devices into one AI cluster, so a model too big for one machine can run across them. The setup notes cover the macOS app, source installs on macOS and Linux, RDMA over Thunderbolt, the API and uninstalling.

exo is an open-source project on GitHub in the Developer category, listed by Mindket. It is free. This is version 2, last updated on . Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.

At a glance

Runs in
  • The built-in dashboard at http://localhost:52415, for managing your cluster and chatting with models
  • The OpenAI Chat Completions, Claude Messages, OpenAI Responses and Ollama endpoints, which the API reference says existing clients can use after a base URL change
  • OpenWebUI and similar tools, through the Ollama endpoints
  • exo-bench, which measures prefill and token generation speed
Start with
brew install --cask exo

Platform

macOSOperating system
LinuxOperating system
ClaudeAI chat

About

What it is

exo links your devices into one AI cluster. Its README says exo lets you run models larger than would fit on a single device, and with day-0 support for RDMA over Thunderbolt it makes them run faster as you add devices. Each device serves a dashboard and an API on port 52415. The API speaks the OpenAI Chat Completions, Claude Messages, OpenAI Responses and Ollama formats, so clients you already use can talk to it.

  1. You install exo on each device
  2. Devices on the same network and version find each other
  3. exo splits a model across the devices it can see
  4. Each device serves a dashboard and an API on port 52415
  5. Your chat app or code sends requests to that address

Who it suits

People with more than one capable device, most clearly several Apple silicon Macs, who want to run a model too large for any one of them. The README’s dashboard picture shows four 512 GB M3 Ultra Mac Studios. On Linux the README says exo currently runs on CPU. The contributing guide says the codebase is actively evolving and that testing is mostly manual.

Who uses it, and how
IndustryWho uses itHow they use itExample
Home labsMac owners with two or more MacsJoin the Macs into one cluster and run a model that needs bothSomeone installs EXO on a second Mac, puts both on the same network and sees it appear in the dashboard within a few seconds.
Software teamsDevelopers who already use OpenAI, Claude or Ollama clientsPoint the client’s base URL at exo instead of rewriting the codeA developer creates an instance, then sends the README’s chat completions request to localhost:52415/v1/chat/completions.
Performance workEngineers who compare placementsRun exo-bench across pipeline and tensor sharding on one or more nodesAn engineer runs bench/exo_bench.py with --sharding tensor and --max-nodes 2, then reads prompt_tps and generation_tps.
Shared infrastructureAdmins with models on shared storagePoint exo at models already on shared storage, read-onlyAn admin runs EXO_MODELS_READ_ONLY_DIRS=/mnt/nfs/models:/opt/ai-models uv run exo, and exo can’t delete those models.
Ollama toolsPeople who use OpenWebUI or other Ollama clientsUse the Ollama-format endpointsSomeone lists models with curl http://localhost:52415/ollama/api/tags.

Where to use it

exo runs on macOS and Linux. Its README and API reference name these ways to reach it.

  • The built-in dashboard at http://localhost:52415, for managing your cluster and chatting with models
  • The OpenAI Chat Completions, Claude Messages, OpenAI Responses and Ollama endpoints, which the API reference says existing clients can use after a base URL change
  • OpenWebUI and similar tools, through the Ollama endpoints
  • exo-bench, which measures prefill and token generation speed
  • Custom models from the Hugging Face hub, added through the /models/add endpoint
What it runs on
PlatformInstallWhat the README asks for
macOS appEXO-latest.dmg, or brew install --cask exoApple silicon and macOS Sequoia 15.1 or later
macOS from sourceClone, build the dashboard, uv sync --extra mlx, uv run exoXcode for the Metal ToolChain, uv, node and stable Rust. Nix is an option
Linux from sourceThe same steps with uv sync --extra mlx-cpu. The README’s comment names --extra mlx-cuda13 or --extra mlx-cuda12 for NVIDIAuv, node 18 or higher, stable Rust and Python 3.13. The README’s note says it runs on CPU for now
RDMA over Thunderboltrdma_ctl enable, run from Recovery modemacOS Tahoe 26.2 or later and a Mac with Thunderbolt 5

How to set it up

Get it saves a zip of Mindket’s setup notes in your downloads folder. It has a page for the app, each source install and the tasks around them, taken from exo’s README, API reference, contributing guide, uninstall script and pyproject.toml. On a Mac, the app is the README’s easiest route.

What you need first
NeedDetail
DevicesOne to start. For a cluster, two or more on the same local network or joined by a Thunderbolt cable
The same versionEvery device runs the same version of exo. Devices on different versions don’t join each other
For the appA Mac with Apple silicon and macOS Sequoia 15.1 or later
For a source installuv, node to build the dashboard (18 or higher on Linux), stable Rust, Python 3.13, and on a Mac, Xcode
Disk spaceRoom for the models you load. The README’s environment variables set where downloads go
An admin passwordFor the app’s optional Thunderbolt network setup, for Uninstall EXO in its Settings, and for the README’s sudo lines: the uninstall script, the Nix daemon restart and apt on Linux
  1. On a Mac, download EXO-latest.dmg, drag EXO to Applications and open it. Or use Homebrew.
  2. Allow Local Network access when macOS asks, so exo can find your other devices.
  3. Repeat on each other device, on the same network or joined by a Thunderbolt cable, and check the versions match.
  4. Open http://localhost:52415 to see the dashboard.
brew install --cask exo

To run from source on macOS, the README gives these lines. On Linux it swaps the uv sync line for uv sync --extra mlx-cpu.

git clone https://github.com/exo-explore/exo
cd exo/dashboard && npm install && npm run build && cd ..
uv sync --extra mlx
uv run exo

How to use it

Chat in the dashboard, or call the API. The README walks through four steps with a small model, mlx-community/Llama-3.2-1B-Instruct-4bit.

  1. Preview the placements for your model with GET /instance/previews.
  2. Create the instance with POST /instance, using a placement from step 1, and wait for it with GET /instance/await. The create call is asynchronous.
  3. Send a chat completion to /v1/chat/completions.
  4. Delete the instance with DELETE /instance/YOUR_INSTANCE_ID when you are done.
curl -N -X POST http://localhost:52415/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "mlx-community/Llama-3.2-1B-Instruct-4bit",
    "messages": [
      {"role": "user", "content": "What is Llama 3.2 1B?"}
    ],
    "stream": true
  }'

The same server answers /v1/messages for the Claude format, /v1/responses for OpenAI Responses and /ollama/api/chat for Ollama. The README gives a curl line for each.

Example

You have two Macs and want them to work as one cluster. You install EXO on both with Homebrew and open it on each.

brew install --cask exo

You put both Macs on the same Wi-Fi or Ethernet network and check that they run the same version. The README says the second Mac shows up in the dashboard within a few seconds. If it doesn’t, the README’s checklist starts with the version, then the Local Network switch in System Settings on both Macs. To see the version in the app, choose About EXO from the menu bar icon or open Settings › General. A source install prints it with this line.

uv run exo --version

The app and a source checkout number their versions differently, so by default they don’t join each other. Give every device the same cluster name to mix them.

For newcomers and experts

If you are new. A cluster here means your own devices sharing the work on one model. exo reads the layout of your network, picks how to split the model and handles the rest. Start with the app on one Mac, add a second, and try the README’s small model before any large one. Models are big files, so check the free space on the drive that holds ~/.exo/models. The /state endpoint shows the instance IDs and what is deployed.

For experts. The README lists topology-aware auto parallel, which weighs device resources and the latency and bandwidth of each link. It also lists tensor parallelism, with a claimed speedup of up to 1.8x on 2 devices and 3.2x on 4. For RDMA over Thunderbolt 5 it claims a 99% cut in latency between devices. The inference backend is MLX, with MLX distributed for communication.

A preview lists a sharding, Pipeline in the README’s sample, and an instance_meta, MlxRing in the sample. exo-bench filters on ring, jaccl or both, and on pipeline, tensor or both. Cancelling works by closing the HTTP connection, or by calling /v1/cancel/{command_id}.

EXO_MODELS_DIRS adds writable model folders, tried in order after the default, and the first with enough free space is used. EXO_ZENOH_NAMESPACE does the same as --namespace. The --no-worker flag makes a coordinator-only node. Models are described by TOML model cards, and the contributing guide lists the required fields.

Good to know

The app and the dashboard work on your devices, and a few steps reach into your system or the internet.

  • Thunderbolt network setup: it needs your administrator password. The app installs a small system service, creates a network location called exo, switches the Mac to it and turns off Thunderbolt Bridge. Fixed IP, DNS and proxy settings from your usual location don’t apply there
  • Login: the welcome window has Open EXO at login ticked. Untick it there, or in Settings › General
  • Versions: devices on different versions don’t join, so update every Mac in the cluster together
  • Linux: the README says exo currently runs on CPU, with GPU support under development
  • Your data: exo keeps it in ~/.exo on a Mac. Models go in ~/.exo/models, and the log is ~/.exo/exo_log/exo.log
  • Internet: EXO checks for updates by itself, and models are fetched from Hugging Face. EXO_OFFLINE=true uv run exo runs without an internet connection, using only local models
  • The API: the reference describes no sign-in or API key for its endpoints
  • Custom models: trust_remote_code is off by default. Only turn it on for a model whose code you trust
  • Install lines: the README’s Homebrew installer, uv installer (Linux) and rustup lines download a script and run it at once, so read them first
  • Removing it: if you agreed to the Thunderbolt setup, moving EXO.app to the Trash or running brew uninstall leaves the Mac on the exo location with Thunderbolt Bridge off. Run the uninstall script with sudo to restore them. It also deletes ~/.exo, and keeps downloaded models unless you pass --delete-models
  • License: Apache-2.0. The LICENSE file reads “Copyright 2025 Exo Technologies Ltd”

README and files

README

exo: setup notes

This kit holds setup notes only. Mindket wrote them. exo's source is in exo labs' repository: https://github.com/exo-explore/exo. Its macOS app downloads from https://assets.exolabs.net/EXO-latest.dmg or installs with Homebrew.

These notes are not made or endorsed by exo labs. The README says "exo: Run frontier AI locally. Maintained by exo labs" and describes it this way: "exo connects all your devices into an AI cluster. Not only does exo enable running models larger than would fit on a single device, but with day-0 support for RDMA over Thunderbolt, makes models run faster as you add more devices." The repository's docs folder holds one page, the API reference: https://github.com/exo-explore/exo/blob/main/docs/api.md

License: Apache-2.0. The LICENSE file (https://github.com/exo-explore/exo/blob/main/LICENSE) is the Apache License 2.0 text. Its appendix notice reads "Copyright 2025 Exo Technologies Ltd". The README's badge also says Apache 2.0. The repository has no NOTICE file.

The contributing guide says the codebase is actively evolving and that testing is mostly manual for now. Source: https://github.com/exo-explore/exo/blob/main/CONTRIBUTING.md

What installs

  • On a Mac, the EXO app: a menu bar app that runs in the background. It needs a Mac with Apple silicon and macOS Sequoia 15.1 or later. Source: https://github.com/exo-explore/exo/blob/main/README.md (macOS App)
  • From source, on macOS or Linux, a clone of the repository with the dashboard built and the Python dependencies installed by uv. Source: README.md (Run from Source)
  • exo keeps its data in ~/.exo on a Mac, with downloaded models in ~/.exo/models. On Linux it follows the XDG folders: see setup/run-from-source-linux.md.
  • If you agree to the optional Thunderbolt network setup in the Mac app, a small system service named io.exo.networksetup and a network location named exo. See setup/macos-app.md.

What you need first

  • One device to start. Two or more for a cluster.
  • The same version of exo on every device. Devices on different versions do not join each other. Source: README.md (Adding another Mac)
  • For the app: Apple silicon and macOS Sequoia 15.1 or later. RDMA over Thunderbolt needs macOS Tahoe 26.2 or later, and a Mac with Thunderbolt 5. See setup/rdma-thunderbolt.md.
  • For a source install: uv, Node.js (to build the dashboard) and a stable Rust toolchain. On macOS, Xcode too, for its Metal ToolChain. Linux needs Node.js 18 or higher. Source: README.md (Run from Source)
  • Disk space for models. The README gives environment variables for where model downloads and caches go: see setup/configuration.md.

Main install commands

On a Mac, the README's easiest way is the app. Download EXO-latest.dmg from https://assets.exolabs.net/EXO-latest.dmg, or use Homebrew:

brew install --cask exo

From source, the README gives these lines for macOS. Linux uses a different extra in the uv sync line: see setup/run-from-source-linux.md.

git clone https://github.com/exo-explore/exo
cd exo/dashboard && npm install && npm run build && cd ..
uv sync --extra mlx
uv run exo

Either way, exo then serves its dashboard and API at http://localhost:52415. Source: README.md (Quick Start)

Setup notes by platform and task

  • setup/macos-app.md: the app, what it asks for, adding another Mac and the cluster name
  • setup/run-from-source-macos.md: prerequisites, the Nix route and the build
  • setup/run-from-source-linux.md: prerequisites, the build, the --no-worker and --legacy-daemon flags and file locations
  • setup/rdma-thunderbolt.md: enabling RDMA on macOS 26.2 or later and its caveats
  • setup/api-and-clients.md: the OpenAI, Claude Messages, Responses and Ollama endpoints, with the README's walkthrough
  • setup/configuration.md: environment variables, model folders, custom models from Hugging Face
  • setup/benchmarking.md: the exo-bench tool
  • setup/update-and-uninstall.md: updating and removing exo, and what each uninstall way leaves

Sources

Files
README.md  4 KB
setup/api-and-clients.md  5 KB
setup/benchmarking.md  2 KB
setup/configuration.md  4 KB
setup/macos-app.md  4 KB
setup/rdma-thunderbolt.md  2 KB
setup/run-from-source-linux.md  3 KB
setup/run-from-source-macos.md  2 KB
setup/update-and-uninstall.md  4 KB

9 files, 30 KB, downloaded as a zip.

What’s new

  • Version 2 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

What people say

Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search and on Trendshift. Mindket doesn’t write or check them. Open one to read it where it was posted.

paulbjensenSam Altman: All the RAM Should Belong to Me, So I Can Charge People to Use ItIf the goal is to maximise the utilisation of RAM in devices for computation purposes, then there might be some value in exploring these items: - https://github.com/exo-explore/exo - https://machinelearning.apple.com/research/distributed-gpu-c...@METHEZONENot every prompt needs to leave your machine. Open-source repos for running models on your own hardware: 1. ollama (186k★) One command to pull and run open models locally. 2. llama.cpp (134k★) A C/C++ inference engine for running models locally. 3. open-webui (158k★) ChatGPT-style web UI for…r/LovingAIAgents"exo connects all your devices into an AI cluster. Not only does exo enable running models larger than would fit on a single device, but with day-0 support…gempirA Dynamic and Distributed Virtual GPU Cloud Built on Idle Apple Silicon DevicesInteresting, so this is basically Apple's version of exo ? https://github.com/exo-explore/exo@Paigedays911STOP BUYING $30K GPUS 🛑 Exo lets you run massive 70B+ models by pooling VRAM across everyday consumer hardware connected over standard Wi-Fi. • Splits large models across multiple devices without needing datacenter-grade Nvidia cards. • Uses peer-to-peer discovery to create a distributed cluster…r/LovingOpenSourceAI"exo connects all your devices into an AI cluster. Not only does exo enable running models larger than would fit on a single device, but with day-0 support…compressedgasNvidia PAIR turns your household's idle PCs into a local AI clusterDoesn't do any actually clustering like https://github.com/exo-explore/exo does.@alex_verem5) Upscayl replaces paid photo upscalers like Topaz You open a small or blurry image and export a bigger, sharper one. Check your graphics card first, because most built-in graphics chips won't run it. https://t.co/5U0N7fF4oe0x20cowboyUsing a Gaming PC's RTX 5070 from a separate Linux workstationCheck out exo if you haven’t already https://github.com/exo-explore/exo@xxblv8太安心了!怕把公司資料貼進 ChatGPT 的朋友們,想在自己電腦跑 AI,一定要收藏這 6 個 GitHub 倉庫。 1. Ollama(約 185,400 star) 一行指令安裝,就能在電腦上跑 DeepSeek、Qwen、Gemma、gpt-oss 這些開放模型。 https://t.co/78LjmnQJBo 2. Open WebUI(約 157,300 star) 自己架的 AI 聊天介面,可以完全離線使用,接上 Ollama 就能聊。 https://t.co/u0nqsDjXCB 3. llama.cpp(約 132,900 star) 用 C/C++ 寫成的 AI…damezumariDarkbloom – Private inference on idle Macshttps://github.com/exo-explore/exo@Paigedays911YOUR PC CLUSTER IS NOW A SUPERCOMPUTER 🚀 Exo lets you run massive 70B+ models by pooling VRAM across everyday consumer hardware connected via standard Wi-Fi. • Splits large models across multiple devices without needing $30k datacenter GPUs. • Uses peer-to-peer discovery to aggregate local…

Searched

More from Mindket

See all from Mindket

anaksor-ocr

Sokheng · Kit

Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

New

Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…

New

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

New

Similar in Developer

See all in Developer

Claude Code Skills & Plugins

alirezarezvani · Skill

Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…

New29.8k

buzz

block · Kit

Self-hostable workspace where people and AI agents share the same rooms, built on a Nostr relay that logs every action as a signed event. For teams that want t…

New37.3k

plannotator

backnotprop · Kit

Opens your AI coding agent's plans, specs and code changes in a browser so you can annotate or comment on them and send the feedback straight back to the agent.

New10.5k