> For the complete documentation index, see [llms.txt](https://docs.consuldemocracy.org/tech_docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.consuldemocracy.org/tech_docs/introduction/local_installation/macos.md).

# macOS

## Homebrew

Homebrew is a very popular package manager for macOS. It's advised to use it since it makes the installation of some of the dependencies much easier.

You can find the installation instructions at: [brew.sh](http://brew.sh)

## Git

You can install git:

```bash
brew install git
```

## Ruby version manager

macOS already comes with a preinstalled Ruby version, but it's quite old and we need a newer one. One of the multiple ways of installing Ruby in macOS is through [rbenv](https://github.com/rbenv/rbenv):

```bash
brew install rbenv
rbenv init
source ~/.zprofile
```

## CMake and pkg-config

In order to compile some of the project dependencies, we need CMake and pkg-config:

```bash
brew install cmake pkg-config
```

## Node.js version manager

To compile the assets, you'll need a JavaScript runtime. macOS comes with an integrated runtime called `Apple JavaScriptCore` but Node.js is the preferred option. To install Node.js, we will install a Node.js version manager, like NVM:

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.zprofile
```

## PostgreSQL

```bash
brew install postgresql
```

Now we're going to configure some things related to the *default user*. First we start postgres server with:

```bash
brew services start postgresql
```

At this point we're supposed to have postgres correctly installed and a default user will automatically be created (whose name will match our username). This user hasn't got a password yet.

If we run `psql` we'll login into the postgres console with the default user. It will probably fail since it's required that a default database exists for that user. We can create it by typing:

```bash
createdb 'your_username'
```

If we run `psql` again we should now get access to postgres console. With `\du` you can see the current users list.

In case you want to set a password for your user you can make it through the postgres console by:

```sql
ALTER USER your_username WITH PASSWORD 'your_password';
```

## Imagemagick

Install Imagemagick:

```bash
brew install imagemagick
```

## Chrome or Chromium

In order to run the system tests, we need to install Chrome or Chromium.

```bash
brew install google-chrome
```

Now you're ready to go [get Consul Democracy installed](/tech_docs/introduction/local_installation.md)!
