> For the complete documentation index, see [llms.txt](https://docs.modmail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.modmail.dev/installation/local-hosting-vps/macos.md).

# MacOS

## Prerequisites

1. Minimum 2GB of RAM
2. At least 2GB available disk space.
3. Supported macOS version:
   * MacOS 14 Sonoma (Tested)
   * MacOS 11 Monterey (Tested)

## Dependencies

We will be using the following dependencies:

* Python 3.10
* Tools: `git`, `homebrew`, `bash` or `zsh`
* Additional Modmail requirements: `cairo`, `libxml2`, `libxslt`, `libffi`

{% hint style="info" %}
All code blocks should be executed in zsh or bash and line by line unless specified otherwise.
{% endhint %}

To install these dependencies, we will be using Terminal (zsh or bash):

```bash
brew install git python@3.10 cairo libxml2 libxslt libffi
pip3 install cairosvg
```

After that, install `pipenv` with:

```bash
python3.10 -m pip install pipenv
```

## Installing Bot

Clone and change directory into the Modmail folder with:

```bash
git clone https://github.com/modmail-dev/modmail
cd modmail
```

Inside the Modmail folder, install `pipenv` and its Python packages with:

<pre class="language-bash"><code class="lang-bash"><strong>python3.10 -m pipenv install --python 3.10
</strong></code></pre>

Create a file named `.env` with `nano` and paste all the environmental variables (secrets) needed to run the bot via right-clicking in the nano editor. Refer to the steps in the [parent Installation page](/installation.md#preparing-your-environmental-variables) to find where to obtain these.

```bash
cp .env.example .env
nano .env
```

<figure><img src="/files/W9meRpBIsbIaLCXsg8Xh" alt=""><figcaption></figcaption></figure>

After that, exit the nano editor with `Ctrl+X` and select or enter `y` when prompted to save. Press enter to maintain the exiting name of the document.

{% hint style="info" %}
If using the `nano` editor is a bit of a learning curve, you can edit the `.env` file manually with your preferred GUI-based editor like TextEdit.
{% endhint %}

After your `.env` file is ready, you can now go ahead and try running your bot with:

```bash
python3.10 -m pipenv run bot
```

If no error shows up, it means your bot is now running correctly. You can stop the bot from running with `Ctrl+C` to continue using your terminal.
