# Installation (/docs/getting-started/installation)



Bowline installs as a small command-line tool (`bowline`), a local background
daemon (`bowline-daemon`), and, on Apple Silicon macOS, the Bowline Menu Bar
app. The installer picks the right artifact for your machine, verifies the
download, installs the daemon, and leaves you at `bowline login --root ~/Code`.

## Requirements [#requirements]

Before you install, confirm your machine meets these basics.

* Apple Silicon macOS, or a recent x86\_64 Linux distribution.
* A Bowline account. WorkOS handles account identity; your first
  `bowline login --root ~/Code` walks you through it.
* For remote hosts, working SSH access. See
  [connect remote hosts](/docs/getting-started/connect-remote-hosts).

## Install Bowline [#install-bowline]

Run the installer from a terminal.

```bash title="Terminal"
curl -fsSL https://install.bowline.sh | sh
```

On Apple Silicon macOS, this installs `Bowline.app` into `~/Applications`, links
the bundled CLI and daemon into `~/.local/bin`, starts the daemon, and opens the
Menu Bar app. On Linux x86\_64, it installs `bowline` and `bowline-daemon` into
`~/.local/bin` and starts the user systemd service.

If `~/.local/bin` is not on your `PATH`, the installer prints the path warning
before it exits. Add it to your shell profile, restart the shell, then continue
with login.

## Install only the CLI and daemon [#install-only-the-cli-and-daemon]

Use CLI-only mode when you are installing on a headless Mac or you don't want
the Menu Bar app.

```bash title="Terminal"
curl -fsSL https://install.bowline.sh | sh -s -- --cli-only
```

CLI-only mode installs `bowline` and `bowline-daemon` into `~/.local/bin` and
runs `bowline daemon install`.

## Manual downloads [#manual-downloads]

Release artifacts live under `https://install.bowline.sh/releases/latest` and
versioned paths such as `https://install.bowline.sh/releases/v0.1.0`. Use the
installer unless you need to inspect or pin a specific artifact.

The supported release assets are:

* `install.sh`
* `checksums.txt`
* `bowline-aarch64-apple-darwin.tar.xz`
* `bowline-x86_64-unknown-linux-gnu.tar.xz`
* `Bowline-aarch64-apple-darwin.app.zip`
* `appcast.xml`
* `release-manifest.json`

Releases may also include `BowlineMenuBar.pkg` for admin-managed macOS installs.

Verify manual downloads against `checksums.txt` before installing them.

## Verify the install [#verify-the-install]

Confirm the CLI is on your `PATH` and the daemon is reachable.

```bash title="Terminal"
bowline --version
bowline-daemon --version
bowline daemon status
```

`bowline daemon status` reports whether the daemon process and OS service are
running. Add `--json` for scriptable output.

<Callout type="warn" title="Name collision">
  `bowline --version` must report the Bowline workspace tool. If you get an
  unrelated tool, check your `PATH` and where the binary resolves with `which
    bowline`.
</Callout>

## Supported platforms [#supported-platforms]

Bowline supports these install targets today.

| Platform            | Status      | Install path                                     |
| ------------------- | ----------- | ------------------------------------------------ |
| Apple Silicon macOS | Supported   | Installer with `Bowline.app`, CLI, and daemon    |
| Linux x86\_64       | Supported   | Installer with CLI and daemon                    |
| Intel macOS         | Unsupported | Build from source or wait for a release artifact |
| Linux ARM           | Unsupported | Build from source or wait for a release artifact |
| Windows             | Unsupported | No release artifact                              |

## Build from source [#build-from-source]

If you'd rather build from source, you need a recent stable Rust toolchain.
Clone the repository and build the release binaries.

```bash title="Terminal"
git clone https://github.com/bowline-sh/bowline.git
cd bowline
cargo build --release --bin bowline --bin bowline-daemon
```

The build produces `target/release/bowline` and `target/release/bowline-daemon`.
Put them on your `PATH`, then run `bowline daemon install` to register the
background service.

## Uninstall [#uninstall]

Uninstall the daemon first, then remove the binaries or app.

```bash title="Terminal"
bowline daemon uninstall
rm -f ~/.local/bin/bowline ~/.local/bin/bowline-daemon
rm -rf ~/Applications/Bowline.app
```

This removes generated Bowline binaries and service files. It does not remove
projects under `~/Code`.

## Next steps [#next-steps]

* [Quickstart](/docs/getting-started/quickstart): log in and bring your `~/Code`
  tree to life.
* [Add a machine](/docs/getting-started/add-a-machine): put the same workspace
  on a second device.
* [macOS](/docs/platforms/macos): understand the Menu Bar app and LaunchAgent.
* [Linux](/docs/platforms/linux): understand the user systemd service.
