# Install hivemux on macOS

Install hivemux with one curl command or Homebrew, what hivemux setup asks and changes, setup flags, requirements, and how to update hivemux later.

Source: https://hivemux.dev/docs/install/

Install hivemux on macOS with `curl -fsSL https://hivemux.dev/install.sh | bash`, or with Homebrew: `brew install esteban-eg-kim/tap/hivemux` followed by `hivemux setup`. You need tmux 3.3+, jq, git, python3 and a logged-in Claude Code; Ghostty is recommended.

## Requirements

- macOS (Linux likely works but is untested)
- tmux 3.3 or newer, jq, git, python3 (python3 comes with Xcode Command Line Tools)
- [Claude Code](https://code.claude.com), logged in
- [Ghostty](https://ghostty.org) recommended. Any terminal works if you start `tmux` yourself.

If a dependency is missing, `hivemux setup` stops and tells you. Install them with:

```sh
brew install tmux jq git
```

## Install with the script

```sh
curl -fsSL https://hivemux.dev/install.sh | bash
```

This URL serves the `install.sh` from the hivemux GitHub repository. The script clones hivemux into `~/.local/share/hivemux/src` (or updates it if it is already there) and runs `hivemux setup`. For a git install, setup also adds the hivemux `bin` folder to your `PATH` in `~/.zshrc`.

To pass options to setup through the script, use `bash -s --`:

```sh
curl -fsSL https://hivemux.dev/install.sh | bash -s -- --no-keys
```

## Install with Homebrew

```sh
brew install esteban-eg-kim/tap/hivemux
hivemux setup
```

## What hivemux setup asks

`hivemux setup` asks three questions. All default to yes.

| Question | What it changes |
|---|---|
| Recommended keys | prefix `Ctrl+A` (Claude Code uses `Ctrl+B`), `\|` / `-` splits |
| Ghostty attaches to tmux | `command = hivemux-attach` in Ghostty config |
| Remote Control for all sessions | `remoteControlAtStartup` in `~/.claude/settings.json` |

It also:

- downloads tmux-resurrect and tmux-continuum, or uses yours from `~/.tmux/plugins`
- registers eleven Claude Code hooks in `~/.claude/settings.json`
- builds the bee office window in the background

Every change goes between `# >>> hivemux >>>` and `# <<< hivemux <<<` markers, and the original files are backed up to `~/.local/share/hivemux/backups/`. `hivemux uninstall` removes exactly those blocks; see [Uninstall](/docs/uninstall/).

## Setup flags

| Flag | Effect |
|---|---|
| `--yes` | accept all defaults without asking |
| `--no-keys` | keep tmux's default prefix and keys |
| `--no-ghostty` | do not attach Ghostty to tmux |
| `--no-remote` | do not turn on Remote Control for every session |
| `--lang=en` / `--lang=ko` | screen language (default follows your shell) |

You can change the language later in the sidebar's right-click menu → Settings.

## Check the install

```sh
hivemux doctor
hivemux version
```

`hivemux doctor` checks the dependencies, the tmux and Ghostty blocks, the eleven hooks, the running tmux server and the remote setup. Then open a new Ghostty window (or run `tmux`) and continue with the [Quick start](/docs/quick-start/).

:::tip
Using another terminal? Answer no to the Ghostty question and run `tmux` yourself. The sidebar appears in every tmux window. See [Claude Code in Ghostty](/guides/claude-code-ghostty/) for why Ghostty is the recommended terminal.
:::

## Update hivemux

```sh
# Homebrew
brew update && brew upgrade hivemux && hivemux setup
# git install: run the install command again
curl -fsSL https://hivemux.dev/install.sh | bash
```

Running `hivemux setup` again is safe. It replaces its own blocks and hooks (a new version may add hooks), reloads the running tmux and restarts the sidebars, so you keep working in the same sessions. Claude sessions started before the update pick up new hooks once restarted.

## Update Claude Code

Right-click the sidebar → Update Claude, or run:

```sh
hivemux update-claude
```

It checks for a newer version and, once you confirm, updates Claude Code (with brew if it came from Homebrew), then restarts each pane's Claude on the new version in the same conversation. A Claude that is working, waiting for you, or on screen restarts later, once it is done and off screen.
