<!--
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)
- [Configuration](/configuration)
- [Knowledge Base](/knowledge-base/)
- [Method & 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](/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)
- [Lifecycle](/cli/lifecycle)
- [Sandbox Image](/cli/image)
- [Observability](/cli/observability)
- [Diagnostics](/cli/diagnostics)
- [Triggers](/cli/triggers)
- [Workbench](/cli/workbench)
- [Auth](/cli/auth)
- [Knowledge](/cli/knowledge)
- [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 the current 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>

Windows is not currently supported.

## Install automatically

The one-line installer supports all platforms 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.
:::

Verify the installation:

```bash
bento --version
```

## Install a specific version

Set `BENTO_RELEASE` for a reproducible install or rollback:

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

## Requirements

* [Docker](https://docs.docker.com/get-docker/) for the Postgres database and to run agent workloads in secure sandboxes
  * [OrbStack](https://orbstack.dev/) is a great Docker alternative for Mac with better performance and native UI.
* [Claude Code](https://claude.ai/code) (`claude`) our default agent runtime
* [GitHub CLI](https://cli.github.com/) (`gh`) for GitHub integration
* [QMD - Query Markup Documents](https://github.com/tobilu/qmd) (`qmd`) for knowledge retrieval

```bash
npm install -g @tobilu/qmd
```

* **OSX only**
  * SQLite — `brew install sqlite`

## Optional

* [Codex CLI](https://developers.openai.com/codex/cli) (`codex`) for an alternative agent runtime

## Bootstrap a project

Navigate to your project directory and run:

```bash
bento init
```

This creates `.bento/daemon.yaml` (daemon config) and some starter files.

## Setup the database

By default, the daemon looks for Postgres at `postgresql://bento:bento@localhost:8421/bento`.
Editable in `.bento/daemon.yaml`, but for now, let's get a Postgres instance running at that URL. The easiest way is with 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

It's designed to be noisy if something is wrong, so if it starts without errors, you're good to go:

### Serving in the foreground

```bash
bento serve
```

### Installing as a background service

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

Check everything is healthy:

```bash
bento doctor
```

## Your first pipeline

`bento init` scaffolded a `CLAUDE.md` and `.mcp.json` into your repo. Open the repo in an AI coding agent (Claude Code, Codex, Cursor): it reads `CLAUDE.md` to learn how bento works and connects to the `bento` and `bento-docs` MCP servers declared in `.mcp.json`. Ask it to build your first pipeline — agent persona, pipeline YAML, 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 (database URL, ports, sandbox
backend, pipeline lifecycle hooks). Each file under `.bento/pipelines/` is one
pipeline definition. See [Configuration](/configuration) for the full field reference.

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