<!--
Sitemap:
- [Installation](/installation)
- [Upgrading](/upgrading): Version-specific steps for upgrading an existing Bento install.
- [Concepts](/concepts)
- [Build your first pipeline](/tutorials/pipeline-args)
- [Target a specific issue or PR from a URL](/tutorials/url-targeting)
- [Keep state across runs](/tutorials/pipeline-state)
- [Fire a pipeline on a schedule or on demand](/tutorials/schedule-and-fire)
- [Deploy a box to Railway](/tutorials/deploy-to-railway)
- [Operate a hosted daemon](/tutorials/operate-a-hosted-daemon)
- [Configuration](/configuration)
- [Members](/members)
- [Knowledge base](/knowledge-base/)
- [Method and delivery](/knowledge-base/modes)
- [Config](/knowledge-base/config)
- [MCP](/knowledge-base/mcp)
- [Pipeline configuration reference](/pipelines/config)
- [Filters](/pipelines/filters)
- [Triggers](/triggers/)
- [GitHub trigger](/triggers/github)
- [Linear trigger](/triggers/linear)
- [Webhook trigger](/triggers/webhook)
- [Schedule trigger](/triggers/schedule)
- [Manual trigger](/triggers/manual)
- [Traces](/pipelines/traces)
- [Slack](/integrations/slack)
- [Public access](/public-access)
- [Context engineering](/context-engineering)
- [Best practices](/best-practices)
- [Troubleshooting](/troubleshooting)
- [Architecture](/architecture/vision)
- [Workspaces](/workspaces)
- [Authentication](/authentication)
- [Identity](/identity)
- [Security](/security)
- [References](/references)
- [Changelog](/changelog): Bento release history.
- [CLI reference](/cli/)
- [Setup](/cli/setup)
- [Secrets](/cli/secrets)
- [Lifecycle](/cli/lifecycle)
- [Sandbox image](/cli/image)
- [Sandboxes](/cli/sandbox)
- [Observability](/cli/observability)
- [Diagnostics](/cli/diagnostics)
- [Triggers](/cli/triggers)
- [Workbench](/cli/workbench)
- [Auth](/cli/auth)
- [Knowledge](/cli/knowledge)
- [Evals](/cli/evals)
- [Bento](/index)
- [Runtime wrapper](/architecture/runtime-wrapper)
- [Skill evolve](/architecture/skill-evolve)
-->

# Installation

Bento is a command-line daemon for macOS and Linux. The installer selects the published binary for your machine and installs it in user space.

## Supported platforms

<div className="bento-platform-grid">
  <div className="bento-platform-card">
    <div className="bento-platform-card__topline">
      <span className="bento-platform-card__mark" aria-hidden="true">M</span>
      <span className="bento-platform-card__status">Automatic</span>
    </div>

    <strong>macOS · Apple Silicon</strong>
    <span>M-series Macs · arm64</span>
    <code>bento-darwin-arm64</code>
  </div>

  <div className="bento-platform-card">
    <div className="bento-platform-card__topline">
      <span className="bento-platform-card__mark" aria-hidden="true">M</span>
      <span className="bento-platform-card__status">Automatic</span>
    </div>

    <strong>macOS · Intel</strong>
    <span>Intel Macs · x86\_64</span>
    <code>bento-darwin-x64</code>
  </div>

  <div className="bento-platform-card">
    <div className="bento-platform-card__topline">
      <span className="bento-platform-card__mark" aria-hidden="true">L</span>
      <span className="bento-platform-card__status">Automatic</span>
    </div>

    <strong>Linux · x64</strong>
    <span>64-bit Linux · x86\_64</span>
    <code>bento-linux-x64</code>
  </div>

  <div className="bento-platform-card">
    <div className="bento-platform-card__topline">
      <span className="bento-platform-card__mark" aria-hidden="true">L</span>
      <span className="bento-platform-card__status">Automatic</span>
    </div>

    <strong>Linux · arm64</strong>
    <span>64-bit Linux · arm64</span>
    <code>bento-linux-arm64</code>
  </div>
</div>

Bento does not support Windows.

## Requirements

Install these before you install the daemon.

* [Docker](https://docs.docker.com/get-docker/) — runs the Postgres database and the sandboxes that hold agent workloads. On macOS, [OrbStack](https://orbstack.dev/) is an alternative Docker runtime.
* [Claude Code](https://claude.ai/code) (`claude`) — the default agent runtime.
* [GitHub CLI](https://cli.github.com/) (`gh`) — authenticates the GitHub integration.
* [QMD](https://github.com/tobilu/qmd) (`qmd`) 2.8.3 or later — the default local retrieval engine for agent knowledge. Install it with `npm install -g @tobilu/qmd`. You can use [Chroma](https://docs.trychroma.com/docs/overview/introduction) instead with `knowledge.retrieval.engine: chroma`. Chroma also needs [uv](https://docs.astral.sh/uv/) on PATH, because its embedder runs on the host.
* SQLite — on macOS, install it with `brew install sqlite`.

Three runtimes are optional, each an alternative to Claude Code: [Codex CLI](https://developers.openai.com/codex/cli) (`codex`), `pi`, and `opencode`.

## Install the daemon

The one-line installer supports every platform listed above. It verifies the release checksum, then installs the binary under `/usr/local/bin`, `/opt/homebrew/bin`, or `~/.local/bin`, depending on directory permissions.

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

:::warning\[Do not use sudo]
The daemon runs in user space and does not need elevated permissions. If the command is not found after installation, check that `~/.local/bin` is in your `PATH` and that the binary is executable.
:::

To verify the installation, print the version:

```bash
bento --version
```

## Install a specific version

For a reproducible install or a rollback, set `BENTO_RELEASE`:

```bash
curl -fsSL https://install.getbento.sh | BENTO_RELEASE=0.6.5 sh
```

## Bootstrap a project

Go to your project directory and run:

```bash
bento init
```

The command writes six files: `.bento/daemon.yaml`, `.bento/.gitignore`, `.bento/pipelines/pr-review.yaml`, `agents/reviewer/PERSONA.md`, `CLAUDE.md`, and `.mcp.json`. It reads the `origin` git remote and the `gh` login to fill in `repos:` and `github.username`.

## Set up the database

The daemon looks for Postgres at `postgresql://bento:bento@localhost:8421/bento`. To change that address, edit `.bento/daemon.yaml`. To start a Postgres instance at the default address, use Docker:

```bash
curl -fsSL https://install.getbento.sh/services.yml -o docker-compose.yml
docker compose up -d
```

`docker compose down -v` removes the volume and all data.

## Start the daemon

Run the daemon in the foreground:

```bash
bento serve
```

To register it as a background service instead, install it and start it:

```bash
bento daemon install   # registers launchd (macOS) or systemd (Linux)
bento daemon start
```

The daemon reports a problem loudly. If it starts and prints no error, it is healthy. To confirm, run the check:

```bash
bento doctor
```

## Your first pipeline

`bento init` scaffolded a `CLAUDE.md` and an `.mcp.json` into your repository. Open the repository in an AI coding agent such as Claude Code, Codex, or Cursor. The agent reads `CLAUDE.md` to learn how bento works, and connects to the `bento` MCP server declared in `.mcp.json`. Ask it to build your first pipeline: an agent persona, the pipeline YAML, the webhook registration, and a test run.

For the concepts behind agents, skills, and pipelines, see [Concepts](/concepts). For the full pipeline field reference, see [Pipelines: Config](/pipelines/config).

## Configuration reference

`.bento/daemon.yaml` controls daemon-wide settings: the database URL, the ports, the sandbox backend, and the pipeline lifecycle hooks. Each file under `.bento/pipelines/` is one pipeline definition. See [Configuration](/configuration) for the full field reference.

**Runtime state** (the PID, the log, and the agent directories) lives under `~/.bento/<name>/`, where `name` is the `name:` field in `daemon.yaml` and defaults to `bento`. Workspaces are shared at `~/.bento/workspaces/`. Neither directory is committed to git.
