# Installing on a Mac or Linux

> Paste one line into Terminal to install the pmo command line, then sign in with your Cross account.

Source: https://docs.crossbot.io/pmo/cli/install/mac-linux
Product: pmo · Kind: how-to · Status: beta · Last verified: 2026-10-20

It is the same install as on Windows, run from Terminal. It picks the right build for your computer (Mac or Linux, Intel/AMD or ARM), checks the file is exactly the one that was published, puts it in a folder of your own, and saves the server's address in a settings file only you can read. Then `pmo login` signs you in with your Cross account. Updating later is the same line again.

<Callout title="Not yet tested on a Mac or Linux">
  These steps come from the install script itself and have not yet been walked through on a Mac or a Linux computer. The messages are the same words as on [Windows](/pmo/cli/install/windows).
</Callout>

## What lands on your computer

Up to three files in your home folder. No administrator password, and nothing for other users.

| File | What it is |
| --- | --- |
| `~/.local/bin/pmo` | The program. The install does not change your Terminal settings; if this folder is not on your PATH, it tells you (step 4). |
| `~/.config/pmo/config` | Your settings file: the server's address, and a key line left empty unless you use a key. Readable by you alone. |
| `~/.config/pmo/session` | Written by `pmo login`: your Cross account sign-in, readable by you alone. `pmo logout` removes it. Do not copy it anywhere. |

Both folders start with a dot, so Finder hides them unless you press Command-Shift-full-stop.

On a Mac there is no "open anyway" step: a file fetched by the install line is not marked as a browser download, and the install gives the program the basic signature newer Macs need before it will run.

## Install, step by step

<Steps>
<Step>

### Open Terminal

On a Mac, press Command-Space, type **Terminal**, and press Return. On Linux, open your terminal application.

</Step>
<Step>

### Paste the install line and press Return

Paste this line and press Return:

```sh
curl -fsSL https://github.com/cross-systems/pmo-cli/releases/latest/download/install.sh | sh
```

 It says where it installed `pmo`, then offers to take a key.

</Step>
<Step>

### Press Return at the key prompt

Press Return without typing anything. The install finishes and says the next step is `pmo login`.

Setting up an AI session, or have a key? Paste it instead. Nothing appears while you paste, on purpose.

</Step>
<Step>

### If it says to add a folder to your PATH, do it once

If the install says **add … to your PATH**, run the matching line once, then close Terminal and open a new window. Most Macs need this the first time; many Linux computers already include the folder.

```sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zprofile    # a Mac
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile     # Linux
```

</Step>
<Step>

### Sign in with your Cross account

In the new window, run:

```sh
pmo login
```

It prints a web address and a code such as `ABCD-EFGH`. Open the address in any browser (your phone works), check the code matches, sign in with your Cross account and approve. `pmo` then prints your PMO id and your name. If it says your account is not linked, send the two lines it prints to the PMO owner. [Signing in](/pmo/cli/sign-in) has every message.

</Step>
<Step>

### Check it

```sh
pmo --version
pmo whoami
```

The first prints the version number. The second names you again, for example `person:you  (Your Name)`. Every `pmo` command now signs itself in.

</Step>
</Steps>

To use a key instead, put it after `PMO_KEY=` in your settings file. A key always wins over a sign-in. See [Your key](/pmo/cli/keys).

```sh
open -e ~/.config/pmo/config      # a Mac, in TextEdit
nano ~/.config/pmo/config         # Linux, or a Mac
```

## Updating

Run the install line again. Your settings file and your sign-in are kept.

<Callout title="Reinstalling keeps your old key">
  Once the settings file exists, the install leaves it alone and does not ask for a key. A new key goes in by editing the file. The install only replaces the key when `PMO_KEY` is handed to it directly.
</Callout>

## When something goes wrong

| What you see | Why | What to do |
| --- | --- | --- |
| command not found: pmo | Terminal does not look in the folder `pmo` was put in, or the window was open before you added it. | Step 4, then a new window. |
| … PMO_KEY is not set | This computer is not signed in, and has no key. | Run `pmo login`. |
| your Cross account is not linked to anyone on PMO's team list yet | The PMO owner has not recorded your Cross account on your team entry. | Send them the two lines it printed. You do not need to sign in again afterwards. |
| could not download pmo-… — check your internet connection, or that the version exists | The install could not reach the download address. | Check your connection and paste the line again. If you set `PMO_VERSION`, check that release exists. |
| this script is for macOS and Linux | It was run on something else, such as Git Bash on Windows. | Use [the Windows page](/pmo/cli/install/windows). |
| no build for this processor | The computer is neither Intel/AMD nor ARM 64-bit. | There is no `pmo` for it. Tell the PMO owner. |
| checksum mismatch … nothing was installed | A damaged or wrong download. | Try again. Twice in a row, tell the PMO owner. |

<Callout title="Some Linux computers have no curl">
  `pmo` uses a small program called `curl` to talk to the server. Every Mac has it, and so do most Linux computers, but a very minimal Linux may not, and then commands fail when they try to reach the server. Install `curl` the way you install anything else on that computer.
</Callout>

<Callout title="The Mac build is not notarised by Apple">
  Installed with the install line, it runs. Copied some other way, such as a browser download or a chat attachment, macOS may refuse to open it. Use the install line.
</Callout>

## Optional settings

Set these before running the install line. They behave as on [Windows](/pmo/cli/install/windows), with one difference: a folder named by `PMO_INSTALL_DIR` is not added to your PATH for you, so add it yourself as in step 4.

| Setting | Default | What it changes |
| --- | --- | --- |
| `PMO_INSTALL_DIR` | `~/.local/bin` | Where the program goes. |
| `PMO_CONFIG` | `~/.config/pmo/config`, or under `XDG_CONFIG_HOME` when that is set | Which settings file the install writes and `pmo` reads. |
| `PMO_KEY` | empty | A key handed to the install directly. It replaces the key in an existing settings file. |
