> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/self-hosted/inference-server/install/mac.md).

# Install on Mac

## macOS native app (Apple Silicon)

You can run the Roboflow Inference Server on your Apple Silicon Mac with the native desktop app. Download the latest DMG disk image from the latest GitHub release: [View the latest release and download installers on GitHub](https://github.com/roboflow/inference/releases).

1. [Download the Roboflow Inference DMG](https://github.com/roboflow/inference/releases) disk image.
2. Mount the disk image by double-clicking it.
3. Drag the Roboflow Inference app to your Applications folder.
4. Open your Applications folder and double-click the Roboflow Inference app to start the server.

## Using Docker

{% tabs %}
{% tab title="CPU" %}
First, [install Docker Desktop](https://docs.docker.com/desktop/setup/install/mac-install/). Then use the CLI to start the container:

```bash
pip install inference-cli
inference server start
```

If you want more control over the container settings, start it manually:

```bash
sudo docker run -d \
    --name inference-server \
    --read-only \
    -p 9001:9001 \
    --volume ~/.inference/cache:/tmp:rw \
    --security-opt="no-new-privileges" \
    --cap-drop="ALL" \
    --cap-add="NET_BIND_SERVICE" \
    roboflow/roboflow-inference-server-cpu:latest
```

{% endtab %}

{% tab title="GPU (MPS)" %}
Apple does not yet support [passing the Metal Performance Shaders (MPS) device to Docker](https://github.com/pytorch/pytorch/issues/81224), so hardware acceleration is not possible inside a container on Mac. To use MPS you must run the server outside Docker.

{% hint style="success" %}
It is easiest to get started with the CPU Docker image and switch to running outside Docker with MPS acceleration later if you need more speed.
{% endhint %}

We recommend [`pyenv`](https://github.com/pyenv/pyenv) and [`pyenv-virtualenv`](https://github.com/pyenv/pyenv-virtualenv) to manage your Python environments on Mac, especially because [homebrew](https://brew.sh) defaults to Python 3.13, which is not yet compatible with several of the machine learning dependencies Inference uses.

Once you have installed and set up `pyenv` and `pyenv-virtualenv` (follow the full instructions for setting up your shell), create and activate an `inference` virtual environment with Python 3.12:

```bash
pyenv install 3.12
pyenv virtualenv 3.12 inference
pyenv activate inference
```

To install and run the server outside Docker, clone the repo, install the dependencies, copy `cpu_http.py` into the top level of the repo, and start the server with `uvicorn`:

```bash
git clone https://github.com/roboflow/inference.git
cd inference
pip install .
cp docker/config/cpu_http.py .
uvicorn cpu_http:app --port 9001 --host 0.0.0.0
```

Your server is now running at `http://localhost:9001` with MPS acceleration.
{% endtab %}
{% endtabs %}

## Next steps

* [Run a model](/deployment/self-hosted/self-hosted.md#run-a-model) against your new server.
* [Docker configuration options](/deployment/self-hosted/inference-server/configuration/docker-configuration.md) for ports, caching, and model limits.
* [Securing a self-hosted server](/deployment/self-hosted/inference-server/configuration/security.md) before you expose it beyond localhost.
